Saturday, March 2, 2013

Building Combat Simulators

My day job is in consulting where I help my clients solve problems using tools and techniques in the IT field.   In the evenings and weekends, I teach college level computer science classes.   Teaching classes in the evenings and on weekends can be especially trying.  The difficultly comes from people being tired by the end of the day, or have difficulty finding the motivation to come to school on the weekend.   To help motivate people in my more advanced classes, I have come up with some creative ways of instruction.

For one of my classes, I tell the students on the first day of class there will be no homework assignments the entire semester.  I also tell them there will be no formal midterm or final exam.  After saying this, I can tell all eyes are on me and I have their full attention.   I then inform everyone their grade will be based on only three assignments.

The first assignment is to construct a combat simulator.  The name, alone, sounds exciting!  The combat simulator will include an arena and two fighters.  The goal of the simulator is to battle two fighters until there is only one standing.   You can see the wheels spinning in the students’ heads.   Once this idea soaks in, I explain the grading technique.

The combat simulator, and the other two projects in my class, will be graded cafeteria style.  I hand out the list of grading possibilities.   For example, a student can earn up to ten points for correctly using an interface.  Fifteen more points can be awarded for using an abstract class.  Twenty points can be received for implementing their own custom exception; this includes creating the class, throwing the custom exception, and catching it.   There are several other possibilities for earning points.  The final grade for the project is based on a total accumulation of points.

Programming is just one aspect of the assignment.  The students must also document and present their projects to the class.  They can earn 10 points for documentation and another 15 points for their presentation.   When they give their presentation, I encourage the students to give an overview of their project and pretend the audience knows little about the assignment.  They then should demonstrate their simulators, highlight parts of their code, then field questions from the audience.

The purpose of the presentations is to give my students some experience presenting a technical subject to an audience.  It also reinforces the fact they have to do their own work.  I let them know, from the beginning, how awkward it will feel if they are asked questions about a method and can’t explain it.   I also let them know I would rather see them stumble in front of the class, as to stumble in front of a client, employer, or a financial backer hoping to fund their start-up.   Their code demonstrations also help them get a feel for demonstrating software.

I have used the combat simulator for a number of years and have found it to be very successful in a number of areas.  From a technical perspective, this program helps students to better understand the concepts of interfaces, abstract classes, inheritance, and exceptions.   The format of the assignment allows the students to be creative and come up with their own designs, some of which have been very unique.  The demonstration aspect helps them present in front of people and to work on communication skills.

You may recall, I mentioned there is no homework in my class.  I’ve found students spend more time working on their project than they might spend working on small homework assignments.  I’ve also noticed students are more motivated when they can work on a project of their own direction.  Having a creative aspect tends to keep their interest.

If you would like more information about my combat simulator project, or other aspects of teaching, feel free to send me an email.