Click here to return to the schedule
General Instructions
Programming is a creative process that brings ideas to life through the development of software. Programs can help solve problems, enable innovations, or express personal interests. For this project, you are required to:
- Work with a partner to develop a complex program of your choosing and showcase what you have learned in this course.
- Work alone to answer questions about your program and describe the collaboration between you and your partner.
Both partners should be actively involved in the program development. For example, you may choose to use pair programming, in which one partner drives (types and uses the mouse) while the other navigates (reviews and helps to guide what the driver is doing), with the partners changing roles every 20 minutes. Another method of collaboration is for each partner to develop pieces of the program, combine those pieces together, and provide frequent feedback to each other during the development process.
Ideas for Projects
Your program must focus on a specific topic from the course. Be creative and impress the instructor! Make this final project something you will be proud to show family and friends over the holiday break. For example:
- Create a binary/decimal/hex/other calculator/translator (Chapter 1).
- Develop a hardware simulator that uses machine language (Chapter 2).
- Make a web application using a framework like Flask (Chapter 4).
- Implement an algorithm for encryption/decryption (Chapter 3-4).
- Design your own algorithm that composes music (Chapter 5).
- Apply data structures to solve an interesting problem (Chapter 8).
- Use Python and SQLite to analyze a complex data set (Chapter 9).
- Write a Finch program that uses multiple sensors (Chapter 11).
Please do not choose to:
- Make a 2d game (like with pygame)
- Most games that take as little time to make as you have for this project have already been done. It is difficult to show that you have written the game, rather than found it on the web.
- Make a text-based adventure game
- Text-based adventure games require so much natural language narrative writing that they do not leave you enough time to show the CS concepts you have learned.
Be sure to spend some time before the last week of class to identify your topic and figure out whatever tools, libraries, or techniques you will need to learn in order to complete the project.
Program Requirements
You and your partner must write your program in Python.
Given that this project replaces the normal course activities for the week, you are expected to spend approximately 10 hours on this project. The overall goal of this assignment is to demonstrate what you have learned. You should know which of our 12 Units your project is most related to and why. Your focus should be more about principles of computer science than specific language features. That said, your program should demonstrate:
- The creation of abstractions to develop and manage the complexity of the program (e.g., functions/procedures, parameterization, or data abstractions). You must define and call at least one procedure besides main.
- The use of algorithms (including sequencing, selection, and/or iteration) as building blocks for the program.
- The appropriate use of numbers, text, variables, statements, mathematical expressions with arithmetic operators, logical and Boolean operators and expressions, decision statements, iteration, and collections such as lists>
It should be obvious that you wrote the entire program from scratch, so you should be able to explaqin every line. You may not use other existing code without permission from the instructor.
Individual Reflection
Working alone, respond directly to the following questions. Your reflection should be single-spaced, with a blank line between paragraphs, and have 1-inch margins. Write one paragraph (100 words max) for each prompt. Your reflection must fit on a single page (500 words max) of paper.
- What is the purpose of your program? Which computer science topics from the course does it involve?
- How does your program use abstraction? Include a short segment of your code and explain how it manages complexity.
- What is the most interesting or complex algorithm in your program? Generally describe how the algorithm works.
- How did you incrementally develop the program? What did you create first? What problems did you encounter and solve?
- How did you and your partner share the work? Which portions of the program did each of you contribute?
Your reflection should demonstrate how you think like a computer scientist and directly address the seven big ideas and practices of the course.
Process and Deadlines
You should approach this assignment as a take-home final exam. There will time during class to coordinate efforts, but most of the development and writing must take place outside of class. Here is the agenda for the last week:
Due Date | Description | Points |
---|---|---|
Monday's class | Approval: Each team will have two minutes to discuss their project plans with the instructor. Be prepared to demonstrate what you have already completed and/or learned. Rubric | 10 |
Wednesday's class | Gallery Walk: Each team will have five minutes to present their current work in progress to nearby teams for informal feedback. The rest of the time will be available for pair programming. Rubric | 15 |
Friday's class | Demonstration: Each team will have three minutes to present their current work in progress to the instructor. Be prepared to explain how you will answer the reflection questions above. Rubric | 15 |
Finals week | Submission: Each student must upload via Canvas a zip file containing all source code and other supporting files (e.g., data sets, images, sounds) and a pdf file containing your individual reflection. Rubric #1 Rubric #2 | 30 30 |
Note that the program and reflection are worth the same number of points. Do not underestimate the writing aspect of this project. It will take some time during finals week to complete.
Your final submission will be due during the final exam for your section. There will be 10-minute demo times assigned during the exam period. If needed, please include a README file that explains how to run the project.
Acknowledgements
This assignment is based on materials from the AP CS Principles project: Performance Task (updated March 2015) and Draft Rubric (updated September 2014).