The final project gives you the experience of building an interactive system starting from the design stage and finishing with a working prototype!
As with your labs, the final project is a solo effort. You are welcome and encouraged to chat with your classmates about your ideas, but you should not share or discuss the code itself. You are, of course, welcome to get feedback on your code from lab helpers, tutors, or your instructor.
The goal for the final project is to build an new interactive system. In the context of this class, a good final project interactive system will:
In addition to the basic framework above, your final project should demonstrate mastery over the tools and concepts introduced throughout class (including, for example, making use of complex data structures – see the following section for a detailed breakdown of requirements).
Successful previous projects that meet these criteria are:
picture
module to generate art based on user inputThere are many great personal (or Winter Term) projects that do not fall into the category of building interactive systems (e.g. learning a new Python library or a new programming language).
There are also many excellent projects that are not new in that it is easy to find dozens of implementations of them on the web already. Examples that fall into this category include:
Generally, if you can Google your project idea and easily find a Python implementation of it, you should probably consider another option. If this is the case for a project that you had your heart set on, you may be able to solve this problem by introducing a unique modification. For example, there are many, many Python implementations of Blackjack on the web, but you might make a unique version that uses the picture
module, or modifies the rules in some way.
Finally, it’s important that your project involve some kind of nontrivial computation or transformation of the user input. What counts as nontrivial can be a judgment call depending on the type of project you are proposing. However, the following examples would definitely not meet this criteria:
Of course, all of these ideas could be modified to add a nontrivial component.
If you have any questions about what counts as a viable project, just ask! To make sure expectations are clear before you start coding, you will begin by writing a project proposal and receiving feedback on it from your instructor. See the next page for more specifics.