Final Project: Proof-of-concept Implementation

a preliminary submission

Due: Friday, May 7th. Please submit your code and documentation to your group’s shared Google drive directory.


The main purposes of this submission are:

  1. to lay the foundation required for you to complete the final project,
  2. verify the feasibility of your original proposal, and
  3. help you you identify the key technical challenges in completing your final project.

The proof-of-concept submission does not need to implement the complete intended functionality of the final program. Instead, it should implement a substantive portion of the underlying infrastructure required for you to complete and test your final submission. Specifically, the proof-of-concept program should:

  • read some input (and specify the format in which the input should be presented)
  • represent the input internally, e.g., in data structure(s)
  • provide a high level structure for the final program, e.g., provide (partial) implementations of the interfaces/classes that will be used in the final program
  • produce some output demonstrating that the parts of the program above function as required for the final program.

This submission does not need to completely solve the task specified in your project propsoal. Nonetheless, upon completing the proof-of-concept, you should have a better idea of how to complete your final submission.


The submission will be graded on a 4 point scale, as follows:

  • 2 points for code.
    • code compiles, runs, and solves a task as specified in the documentation
    • code is reasonably well-organized and includes sufficient comments to understand the various parts of the program
  • 2 points for documentation. Code is submitted with README file with the following contents:
    1. a brief description of the program’s functionality, including how to compile and run the program
    2. a description of any additional functionality that will be included in future versions of the program
    3. a description of how you will test the correctness and performance of the baseline and optimized programs