Final Project
Due: Friday, June 27th at 11:59PM


You've learned a lot this semester! Now it's time to use that knowledge for a fun and interesting project of your choosing!

Self-defined project

Your project should be something interesting technically, and enough to keep you busy all week. That said, try not to be too ambitious. We'd hate to have to give you an awful grade because you hand in a pile of code that doesn't run/work.

Good ideas:

Bad ideas:


When you turn in your project, it should be able to immediately be run on the unix machines in Gates. You can make sure of this by putting it in your home directory on afs and running it there before handing it in.

In addition to your .py file(s), please write up a brief .txt document describing your project. What it does, how it works, any particularly cool things you had to implement. Most importantly, tell us how to interact with it If it's a game, describe the controls, if it's a simulator of some kind, let us know how to operate it, otherwise we might not see all of your hard work.

Some guidelines:

Other tips:

Try to design your project in such a way that you can get a basic version running and then add things to it.

For example: A running version of Pacman has a board, walls that you can't pass through, and a yellow dude you can control with the arrow keys. He doesn't even need to move on his own for it to be considered working. From there you add motion, pellets, ghosts, scoring, lives, sound, fruit, etc.


To handin, create a folder with your andrewID and within that, use the numbered versioning system we've had on the last few assignments.

Don't forget your explanation file

Note: if you have copies of modules you are handing in as well, make sure they end up in all of your submissions, not just the first.

Also note: You cannot use late days on your final project.