PUJ - Code Competition for University Students
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
PUJ - a code competition template
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.
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
Everyone is responsible by the quality of the education
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.
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
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.
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.
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
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
... I am very happy to be the first winner of PUJ, quite a surprise
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.