CS112: The Final Project


During the rest of the semester, you will work in pairs on an extended programming project in an application area of interest to you. 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, each pair of students will give a short presentation about their project to the class.

Your completed program is due at the end of Final Exam period, on Tuesday, May 19, 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 requrements 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: Thursday, April 9 (10 points)

For the first phase of the project, you should hand in a description of your problem 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 these 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, summarize the nature of the data and your planned source for this data.
  3. A description of what you expect will be the overall input and output of the program. If there is a GUI, draw 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 one of the Instructors. You are encouraged to meet with Ellen or Stella before the due date for Phase One of the project, to discuss your choice of project topic and the overall organization of the program.

Project Phase Two: Detailed Program Skeleton with Documentation and Partial Code

Due: Monday, May 4 (15 points)

In this second phase, you will 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 Stella 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, so it would be good to complete some 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.

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.

You are encouraged to meet with Ellen or Stella to review your overall plan for the project, before submission of this phase. You should provide both an electronic copy and hardcopy of the Phase Two material.

Project Phase Three: Informal Presentations

Friday, May 8 (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 should meet with Ellen or Stella to plan the demonstration of your program for your presentation.

Project Phase Four: Final Program and Meeting with Instructors

Due: Tuesday, May 19 (70 points)

In this final phase, you should submit your final, completed and working program. Submit a hardcopy of all of the code files in your project, as well as a description of how to run your program. If parts of your program do not work, or are not working as originally planned, provide some additional notes about this. You should also include a summary of the contributions of each partner to the overall project. Hand in an electronic copy of the entire program folder, including an electronic file called README.txt with instructions on how to run the program, in your individual drop directory on the CS file server. Be sure to verify with Ellen or Stella that the directory is complete after dropping it off. 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.

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.

Sample Final Projects

Click here for a quick peek at some previous CS112 final projects.