The Source for Java Technology Collaboration
User: Password:



Felipe Gaucho's Blog

Community: Global Education and Learning Community Archives


PUJ - Code Competition for University Students

Posted by felipegaucho on January 27, 2008 at 10:16 PM | Permalink | Comments (1)

PUJ is a new competition format that allows companies to acknowledge the best Java codes produced by students during an academic semester. Check out the competition rules created by CEJUG to promote the synergy between IT market and universities - including preliminary results.

PUJ - a code competition template

In this link you can find the translated rules of PUJ (Prêmio Universitário Java), a competition organized by CEJUG at the end of 2007. The competition inspiration states as:

	To offer the local market a chance to evaluate what is produced	in Java classes
	of universities, allowing companies and universities to share the same goal of 
	helping people and market to become more productive.

The idea is to promote the collaboration between local people toward a better society, identifying shared values in all layers of the IT productivity chain, including students, teachers and professionals. Apparently obvious at first sight, this idea proved not so simple to be implemented in the real world. CEJUG held the first edition of PUJ at the end of 2007, and some very interesting feedback was collected. Some of those experiences, including the polemic points are discussed below.

  1. Can I reuse the PUJ format in my local JUG or company?

    Please copy the PUJ idea, be my guest to reuse the proposed rules. PUJ was invented to help people to promote Java and to unify Java people around the idea of quality software development. The competition format and its former ideas are not new, and you probably can enumerate a large set of similar initiatives, but PUJ is distributed without authorship in a hope to be adopted by the largest number of people. If you have a JUG, please do your own PUJ - you can change the name, and if you like it we only ask you to quote CEJUG somewhere ;)

  2. Everyone is responsible by the quality of the education process.

    A beautiful side-effect of PUJ is to distribute the idea quality on all partners of the educational process: students, professors and companies. When a teacher knows his class statements will go public, he becomes naturally concerned about the quality of the statements. Other good side-effect is the comparison between several statements done by students and the market professionals, avoiding bad teachers to continue to destroy the future of the young talents. Basic posting: bad professionals, bad teachers and bad students do not find space to hide under PUJ - I invite you to think about that.

  3. What kind of statement is used in PUJ?

    All kind of statement, the submissions of PUJ should include works already done - the competition itself does not provide any statement. The goal of PUJ is to ask IT professionals to evaluate what is being produced inside classrooms, and it does not make sense to restrict or to force a specific type of work to be evaluated. Advanced mathematics and tic-tac-toe programs are supposed to be eligible to participate in the same level. Apparently unfair, we detected some interesting points about that:

    • The number of submitted works was much lower than we expected. It unveiled a simple fact that graduation students are not producing much Java code or they are producing low quality works. We didn't received the advanced mathematics works as well we didn't received the tic-tac-toe ones :) The small number of submission suggests us to promote PUJ and forces the universities to explain why their students are not competing - since the universities are always doing marketing about their high-quality classes, where is this quality?

    • The local universities share a very similar curriculum. The subjects and type of works are the same. Part of this similarity comes from the government regulation of education, and part comes from the lack of creativity of the teachers, who prefer to copy the old statements instead of adapting it to their pupils reality.

    • The code of students from different universities was much less different than we expected. In a first moment, the famous universities were considered virtual champions and we expected their students will annihilate the other ones by superior education. The reality exposed a close ability between students from several different universities. We don't have a stable opinion about the causes, but we believe it is due to the fact that academic recognition comes from scientific research and not from technical education.
  4. What are the evaluation criteria?

    This is a recurrent question, and it seems locked in the traditional programming competition formats, where the rules are settled as static criteria from a point of view of a unique company or group of persons. In the real world, the idea of quality is not limited to a tabular enumeration of criteria, and the common sense about what is good or not seems to be more a natural perception about quality than cold numbers or technical arguments. The only criterion suggested by PUJ to the evaluators was: Classify the quality of the students work using your own point of view.

  5. Does it make sense to allow people to judge something without establishing clear rules on how to do that?

    Simple answer: YES, it makes absolute sense to ask people about the quality of something even if we know some of them may not have solid background to understand or even classify it - because this is what happens in the real world. How many times did you notice that amazing idea failing as commercial product?

    In case of PUJ, it is even more fair because the evaluators are participating in the competition themselves - students, teachers and IT professionals looking for a shared mind about what is being produced inside classrooms. The trick to minimize deviations is to consider the different level of maturity of the participants - we adopted weights based on the role each evaluator play in the local market: students opinion is weaker than senior professionals opinion, but all opinions are contributing to the final grade of the works. The more people you include in this peer-review process the more fair it becomes. In the first edition of PUJ, we defined the following opinion weights:

    • IT professionals: grade x 7
    • Instructors: grade x 4
    • Students: grade x 1
  6. Why not to use technologies categories?

    This is an open decision, and in the first edition of the prize we asked people to focus more on the quality of the implemented solution than in its underneath technologies. We believe it reflects the IT market, because no client ask you to do a software with technology A or B, clients are looking for solutions to their problems. One nice side-effect of the first edition of PUJ was to discuss the epistemic view of the novice developers: Students tend to focus on technologies instead of focus on the solution of problems.

    To contribute to dismiss this problem, PUJ asked the students to compete in the same arena with their preferred weapons ;). The first reaction to this idea was a lot of questions like How can I apply my Swing application against the other student's Ajax application ? This reflected the students' fetish about hype technologies instead of the quality of solutions. Students tend to classify something better even before to look at it, just because they know certain technology was used - and it is nocive to their own carriers. The goal here is to put experimented professionals and students evaluating the same code and to give the students a chance to think about why some works are better than others even using a supposedly worse technology?

    Special remark: it worked fine in the first edition and the controversial discussion about that continue to echo in our JUG lists. We believe this was one of the best contribution of PUJ to the approximation of academic reality to the local market expectations. The PUJ competition does not aim to evaluate technologies, the goal is to evaluate the quality of students' works - in a perfect scenario, people learn how to think about the problems and their solutions instead of trying to force the adaptation of the problems to their preferred technologies. Of course the grades were contaminated with the hype but we believe with time this strategy will help to reduce the gap between classrooms and development centers.

