Research Project

Final Deliverable

You must submit all of your current code and supporting files as well as a final report as a 5-10 page PDF.

In your report, include at least 5-6 sections from the following as appropriate for your project: Background, Methods, Experiments, Results, Discussion, Conclusion, Future Work. Make sure you include a description of the problem or algorithm you studied, including brief code excerpts if appropriate. Discuss how you applied the concepts we learned in this class. Elaborate on any difficulties encountered and how you overcame them. Provide performance results and analysis. Give a few concrete suggestions about how the project could be continued or improved in the future. Be detailed, but do not ramble. Check for grammar and spelling mistakes before you submit. Aim for 5-10 pages single-spaced. I recommend typesetting it with LaTeX for readability. Include references where appropriate. Take a few minutes to skim this paper and do your best to adhere to the "rules" (i.e., best practices) for any parallel performance results you report.

As part of your Conclusion section, please include a sentence beginning with "Our group's contribution(s) is/are" in which you describe as precisely and concisely as possible what your group's efforts have produced. Be honest about where these contributions may not have ended up rising to the level you had hoped or had anticipated in your proposal.

As with the project draft deliverable, if your group has been using online source control (e.g., Github) just include the repo URL at the top of your report. Additionally, if you worked entirely in your scratch folder on the cluster, you can just mention that at the top of your report and I will use that folder as your submission (try to clean it up a bit first!). Otherwise, submit your code as a zip file on Canvas.

Make sure your repository, folder, or zip contains all relevant source code and instructions on how to build and run it (Makefile and/or automated test script preferred!). Unless otherwise arranged, your code should compile and run on the cluster. If your program requires any data sets, make sure you include these as well. If they are larger than a few MB, please put them in your project-specific folder inside /scratch instead of uploading them to Canvas.

NOTE: I will attempt to reproduce your results, and if I am unable to do so this may negatively affect your grade. Please make it as easy for me to reproduce your results; e.g., by providing automated testing scripts or detailed instructions in a README.txt or your report.

Your submission will be graded on its correctness, completeness, thoroughness, and scope. Because every project is different, it is impossible to provide a single rubric. Each submission will be graded based on its individual merit. I will provide some (minimal) written feedback and assign you an overall letter grade for this submission according to the following rubric:

  • A - Exceptional:
    • Significant and well-executed new implementation and/or analysis of a parallel or distributed system, or something else as previously arranged based on your proposal and/or your draft deliverable.
    • Completely automated testing framework clearly demonstrating both correctness and scaling performance (this should run on the cluster unless an alternative was previously arranged).
    • Comprehensive report with descriptions and detailed analysis with citations of relevant sources and a discussion of both minor project extensions and significant future work.
  • B - Good:
    • Significant insights into a parallel or distributed system. This may or may not include new implementations, but it should apply many of the concepts discussed in class.
    • Semi-automated and extensible testing framework demonstrating both correctness and scaling performance.
    • Comprehensive report with descriptions and detailed analysis with citations of relevant sources and a discussion of minor project extensions and/or significant future work
  • C - Satisfactory:
    • Demonstrates a parallel or distributed system, using at least two or three concepts discussed in class.
    • Reproducible test cases demonstrating evidence of both correctness and performance improvement.
    • Report with descriptions and analysis with citations of relevant sources and a discussion of some kind of future work
  • D - Deficient:
    • Evidence of a good-faith effort in some kind of code or experimentation/analysis artifact.
    • Report explaining in detail all the obstacles encountered, with suggestions about how future groups could avoid these obstacles in the future.
  • F - Unacceptable:
    • Lack of a good-faith effort.

This assignment is due the last day of classes (May 2). I will accept late submissions with no penalty through Friday, May 3.