Choice #1: Game

Create a computer game. This can be entirely text based, or you can do some graphics with graphics.py or images.py if you like. No graphics are required or necessary, though; it's up to you whether you'd rather place more effort in the logic of a text-based game, or in the challenges of implementing graphics.

The choices for games are endless. A few suggestions to get you started are 3D Tic-Tac-Toe, Dots and Boxes, Battleship, and Go Fish, to name a few.

Unless your game is quite complicated in implementation, your project should incorporate some level of computer intelligence. In some sense, the computer should play against you or manage your game in some kind of intelligent way. You don't need to get the computer to be a world class player at your game, or even close, as that's what my course in Artificial Intelligence class is for, but give it a shot at getting something in there that's better than random play.

The choices for games are endless. Here are some options.

Choice #2: Your own idea

Would you like to apply what you're learning about computing to something in another discipline? Perhaps you want to do some kind of modeling or analysis of data; perhaps you want to do something artistic. Talk to me.

Thoughts on grading

I will grade the projects based on the following factors, in the following order:

  1. How cleanly the program runs: is it bug free? Does it crash?
  2. Complexity: a project that involves complex ideas or implementations is clearly cooler than a simple one.
  3. Object-orientation. Your program should be written in an object-oriented style, using classes and objects appropriately.
  4. Readability: how cleanly the program is written and how easy it is to read.

It is perfectly ok to pick an easy goal in order to achieve, especially if you're new to this. For people with more advanced experience, the sky is the limit. Indulge yourself. But submit something new. Don't submit to me code which you have written in the past.

This is your chance to show some creativity. Have fun!