CS2640 Modern Storage Systems
Course Project

Project Overview

You will come up with an idea to measure, build, or improve a storage system component, get it approved by the instructor, and implement it over the course of the semester. The project is designed to give you hands-on experience with storage systems and allow you to explore a topic of your interest in depth. This is an individual project that encourages the use of AI for both brainstorming and coding assistance. The final deliverables include a short report and a presentation to the class. Your presentation will be peer-evaluated and your report will be evaluated by the instructor and TA. The project is worth half of your final grade.

Objectives:
  • Apply concepts learned in class to a real-world problem
  • Gain experience with systems programming and performance evaluation
  • Deep dive into a specific area of storage systems
  • Develop skills in technical writing and presentation
Team Policy: Projects must be done individually with no teams allowed.

Grading Criteria

Project grades will be based on the quality of the proposal, implementation, evaluation, final report, and presentation, using the detailed criteria below. The grade primarily reflects the effort and rigor you bring to the project. While novelty is considered in the evaluation, it is not heavily weighted. Accordingly, an idea that does not succeed will not hurt your grade if you demonstrate a solid understanding of why it does not work. Likewise, engineering-focused or measurement-oriented projects can also earn high marks when they show strong execution, sound analytical reasoning and useful insights.

Grading breakdown:
  • Proposal: 10%
  • Midterm Checkpoint: 10%
  • Project Presentation (peer-evaluated): 10%
    • Presentation quality (scored by peers): 5%
    • Feedback you give to peers: 5%
  • Final Project Report and Code: 20%

Project Timeline

Milestone Due Date Description
Proposal 2026-03-18 A document (no page limit, not including references) outlining the problem you will solve, challenges, proposed solution, and evaluation plan. Please document your 75%, 100% and 125% goals.
Midterm Checkpoint 2026-04-06 A document (no page limit) on top of your proposal to report your progress and challenges. Include preliminary results if available.
Project Presentation 2026-04-27, 2026-04-29, 2026-05-04 An 8-minute presentation to the class. Your presentation will be evaluated based on clarity, depth, and ability to answer questions. The evaluation will be done entirely through peer evaluation. Everyone must attend the presentations and give (anonymous) score and feedbacks to your peers via the peer evaluation system. 50% of the presentation score are based on your presentation and 50% are based on your feedback to others.
Final Project Report May 6, 2026 Final report (no page limit), and a AI usage report (how you used AI, what you learned and what you did not expect, any useful tips to share) and source code with documentation. Please indicate which goal you have achieved.

Report Formatting

Please use the USENIX paper template for all written deliverables (proposal, midterm checkpoint, and final report).

Direct downloads (mirrored from USENIX):

For LaTeX, the easiest path is to upload the zip to Overleaf and compile there.


Deliverables

Please submit a PR to the course project GitHub repository. Your PR must include a README, build instructions, and your report, all placed in your own folder. Please keep your Git history when creating the PR by rebasing onto the main branch. You also need to add a title, author, and abstract entry for your project to the top-level README.

How to submit

  1. Fork HarvardMadSys/cs2640_project_2026Spring to your own GitHub account via the Fork button on GitHub.
  2. Clone your fork and add the course repo as an upstream remote:
    git clone git@github.com:<your-username>/cs2640_project_2026Spring.git
    cd cs2640_project_2026Spring
    git remote add upstream https://github.com/HarvardMadSys/cs2640_project_2026Spring.git
    git fetch upstream
  3. Create a branch for your project (use your GitHub username or project short name):
    git checkout -b <your-username>
  4. Create a folder named after your GitHub username at the repo root and place all your files there:
    • <your-username>/README.md — project overview and build/run instructions
    • <your-username>/report.pdf — compiled USENIX-format report (see Report Formatting)
    • <your-username>/report/ — LaTeX / Word source of the report
    • <your-username>/src/ — source code (or link to a separate repo if large)
    • <your-username>/ai-usage.md — AI usage report (final submission only)
  5. Add a one-line entry for your project to the top-level README.md with your title, author, and a short abstract linking to your folder.
  6. Commit your changes with meaningful messages. Do not squash your history — we want to see your progress over the semester.
    git add <your-username>/ README.md
    git commit -m "proposal: <your project title>"
    git push origin <your-username>
  7. Before opening the PR, rebase onto the latest upstream/main to keep history clean:
    git fetch upstream
    git rebase upstream/main
    git push --force-with-lease origin <your-username>
  8. Open a pull request from <your-username>/<branch> into HarvardMadSys/cs2640_project_2026Spring:main. Use your project title as the PR title and paste your abstract into the PR description.
  9. For each milestone (proposal, midterm checkpoint, final report), push new commits to the same branch — the PR will update automatically. Tag the instructor/TA in a PR comment when a milestone is ready for review.

Notes:

  • Do not modify other students' folders.
  • Keep large datasets and binaries out of the repo; link to external storage instead.
  • If your code lives in a separate repo, include a submodule or a clear link in your folder's README.

Testbed Available

Cloudlab Access

Cloudlab is a flexible and powerful testbed for computer systems research. We will provide Cloudlab access for students. Please go to Getting Started with Cloudlab to set up your account and get familiar with the platform. You will join project cs2640 when registering your account.

Other testbeds

Depends on your project requirements and preferences, we will also provide other testbeds.


AI Resources

Harvard students have access to a variety of AI tools. For example, ChatGPT is available for free via HUIT, Gemini and VSCode Copilot is free via Google and GitHub respectively. You can compare the tools using AI Tool Comparison Table.

As part of this course, we also provide free coding agent access to all students. Please read https://doc.freeinference.org/ and register on https://freeinference.org/ using your Harvard email address. We recommend using KiloCode in VSCode and MiniMax model for best experience.