This is a past course that has already concluded. If you are looking for a current course, please click here.
Welcome to Principles of Computer Science! For course info and policies, please see the syllabus. For grades, log into Moodle.
Prof. Wright's office hours: Mon. 12:45–1:45, Wed. 9–10, Thurs. 10–11 & 1–2, Fri. 12:45–1:45, or by appointment in RMS 409
Supplemental Instruction (SI): Sun. 4:00–5:00pm, Tues. 3:00–4:00pm, Thurs. 7:00–8:00pm in RNS 203
Homework help sessions: Sun. 7:00–8:00pm, Tues. 7:00–8:00pm, Thurs. 9:00–10:00pm in RNS 203
Final Project Information
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. You will work in teams of two or three students.
Choosing a Project
Choose a problem of interest to you that you can solve by writing a computer program. Here are some possible 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, the stock market, traffic on a busy road, population dynamics, chemical reactions, elevators in a building, or some other system. Use graphics to visualize your simulation.
- Write a program that performs some aspect of security, such as encrypting and decrypting files using an asymmetric-key method.
- Create a storage and retrieval system for some sort of information, such as data about music or movies.
- Design and program a game.
As you consider project ideas, also think about who in the class you would like to work with, since you will need a team of two or three students.
A project proposal (one proposal per team) is due on April 26. 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.
Project Requirements
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 using comments, 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.
Project Schedule
- Wednesday, April 26: 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 28: Projects and teams finalized
- Friday, May 5: 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 10: 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 12: Presentations in class.
- Monday, May 15: Presentations in class; code and user manual due for all projects. Upload your files here and complete this self/peer evaluation.
Grading criteria
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. If you have questions or concerns about the grading criteria, please talk with the professor.