Project Description

There will be a group project for this class that will be done in groups of two or three students. The purpose of the project is to provide students with the opportunity to extend their knowledge and experience in parallel programming through hands-on development and evaluation.

Project Structure

Definition Students should find an area of interest in parallel computing and study the relevant research or technical literature. Consider what are the important problems in the identified area, to what degree these problems are understood, and how they should be solved. Given the limited time and the emphasis on programming for this class, project definition should be done as soon as possible - i.e., read a few papers, discuss for a couple of hours, then write the project proposal. Students are strongly encouraged to consider problems in their own research area (if they have one). If you have trouble identifying a topic, contact me ASAP, and I will provide one for you.

Design Project design should identify the method(s) that will be used for solving the proposed problem, given the time and computing resource constraints. The students should then decide on a realistic timeline and milestones given their own schedules. With the intended prototyping nature of the projects, design, implementation, and evaluation may be performed iteratively (i.e., you are allowed to change the initial method/timeline/milestones). However, having a concrete plan will make it easier to keep on track.

Implementation Implement your proposed solution. C/C++ should be used (unless approved by the instructor), and all code should be version controlled using git and BitBucket. Good coding practice is expected (e.g., consistent spacing, well-commented, and readable).

Evaluation Once the solution has been implemented, it should be evaluated for accuracy and performance. Accuracy evaluation will depend on the application area (e.g., a neural network with with enough labeled data should classify items correctly). Performance evaluation will be done by comparing the performane against some baseline or state-of-the-art.


  1. Proposal (Due October 11th) A written proposal describing the area and problems to be explored, the motivation for choosing this area, possible directions of investigation, and expected results. This should be 4-5 pages (not counting references, if any).

  2. Final Presentation (November 29th & December 1st) A final presentation and demonstration of your accomplishments is required. It should be approximately 15 minutes, with every partner participating in the presentation.

  3. Source Code (Due December 3rd) The source code for your project should be version controlled using git and BitBucket, and your work should be committed frequently to track your progress.

  4. Report (Due December 7th) A final report summarizing your attemps, accomplishments, and what was learned from the project. The report should be approximately 10 pages (not counting references), and should include the following sections - abstract, introduction, methodology, result, and conclusion.

All deliverables are due 11:59 PM PT.

Sample Reports

Note that the instructions above should be followed regardless of what are in these reports, as they are from prior terms.

Sample 1
Sample 2