2016 November 4,

CS 111: Project


Most of the rest of this course will be occupied by the final project. It must be handed in electronically by Monday 2016 November 21 at 5:00PM. You may develop your project on your own computer, but it must function correctly on our lab machines, where it will be graded.

You have over two weeks to work on the project, and the size of the project should reflect that amount of time and effort. You are strongly encouraged to work on the project with one (and only one) partner, because two workers can produce a more interesting product than one worker. If you would like help in finding a partner, then e-mail me.

The goal of the project is for you to write a program of significant size and complexity in an object-oriented style. Your project must involve at least two classes of your own creation. At least one of your classes must be a subclass of another one of your classes, to demonstrate that you understand subclassing.


The kind of program is up to you, but here are a few suggestions. First, you can certainly use PyGame to make a game:

But maybe you don't care for games, or you know already that designing a well-balanced game is more difficult than it seems. There are other things you can do with graphics and sound:

Do you have to make a program about graphics and sound? No, if you have a better idea.

The prefect and I will talk with you occasionally, to see how your ideas are evolving and how your project is progressing. I have one last request: Do not make a project about zombies.

Polishing and Submitting your Work

You and your partner will submit a single copy of your project. In your hand-in folder on the COURSES file server, make a new folder called "project". You will place your program files, image files, sound files, and any other supporting files in this folder.

Among the files that you submit, there must be a file called "readme.txt" or "readme.pdf". (It should be a plain text file, of the sort made by TextWrangler or a text editor, or a PDF file. Do not submit documents of any proprietary format, such as Microsoft Word.) I will read this readme file, just before grading your project. Hence the readme file is your chance to "frame" your project, so that I come away satisfied and impressed. The readme file should probably explain:

Your project will be graded based on its fulfilment of the basic requirements (e.g. at least one subclass), its technical competence (does it work?), its technical difficulty (was it hard?), its polish (clean, efficient code), its documentation (comments and readme), and its creativity.