Computer Laboratory


IA Java Programming Competition

Since I very firmly believe that the best way to learn Java - and, in fact, programming in general - is to have fun writing code and building one's own applications, I am hosting a little programming competition for the IA Computer Science students who I supervise.
Back in the day, I wrote a very rudimentary implementation of the "Pairs" game (also known as "Memory") in Java when faced with the same task, which may serve as an inspiration.

Competition Rules

  1. The submission is supposed to be a strategy game in the widest sense, i.e. any game that requries the player to utilise a strategy to win. This could be turn-based, real time, or something completely different.
  2. A graphical user interface may be added, but is not strictly required. There are many great text adventure games!
  3. Your game must be written in Java.
  4. Submissions must be your own work. It is, of course, perfectly fine to use libraries (e.g. to provide graphical effects, a user interface, or sound), but you will have to state with your submission what libraries you used, and even though credit will be given for creativity, your submission will mainly be judged based on your original work.
  5. The deadline for submissions is Thursday, April 26, 23:59:59 (the first day of lectures of Easter Term).
  6. I do not expect anything huge from this, and I am aware that you also have plenty of other work to do. As I mentioned, my own game back in the day was a very simple implementation of "Pairs" that took me two, maybe three days to write. Something of that scope would make a perfect submission!


Your submission will be judged with regards to a number of criteria:

  • Creativity: Games can be designed creatively in many ways - in terms of appearance, story line, realisation, gameplay, controls ... . A creative design will score well in this category.
  • Originality: If you come up with an ingenious way of presenting an existing game idea, or indeed an idea of your own, you will score highly in this category.
  • Effort: The coding effort that has gone into the project. Even though a very impressive game may be possible to implement by just putting together some existing libraries, I will give more credit to original work.
  • Difficulty: Without doubt, some coding problems are more difficult to solve than others. I will give credit for the solution (or an attempt at the solution) of more difficult problems. For example, implementing a basic computer player AI is likely to gain you credit in this category!
  • "Fun Factor": This is entirely subjective and just a measure of how much I enjoyed playing your game :-)

A cautious remark

Please do note that this work is strictly optional. Of course, I welcome it if you produce great submissions, but please do not let this work get in the way of your studies, your revision or your academic work in general. After all, you do have exams to write at the end of this year!
I do think that the skills this competition is teaching you are extremely useful, but I do not want to be held responsible if your exams do not go as well as they might have gone because of this competition! ;-)

Past winners