Skip to main content

PUJ - Code Competition for University Students

Posted by felipegaucho on January 27, 2008 at 10:16 PM PST

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 href='https://cejug.dev.java.net/files/documents/859/83683/puj_en_US.pdf'>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 href='http://www.fic.br/v4/index.shtml'>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 href='https://cejug.dev.java.net/servlets/ProjectDocumentList?folderID=8600&expandFolder=8600&folderID=7024'>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.