CS112: The Final Project


Over the rest of the semester, you will have the opportunity to work on an extended programming project in an application area of interest to you. You are strongly encouraged to work with a partner, but this is not required. After choosing an application or problem, you (and your partner) will design and build a substantial MATLAB program from scratch. This project will enable you to integrate all of the programming and problem-solving skills that you have learned, and to build a program that is connected to your particular interests. During the last lab class of the semester, students will give a short presentation about their project to the class. Some sample projects from past years are displayed on the Project Gallery page.

Your completed program is due at the end of Final Exam period, on Tuesday, May 22, at 4:00pm. There are two intermediate stages involving work that you submit, which will also be graded. You will receive feedback from the Instructors on each intermediate stage. The requirements for each stage are described below. It is expected that the program will consist of code that is developed by you (and your partner) from scratch. Unless you are given explicit permission from one of the Instructors, it is not acceptable to use code from other sources, such as books, the Internet, or previous semesters of CS112. Use of code from these other sources without permission would be a violation of the Honor Code.

Project Phase One: Problem Description and Program Outline

Due: Tuesday, April 17, by midnight (10 points)

For the first phase of the project, you should submit a detailed description of your project and an outline of the overall structure of the program. This initial description can be written in English, although it is OK to describe some of the components in MATLAB. The description should include the following:

  1. A summary of the application or problem that your program will implement or solve.
  2. A summary of background information for your application or problem. For example, if you plan to implement a model or simulation of some sort, provide a summary of the model or process. If you plan to use data, describe the data and your planned source for the data.
  3. A description of what you expect will be the overall input and output of the program. If there is a GUI, include a picture of what you expect the interface to look like.
  4. A list of the main functions and scripts that you expect to define for this application, with a brief description of the purpose for each function or script. Note that as you proceed with your program development, you may discover other functions that would be useful to define for your application.

If you are unsure of what to include in your description, please ask Ellen or Sohie. You are encouraged to meet with one of us before the due date for Phase One of the project, to discuss your choice of project topic and the overall organization of the program.

Phase One submission details: Write up your ideas in a Google doc and share the document with both Ellen and Sohie. Please allow "Edit" permission when sharing, so that we can write comments directly in the document. Pictures can be hand-drawn and photographed with a cell phone or camera, or can be drawn with an online drawing tool of some sort, and should be inserted into your Google document. Use the following naming convention for your Google doc: partner1name_partner2name_phase1 and also write the partner names in the document itself.

Project Phase Two: Program Skeleton with Documentation & Partial Code

Due: Tuesday, May 8, by midnight (15 points)

For the second phase of the project, you should submit a detailed skeleton of the entire program, with some completed code. The amount of completed code should be at least half of the anticipated final size of the program (Ellen and Sohie can help you figure out what this means for your program). Even if the code is buggy, you should submit anything that you have written, so that we can provide as much feedback as possible. In your skeleton, every function definition should have comments indicating its purpose and should have all of the input and output variables specified and described. Keep in mind that you (and your partner) will be giving an informal presentation of your project work in the last lab on May 10, so it would be good to complete portions of your program that can be used to convey the essence of your project to the class. If you made decisions that deviate from your initial Phase One plan, include a brief explanation of your decisions (this can be written in comments in your code files).

Also include a summary of how the programming effort to date was distributed between the partners, and a plan for how the remaining coding will be distributed. Some programming can be done together, but there should also be parts that each individual student is largely responsible for developing. As the program is written, the efforts of each partner should be documented in the comments to the code.

Phase Two submission details: Place all of your code and data files inside a single folder, and use the following naming convention for the folder: partner1name_partner2name_phase2. Upload this folder into the cs112/drop folder in the accounts for both partners. You should also submit a hardcopy of all of your code files. If you are not able to hand in your hardcopy in class on May 8, please slip it under Ellen's office door.

Project Phase Three: Informal Presentations

Thursday, May 10 (5 points)

During the final lab meeting, we would like you (and your partner) to share your project work with the class (we will arrange the schedule to accommodate partners who normally attend different labs). It is expected that you will not have a completed program at this point, but you can describe your general problem or application, user interface, and overall design plan. You might also comment on what aspects of the project have been especially interesting or challenging. You should prepare in advance to give an 8-10 minute presentation that conveys what you are doing to your classmates. Before the presentation date, you are encouraged to meet with Ellen or Sohie to discuss your plans for the presentation.

Project Phase Four: Final Program and Meeting with Instructors

Due: Tuesday, May 22, by 4:00pm (70 points)

In this final phase, you should submit your final, completed and working program. Your final program should encompass principles of good program design, such as effective use of functions to implement parts of the problem or application, informative names for variables and functions, and code that is well organized and concise. With regard to documentation, you should provide comments at the beginning of each function that describe what it does, and occasional comments throughout extended functions.

Create an electronic file called README.txt with instructions on how to run the program. If parts of your program do not work, or are not working as originally planned, provide some additional notes about this in the README.txt file. You should also include a summary of the contributions of each partner to the overall project.

Submit a hardcopy of all of the code files and the README.txt file for your project. This hardcopy can be slipped under Ellen's office door. You should also submit an electronic copy of your project. Place all of your project files (all code and data files needed to run your program, and your README.txt file) in a single folder, and use the following naming convention for the folder: partner1name_partner2name_final. Upload this folder into the cs112/drop folder in the accounts for both partners. Be sure to verify with Ellen or Sohie that your electronic submission is complete after dropping it off.

Finally, we would like to meet with you before or after your final submission to see a demonstration of your program and to get your feedback about the project experience. A Google sign-up sheet will be created for scheduling a time to meet during reading period or finals week.