This page contains instructions for identifying, preparing and submitting your CS377P Project.


Deliverable Deadline (soft) Deadline (hard)
Project Proposal October 30, 2015 November 7, 2015
Progress Report November 15, 2015 November 30, 2015
Final Report + Presentation - December 12, 2015 7PM


Your project's final grade will rely only on the final report and presentation.

The aim of intermediate deliverables is to give you feedback so that you can turn in a project that meets the expectations of this course better. They will not be graded.

IMPORTANT: All deliverables for the project (except for the presentation) must be submitted on paper.

You will meet me with your project proposal during office hours (or with appointment) to discuss it. All team members must be present during the discussion.

Project setup

You can perform projects in teams of up to 2 students. Teams can choose their own members.

Project Proposal

Each team will identify 2--3 software projects (or algorithms) to optimize. These will form your baselines.

You will analyze each of these projects to determine their performance bottlenecks.

You will suggest techniques to improve performance based on those you have learnt in class. The projects chosen should allow applying multiple techniques (pipeline optimizations, cache optimizations, parallelization, etc.) to allow you to demonstrate broad grasp of the techniques taught in class.

You will predict the overall performance improvement expected once you have improved performance.

The project proposal (not to exceed 1.5 pages per software project) will summarize your investigations of each project and conclude by picking one project that your team will work on.

Each team will submit a single proposal, and may proceed to work on the project only after receiving my approval.

Project proposals will be accepted till November 7. However, the earlier you turn in your project proposal, the earlier you will receive your feedback.


You may choose to write your baselines instead of choosing publicly available software. I recommend against this -- writing your own baselines weakens your case.

Optimizing publicly available software also gives you an opportunity to show off your skills beyond this class.

Choose projects where optimization opportunities abound. Mature software projects may not provide opportunities.

Progress Report

Each team will produce a 1-page writeup of their progress so far. The report shall detail techniques used and the performance improvements achieved so far.

If no speedup was achieved, an investigation into why the speedup was not achieved is expected.

Unless permitted in advance by the instructor, all performance numbers shall be gathered on Stampede/TACC.

Final Project Report and Presentation

Each team will prepare a 10-minute presentation on their project and shall prepare a report, no longer than 5 pages, on their project.

The project report shall contain the project proposal and the final progress report with any suggestions made by the instructor incorporated.

The report should contain details of all techniques tried (even if they did not result in a performance improvement) and experimental data to backup explanations of why techniques worked and why they did not.

As a course with a strong experimental focus, your explanations must be supported by valid experimental data.

Guidelines for presentation

The presentations will be in WEL 2.256, starting from 7PM and lasting to 10PM. The ordering will be randomly chosen.

You will have 10 minutes for your presentation. Audience members may ask questions.

Assume your audience is familiar with performance techniques and terminology.

Make an effort to convey what algorithm you're optimizing, since your audience will be less familiar with the individual algorithms themselves.

A rough guideline is:

  • Explain the algorithm you are optimizing
  • Explain the optimizations you can apply and where they are applicable
  • Explain the performance results you have obtained along with a brief mention of the experimental setup

Guidelines for report

Bring a hard copy of your neatly formatted report to the presentation.

IMPORTANT: You must also submit a copy online to Canvas.

Checklist for report contents:

  • Details of algorithm you're optimizing
  • Details of baseline
  • Optimizations you plan to apply and predicted speedups
  • Details of experimental setup, including machine, OS, compiler and compiler flags
  • Description of inputs
  • Baseline performance on the inputs
  • Experimental results of your optimized version
  • Discussion of experimental results
  • Any attribution to external sources

Guidelines for source code submission.

You must submit both the baseline code and optimized code to the CS377P gitolite service.

IMPORTANT: You must include a Makefile for compilation or a script that will compile the code to produce an executable.

Replace the EID below with your EID.

NOTE: Make sure you submit the correct files to the correct repositories.

ALL WORK IN THE OPTIMIZED VERSION MUST BE YOUR OWN (OR FROM YOUR PARTNER IN THE TEAM) and any external sources must be properly acknowledged in your written report.

If you are a team, both members must submit code as given below.

It is recommended that you include the output of the runs you have used in the performance evaluation as text files.

Submit the baseline code
  $ git clone 
  $ cd baseline
  $ ... add the baseline files ...
  $ git commit
  $ git push
Submit the optimized code
  $ git clone 
  $ cd opt
  $ ... add the opt files ...
  $ git commit
  $ git push

Overall Checklist for 12 December

  • Copy of project report submitted online
  • Source code of baseline submitted to gitolite (with Makefile/ script)
  • Source code of optimized version submitted to gitolite (with Makefile/ script)
  • Printed copy of project report
  • Presentation + Laptop + any Adapters you may need


If you have any questions about this procedure, you should clarify them with the instructor preferably before October 15, 2015.