And the winner is...

First edition of PUJ was experimental, but proved its values with some good competitors, besides going under the spotlight of Ceará IT market. The local results are more important in local community, but I would like to use this space to honor the great winner of the 1st PUJ: Alexandre Pinheiro e Silva, student of UNIFOR University. He produced a work titled "Virtual Video Rental Store", a web application using Struts and EJB3 technologies. The second place was granted to Francisco de Assis Ribeiro Junior, student of FIC Faculty. He produced a work about process communication, a Peer to Peer application based on Sockets. Both works with source code and comments (only in Portugese) are available here.

Alexandre Pinheiro e Silva, winner of the 1st PUJ CEJUG - 2007/02 - Fortaleza / CE - Brazil:

... I am very happy to be the first winner of PUJ, quite a surprise because I produced the code thinking only about my class requirements - I never thought it would be part of a code competition. One of the best feedback from PUJ were the comments of the evaluators, where senior professionals pointed some good features and also the weak part of my work. Following their suggestion I believe I can get better in my code style and overall quality in software development. I plan to participate in the next editions of the prize, it will depend only on what the teacher will ask me in the next classes...

ap.jpg

That's it, we confirmed the second edition of PUJ to the first semester of 2008, and we expect to evolve from the original model to something that can help universities and companies to establish their shared values. We believe one of the prime goals of a JUG is to promote Java, and to put students to compete is a good action in this sense.

If you have ideas on how to improve the PUJ format, or if you identify problems in our rules, please comment in the form below.



Using OpenSource projects as classroom material

Posted by felipegaucho on February 19, 2006 at 09:32 AM | Permalink | Comments (3)

In the last CEJUG - Café com Tapioca, I introduced Cejug-Classifieds as a project designed to be a study-case for the J2EE community. The aim of the project is to allow university students to test their subjects on an alive project, taking advantage of collaborative effort in a real J2EE test bed. The reduced scope and some didactical strategies serve as guidance to students and are also a way for teachers to follow up their pupils learning. Some of these strategies are enumerated below:

