The final project of CS121 is your opportunity to apply what you have learned in this course to solve a problem of interest to you.
Choosing a Project
Choose a problem of interest to you that you can solve by writing a computer program. It is recommended that you browse this list of sample problems. (The link only works on campus.)
Here are more project ideas:
- Write a program that gathers and displays information from the internet. For example, your program could dispaly the current weather in a user-requested city. Or, your program may provide definitions of a user-requested word.
- Write a program that simulates a real-world system, such as elevators in a large building, traffic on a busy road, population dynamics, or some other system.
- Write a program that performs some aspect of security, such as encrypting and decrypting files using an asymmetric-key method.
As you consider project ideas, also think about who in the class you would like to work with, since most projects will be done by a team of two or three students.
A project proposal (one proposal per team) is due on April 27. The proposal should containg a brief description of your project. It is recommended that you discuss your project idea(s) with the professor before writing your proposal.
Your project must satisfy the following requirements:
- Your project must involve writing a Python program that goes well beyond the level of complexity of the homework problems in this course.
- Your code must be object-oriented, involving objects and methods that you define.
- Your code must be well-documented, so that a human can read it and understand what it does.
- You must write a "user manual" that explains what your program does and how to use it.
- You must give a brief presentation about your program to the class.
- Wednesday, April 27: Project proposals due. Each group should bring to class a brief description of the proposed project and the names of the students involved.
- Friday, April 29: Projects and teams finalized
- Friday, May 6: Project design update due. Each group must turn in a brief update on the design of the project. This update should indicate what Python classes you will create for your project, and which Python modules you will employ.
- Wednesday, May 11: Project status update due. Each group must turn in a brief update on the status of the project. This update should indicate what has been accomplished so far, and what remains to be done.
- Friday, May 13: Presentations of individual projects in class.
- Monday, May 16: Presentations of group projects in class; code and user manual due for all projects. Upload your files here and complete this self/peer evaluation.
Your project will be graded out of 100 points, according to the following criteria:
- Complexity (10 points): project is of a level of complexity that goes well beyond the exercises assigned in this course
- Objects (10 points): code is structured using objects, including custom-defined classes with properties and methods
- Functions (10 points): code is organized using functions to break large problems into smaller pieces
- Code Quality (10 points): code is well-designed, appropriately using the data structures and constructs that we have learned in this course
- Documentation (10 points): code is well-documented, using comments to indicate what the code is supposed to do
- Code Runs (10 points): the code runs and does what it is supposed to do
- User Manual (15 points): a user manual, to accompany the code, thoroughly explains what the program does and how to use it
- Presentation (15 points): a brief (3–5 minutes), clear explanation of project, and a demonstration of your code
- Deadlines (10 points): work completed on time, according to the schedule above
In addition, self and peer evaluations may affect your project grade by up to 40% in either direction. Different people in the same group might receive different grades depending on their contributions to the project.