Course Project
Collectively, the project accounts for almost half of the course grade. That would suggest to me that one should read this page closely.Overview
The intent of the course project is to provide deep, hands-on experience with a storage topic interesting to each student. The class will separate into groups of two or three. The timing and grading weights for the different parts of the projects are given on the course page.In general, groups will base their project on the two "Program" assignments that take place in the first half of the course. However, where you go from this base is up to you. Your project must take the basic concept of a filesystem or block device driver and add functionality that addresses one (or more) of the following questions:
- How can I improve the availability and/or recoverability of this storage?
- How can I make this storage network-accessible effiently?
- How can I improve storage efficiency?
- How can I improve performance?
- How can I improve security?
Groups will submit an proposal draft that describes their project and how it will be achieved, including detailed plans for two milestone deliverables. Groups will also, at this time, schedule time with the instructor to discuss the proposals.
Groups may need to alter their project plan (or even abandon it for something else) based on feedback at this stage. A finalized proposal will be submitted after this revision process.
Work will then proceed in depth on the project. Students must aim to have two measurable, demonstrable units of work—milestones—as evidence of consistent effort over time (the key to success). Unlike most artifacts in the course, milestones will be due at 8am (though can of course be submitted sooner). That day, the usual lecture will be replaced by a project work day, in which the instructor will meet with groups individually (1) receive an informal demo of the milestone and (2) to offer feedback and advice. Attending work days is mandatory — this is how I grade milestones and track individual student contribution and project health!
Finally, when the project is complete, there will be three forms of deliverable:
- First, all project materials as well as a written report will be turned in.
- Second, groups will present a final presentation to the rest of the class on their project.
- Third, groups will schedule an out-of-class final demo to the instructor, which will allow greater depth of discussion.
Each stage of the project will be motivated by a "business scenario" -- a situation in a corporate environment that would lead to the deliverable being asked for.
Note: At any stage, the instructor may opt to require resubmission or a change of plan. This is independent of the grade for that stage, as the cause could be quality (submission was incoherent) or content (submission was coherent but the design expressed was infeasible).
The precise requirements for each of the deliverables are described below.
Proposal draft
The proposal consists of:
- A brief write-up (3-4 pages) that describes the project.
- A 60-minute meeting with the instructor to present and discuss the proposal. In the meeting, a 5-10 minute presentation is expected, followed by discussion. NOTE: See "How to schedule meetings" below.
- What will be built? What is the high-level architecture? The most basic design questions should have been answered by this point (e.g. language, platform, algorithm, etc.).
- What will be the criteria for success? Be specific. Include a high-level description of your test plan, including what kinds of testing is needed (unit, integration, performance, etc.)
- What are the major risks and unknowns involved?
- Do you need extra hardware resources? (Reasonable hardware requests can be granted for projects)
- What is the exact timeline for the project?
- The schedule must include, in detail, two milestones you plan to demonstrate during project workdays later in the semester (see course calendar for dates).
- Be sure to identify the new skills will need to be developed to complete the project, and include the time to learn these skills in the timeline.
- If your team server is being used, consider how its use may conflict with course lab assignments -- note this in your timeline.
- Completeness of proposal versus the questions above.
- Clarity of write-up.
- Professionalism of presentation.
Proposal, finalized
Based on feedback received, you will update your proposal. The structure is the same, but the bar for quality and completeness is raised. Grading for this deliverable will be based on the attributes from the initial proposal as well as:- Successful incorporation of initial proposal feedback.
- Feasibility of the presented plan.
- Correct use of the concepts covered thus far in lecture.
Milestones and workdays
As described above, you'll need to show off two milestones of measurable progress at certain points in the semester. The exact technical content of these will depend on what was agreed to in the proposal stage.
Deliverables: On the morning of the milestone deadline, you'll submit your technical artifacts (code, documentation, performance data, etc.) and a milestone writeup that captures:
- Progress to date
- Changes to the schedule established in the proposal, with discussions of any shortfalls or changed designs
- A brief summary of each team member's specific contributions
NOTE: Workdays are not optional!
Be honest, please! If things are progressing differently than you expected, don't hide that! Just report honestly what's going on. If things are looking bad, contact the instructor proactively to propose a revised timeline. Having honest difficulty with new subject matter is not grounds for a bad grade. However, misrepresenting progress will be penalized, as will failing to take proactive steps to correct or revise a schedule that is slipping constantly.
Final report
This report will, in a maximum of 8 pages, describe the results of your efforts. Below is a reasonable outline for this document.
- Introduction: What is the problem or market you're addressing?
- Design: What is your approach to the problem? Discuss your design in depth. Diagrams are likely useful here.
- Implementation: Describe your implementation fully, making sure to start at the beginning (language, platform, etc.).
- Evaluation: Conduct a study to evaluate how well your system fulfills its goals. Also include a performance study featuring appropriate benchmarks. Be sure to discuss WHY the numbers are the way they are. If you get disappointing results, discuss those too (don't hide them!).
- Conclusion: Summarize the key benefits and tradeoffs of your system. Describe potential avenues for further improvement if you were to continue on the project.
Grading for this deliverable will be based on:
- Completeness versus the above.
- Clarity.
- Correctness.
Final presentation
The final presentation consists of a 15-minute presentation to the rest of the class (plus time for Q&A). The presentation should answer the following questions:
- What is the problem or market you're addressing? (in the scenario, you're presenting to a broader audience, so start at the beginning).
- What is your approach to the problem? What is you design?
- Describe the implementation process. Have any major changes been incorporated since the proposal was finalized? How did the project proceed compared to the timeline presented in the proposal? Explain any differences.
- What were the most challenging problems encountered? How were they solved? What limitations still exist in the project?
- Evalute your project in terms of its core goals as well as its IO performance.
- DEMO: SHOW US WHAT YOU GOT.
As before, you likely want to cover the first bullets quickly so as to maximize time for the good stuff, your demo.
Grading for this deliverable will be based on:
- Completeness of the presentation versus the questions above.
- Professionalism of presentation.
- Smoothly staying within the time limit.
- Correct use of the concepts covered in lecture.
- Successful incorporation of feedback throughout the project.
Final demo
The final demo consists of a 60-minute meeting with the instructor (15 minutes for talk+demo, then interactive Q&A). The instructor will send directions on how to sign up; if he has not yet done so, ask. In this meeting, your project will be put through its paces, code will be inspected, trade-offs will be debated, etc. It can basically be thought of as a defense of your work against scrutiny.
Grading for this deliverable will be based on:
- Completion of objectives laid out in proposal and outline.
- Technical merit.