CSE 522S: Course Project


The course project gives a team of one, two, or three students an opportunity to propose and complete their own significant uses of, extensions of, or modifications to, the Linux kernel and/or user space infrastructure that uses the Linux kernel. This may involve entirely new functionality or alterations to some existing functionality. Each team will evaluate the effectiveness of its approach by developing their own test cases that can successfully demonstrate the new behavior. Students are encouraged to look to the studios in this course, their own interests, and/or research directions they may be pursuing for inspiration and ideas for their projects.

Each project will be evaluated in three parts: (1) a proposal document; (2) an interim demonstration and report mid-way through the semester, and (3) a live presentation and code and documentation submitted at the end of the semester. At each stage the proposal, reports and presentation should explain the modification or extension in terms understandable to the other students in the course; describe any alterations or extensions to kernel or user space files, data structures, or concepts; present timing graphs or other data to verify the behavior of the modified system; and may include a short demo (if possible within the allotted time).

If you find that the intended direction of the project is not working, and need to immediately pivot toward a new or modified topic, you are free at that point to use the interim milestone demonstration and report to instead (1) present what you have done so far, (2) explain why it will not work, and (3) propose a new direction for the project.

Please note that if you work in a group with one or two other students, only one submission for the entire group is needed – we encourage you to submit (and as appropriate resubmit) your file(s) from just one person's Canvas account, but if you do end up needing to (re)submit from different accounts, please do make sure that the same files (and same versions of those files) end up being submitted so we know what to grade.


Proposal Document

Students will define and justify their course project in a written proposal document, in order to ensure that the scope of the project is achievable. By 11:59pm on Friday February 11th, please submit a PDF, Word, or text file containing the proposal document for your project, on the Project Proposal assignment page in Canvas. The proposal document should:

  1. Propose a modification of, significant use of, or extension to, the behavior of the Linux kernel or of user space infrastructure that uses the Linux kernel.
  2. Clearly explain the purpose of such modification, use, or extension.
  3. Identify any kernel and/or user space files that will require modification or extension.
  4. Identify any kernel and/or user space data structures that will be changed or extended.
  5. Identify any kernel and/or user space concepts, control-flow paths, and/or data-flow paths that will need to be changed or extended.
  6. Propose a set of test cases that demonstrate and test the modification, use, or extension.
  7. Identify any additional kernel modules or user space programs that will be produced in order to implement, or to validate and test, the modification, use, or extension.
  8. Include an eight-week planned schedule for the project, including detailed design, implementation, initial evaluation, project presentation, and project writeup phases.

This proposal document is intended to document your initial thinking and then track the definition of the project as it evolves.  The proposal document definitely can be updated and in fact we will provide prompt feedback on your original version and encourage you to resubmit it with revisions (as appropriate) by 11:59pm on Tuesday March 1st.


Milestone Interim Demonstration and Report

The project milestone demonstrations are intended to showcase the progress you have made towards the final project submission. Each group will give a 5-10 minute presentation demonstrating the progress of their project during class on Thursday, March 31st. The presentation should:

  1. Summarize the project motivation and goals.
  2. Describe how you plan to implement the project.
  3. List what goals you've met so far, what tests you've done so far, and provide a brief summary of the results of those tests.
  4. State what still needs to be done.

A corresponding report is due Friday, April 1st at 11:59pm. The report should include:

  1. A restatement of the project motivation. This is likely to be a rehash of your proposal, but this should also help to illustrate how or if the motivation has changed since beginning the project.
  2. A restatement of the project goals. Again, this is likely a rehash of your proposal, but with any necessary changes given how your project has evolved. You should also address any points that were raised in the proposal grading feedback.
  3. A list of what goals you've met so far, and what tests you've done so far, and a brief summary of the results of those tests.
  4. A submission of code that has been written so far.
  5. Documentation of that code.
  6. A statement about what still needs to be done.

Final Project Demonstration and Report

The final project demonstrations give you a chance to show off the work you've done! Each group will give a 20 minute presentation (which leaves a few minutes for questions and context switching) demonstrating the final implementations. We ask that everybody attend both days of presentations so that all teams have the chance to present to an engaged audence. Teams will present in the following order:

Tuesday, April 26:
Ruiqi, Shining, William
Samatha, Sneha
Alex, Kenneth

Thursday, April 28:
Diva, Meagan, William
Asim, Ryan
Jordan, Ruiwei, Zhikuan

The presentation should:

  1. Summarize the project motivation and goals (this will likely be similar to your milestone presentation)
  2. Describe how you have implemented the project
  3. Describe the challenges you faced, what you learned, any surprises, and what you had to change along the way
  4. Provide a live demonstration of your project's functionality
  5. Look to the future: what else would you have done, given more time?

A corresponding final report (and all code) is due Monday, May 2nd at 11:59pm. The report should include:

  1. A restatement of the project motivation. Again, this is likely to be a rehash of your proposal or milestone report, but it should also help to illustrate how or if the motivation has changed as you've proceeded.
  2. A restatement of the project goals. Again, this is likely a rehash of your proposal or milestone report, but with any necessary changes given how your project has evolved.
  3. A description of how you have implemented your project, including an overview of how the code is structured, and documentation for how each module, function, or code file works, and how it fits into the overall project.
  4. A description of what you have not implemented. Please be clear about what you did not have time to complete, what shortcuts you took to get something working given the time constraints, etc. We understand that most projects cannot be realized as a full product in the 8 weeks given – if you've written code that is inflexible, or made assumptions that would otherwise be too restrictive, we will not take deductions as long as you document and justify these decisions.
  5. Summarize and show the results of any tests you have done, noting any edge cases you have considered, and any edge cases you cannot yet account for. Again, as long as you tell us the conditions under which your project doesn't yet work, we will not deduct points. It is important that you have thought about these cases, even if you could not deal with them in the time given.
  6. Provide a conclusions and future work section: What have you learned? What is the take-away benefit of the project? What new functionality would you add if you continued to work on the project in the future?