My Java programming students rock!

Those of you who are programmers or teachers may remember a couple of my threads (from the last two years), Stupid Cheater Tricks and Another college cheater, cheating himself. Well, lest anybody think that’s all I have in my classes, a bunch of wankers cheating their way through college…

I thought I’d post this thread in praise of my Java students – for a course that I’ve really enjoyed teaching over the last few years.

This is an elective course in Java programming for the Computer Science majors in my department. They take their first year of programming, including an object-oriented programming course, in C++. Those courses are the pre-requisites for most of the electives – just to give an idea of the level they are at. Many of the students taking this Java elective have also done Data Structures, but it’s not a requirement coming in.

So, it’s a Java course for students who are pretty well-versed in C++, but have not had Java yet. For many, it’s their first course involving specific instruction in GUI libraries, layout managers, and event-handling (mouse clicks, menus, buttons, etc.) We also hit some other important Java libraries – such as those dealing with collections, multi-threading, and basic sockets, to name a few.

Halfway into the term, I assign this term project – build a board game. Everybody has to do something different – they can work in groups of two, if they like. They only have to do something the level of a board game (like checkers, chess, etc) – no animations or AI or such required, although anything above and beyond can count for extra credit.

Part of my intent is to give them practice in doing their own design and researching into the libraries they might need – as opposed to most of the assignments in their pre-req courses, which are much more structured.

Every semester, there tend to be one or two submissions that really stand out – usually pretty impressive for the level that I know the students are at when they start the course. This summer alone, I had several very ambitious projects. Here are some of the best submissions I’ve gotten on this project in the last few years:

Tetris – this summer. It was a networked version, so that two players could play against each other. When one completed a certain number of lines, it would send “garbage blocks” to the bottom of the other person’s play field.

Asteroids – this summer. Looked mostly like the classic version, but he also designed it to make addition of skins easy. Included a “modern” skin, along with it.

Chess – last summer, a very smooth chess implementation, complete with a computer player. He documented where he found the algorithms for doing a computer player (implementing it in code himself). Computer AI played pretty good tactics. I could beat it, but I had to be on my toes.

Jigsaw Puzzle – limited shapes, but could take any standard picture file from a computer and break it up into various size puzzles (from 4 pieces to 500 pieces, I believe it was). Nicely done.

Battleship – Nice splash screen, with theme music in the background. Smooth gameplay and attractive graphics and sound effects.

And definitely the MOST involved and elaborate one ever submitted was a little over a year ago. He made up his own game:

Java Ambush: Networked play. Turn-based, with live action playout. Each player controls a squad of 6 gunmen, with varying weapons (machine gun, sniper, riflemen, etc). They move over terrain that includes buildings that can be used for cover. Object? Defeat the other squad. You give your squad instructions during a turn – movement, speed, how to shoot, when to shoot, etc. Varied and detailed options available, and detailed rules implemented internally as to when and how the gunners move and shoot. Once both players have given their squads instructions and registered their turns, you watch the live action play out on what happened during that turn.

So I just wanted to brag a little on my Java students! I’m proud of them.

I enjoy seeing the results of this project, and it’s always fun seeing students get excited about it and tell me their ideas on what they want to create. And I’ve definitely seen quite a few projects that go above and beyond the level I expect, not to mention above and beyond the minimum that I try to teach them in the course!

Dang! Very cool! No wonder you’re so proud.

Very cool – now share! I wanna play me some Java Ambush! :slight_smile:

Me too.

Well, I did ask the students this summer if they wanted me to post their games publicly for others in the class to see. The ones who responded yes, to post theirs – are linked from this chart. Not all are great (or even complete). The best implemented ones on this chart are Falling Blocks (tetris style game) and Hold-em Poker.

Keep in mind, these are all amateurs, most just learning Java and GUI/event-handling for the first time. You’ll also need to have the latest Java Runtime Environment (JRE version 6) installed to run these. Some run right from the jar archive files – others have to be unpacked first to see all the resources (like image files, etc).

I write up gradesheets with critiques of both the user interface and the gameplay and send to the students once all are graded.

Maybe I’ll have to get Java Ambush linked on my web pages soon.