Your project has four deliverables:

  1. Project Proposal: 10%
  2. Progress Report: 5%
  3. Project Implementation: 75%
  4. Documentation: 10%

The descriptions for each of these deliverables are listed below.

Project Proposal

The project proposal should be written in It should describe (1) the title of your project, (2) a 3-5 sentence summary of the project, and (3) your intermediate goal(s) for the following week. Your instructor will review your proposal and provide feedback on whether you are ready to get started or if a brief follow-up meeting is needed to clarify or refine any points.

Progress Report

To help you stay on schedule, you will write a brief Progress Report in the file named This file will ask you to reflect on your effort to complete the intermediate goal(s) outlined in your Similar to the Proposal stage, you will receive some timely feedback from your instructor. Whether you receive credit for this check-in will be determined according to whether you’ve given your best effort towards meeting your goals.

Main Program

Your final project must include the following to receive full credit:

  • Variables and assignments (to be honest, we’d be impressed if you managed not to include this part!)
  • Conditional statements (i.e., if/elif/else)
  • Nested Loops (with for or while loops, in the same function/method)
  • Functions/Methods (including parameters and return)
  • Strings
  • Use a module (either one you’ve written, or a built-in Python module like math)
  • Substantive use of a complex data structure (i.e., lists, dictionaries, tuples, or sets OR define your own class. An element of substantive use is mutating the data structure as your program runs.

In general, your code needs to be ‘‘parameterized’’ in some way – every time the main file is run there should be some level of variation in the output (e.g. randomization, user input, etc.). Global variables are highly discouraged, as has been the case all semester.

Finally, code must execute without errors (see below for our advice on how to deal with any errors you might be unable to remove!) and it must adhere to good design practices. Your instructor will share some insights into “good design” in lecture.


Writing good documentation is a critical part of being a conscientious coder. As part of your project, you will create a file that outlines the operation and use of your program. It should provide a clear description of how to run your code, any inputs that are required, and the expected output. You should make every effort to rid your code of bugs, but sometimes there are bugs that refuse to be handled. If this happens, you should note the issue in your and describe the workaround you are using to keep your program operating.

Due Dates

Due dates for each of the components above will be listed in the associated replit files.