Strategies used to facilitate the adoption of the project as classroom material

  • The project is an implementation of the chapter 6 of the book Core J2EE Patterns. The book can be used as a guide for the understanding of the code. Every pattern proposed at chapter 6 has an implementation into the project, and students can learn with patterns in action. The correctness of the implementations, the way patterns interact among the others and the J2EE details seem a good starting point for lectures and class debates.
  • The classes receive a suffix identifying their patterns, for example: the source of a helper class is named ClassnameHelper.java.
  • The package names also receive a suffix identifying their patterns, i.e., the pattern adopted by the classes that composes the package.
    • This suffix strategy promotes the following project tree:
      .
      root.gif JavaSource
      empty.gifi18n
      folder.gifnet.java.dev.cejug.classifieds.bean
      folder.gifnet.java.dev.cejug.classifieds.command
      folder.gifnet.java.dev.cejug.classifieds.controller
      folder.gifnet.java.dev.cejug.classifieds.dao
      folder.gifnet.java.dev.cejug.classifieds.filter
      folder.gifnet.java.dev.cejug.classifieds.helper
      folder.gifnet.java.dev.cejug.classifieds.security.jaas
      folder.gifnet.java.dev.cejug.classifieds.security.jce
      folder.gifnet.java.dev.cejug.classifieds.taglib
      folder.gifnet.java.dev.cejug.classifieds.timer.task
      folder.gifnet.java.dev.cejug.classifieds.util
      .

The subjects explored in the current release

Despite every J2EE technique can be explored in the Cejug-Classifieds, some of the classical patterns and web application features were already discussed and implemented by the project members. The available code includes:

Message for teachers

Dear teacher, just as you are, I'm a teacher of undergratuate courses of computing and I share your anxiety about how better to teach and how to provide powerful learning stuff to the students. My frequent search for useful tools in teaching requires innovative thinking, such as the one I described above. Some ways you can use the Cejug-Classifieds in your classroom:

  • Just download the project contents from CVS and evaluate it with your students
  • Ask for a CVS branch in order to keep your own version of the classifieds. The enhancements you do in these branch can eventually be merged into the project head.
  • Ask for a subproject or a separate study project inspired on the classifieds, perhaps with a formal link between the projects with a guidance from the java.net community leader.
  • Ask me for an isolate folder inside the project, where you and your students can create a new flavor of the project
  • Your idea here - the main goal of the project is to become a good tool for teaching and every idea about how to reach that will be considered.

If you agree with the idea of an Open Source project designed to be used into classrooms, please help to improve this idea and also give some clue about how my project could help your students. Let's share teachers experiences. Just send me your thoughts about the model of Cejug-Classifieds as learning tool or comment any other trick you have adopted in your university.

Message for students

You are always welcome to learn from java.net projects. If you have new ideas on how such didactical project could evolve to become a good experience, be my guest to post your point of view. Students are the target audience of the project and your sincere opinion is one of most important quality indicator of our project.

Next steps

A complete description of the project and its design is a subject for a further article, but the above brief introduction of its goals cam help you to join our efforts.The next steps are formalizing a documentation about the usage of Open Source projects as didactical tools and also evolving the ideas with your contribution.

The enigma of the T-shirt

During my presentation on the Café com Tapioca, we distributed free t-shirts about the event. On the front side of the T-shirts, you can observe an enigmatic set of letters representing a secret sentence. The first person who reveals the secret message will receive a gift. Just a tip: all you need to decipher the enigma is on the T-shirt and/or into the project code. The t-shirt photos and the enigma are below:

front side - click to enlarge back side - click to enlarge
ERRATA: unfortunately the t-shirt was printed with some wrong character, and unfortunately I don't have more the original. Sorry by the inconvenience. In order to keep the competition, I'm posting the new set of (tested) characters:

ruRQ3oY91/UdghBSLuzbrkBk/v7k/w2VV9fUwlGMhOf195kgvXh6aTZkbH3H5wZh+GdewgnB4xYvv1SljdckdjcHWfxY
LLbUqMmHVle7nu2AgehG4pHZ/Z3uW/J0NgbjdcZuE6jf/tHUPaMkiNIlzXgtqSkLhlpzN/9nSggDVSu+EHBW+bvW8w==

Good luck ;) all photos of the event and the presentation in Brazilian Portuguese are here.





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds