You will now be expected to take what you have learned throughout this semester and apply it to a final project.
You will work on your final project in the groups you have already been assigned. You will only need to turn in one of each requirement for the entire group (e.g. one final report, one proposal, etc.). Please make sure to include your group letter/number, the names of all group members, and NETIDs of all group members on all submitted material.
Each group shall submit a project proposal on BlackBoard during week one of the project (see timeline below). The proposal should include your team information, the project idea, how it applies to topics from class, a timeline, and a grading rubric. An example project proposal is in the final_project directory of the project repository and available on Blackboard.
This section of the proposal should clearly explain what you plan to do and how you plan to do it. This is a final project and should therefore be somewhat involved; however, keep in mind that you only have three weeks to implement it so don't bite off more than you can chew. Consider breaking up a large project into a smaller project. You may choose any project you want as long as it relates to at least one of the main topics from class. Below is a list of example projects. You may choose a project from the list or propose your own original project.
- Write a kernel module to do something useful
- Write your own threading library (look into
makecontext(3)andtimer_create(3P)) - Create an interactive shell similar to
BASH - Implement a file system (i.e., be able to list directories, read/write files, and navigate around)
- Examples systems could be
TAR,FAT,EXT2,ISO, etc.
- Examples systems could be
- Create a multi-threaded search algorithm for large data sets
- Simulate a system using threads or processes and IPC
- Write a simulated operating system
This list is not all inclusive. If what you want to do is not on the list that is fine. We welcome creativity and originality on this project.
Include a section in your proposal that includes how your project is related to the topics of the class. At a minimum the project should include at least one main class topic, and it would be better if it included more than one.
As part of the proposal you should submit a grading rubric which we will use to grade you project. You may choose the importance of each part of the project and assign weights as you see fit. Each part should have three levels: unsatisfactory, satisfactory, and beyond satisfactory. The satisfactory level should be what you believe you will complete and give you 100%. The beyond satisfactory can include stretch goals that you can do for extra credit. If you succeed on the project and meet all the requirements in the satisfactory level you should receive 200 points. The extra credit can add up to more than 250 points; however, we will cap your overall project score at 250 points even if by your rubric you should have received more. The rubric should include your final report and presentation as a part of your project. The grade from you proposal will be included into the final report score.
Your group shall submit a single final report during dead week (see timeline below). The report should be long enough to explain your project without any unneeded or unnecessary details. A good estimate would be five to ten pages; however, the actual length will vary by group and project. The report shall include the group number, list of all group members with contribution percentage, and at a minimum the following sections:
A summary of what your project is and why you chose it.
How did your group go about implementing your project? What challenges did you run into and how did you overcome those challenges? If your project includes an API for others to interact with it, how did you decide on the API you created; how is the API used? Make sure to include any logic, state, and UML diagrams you created along with any other graphics to help explain how your project works.
Show that your project works. How did you test the project? Include outputs of your code and reference any relevant generated material (e.g. log files).
Discuss what the results mean. How does the output show that your project worked? What does and what does not work? What caused some parts to not work?
Draw conclusions on your project. How does it apply to this course and other courses you have taken? What problems did you run into and how did you overcome them? What should you have done differently?
Include any relevant material that doesn't fit into the report such as large log files, program outputs, or API documentation. You do not need to include a listing of your code in your report.
During your lab section during dead week you will present your project to your TA and fellow classmates. Your demo should be about 15 minutes in length with an additional 5 minutes for questions (20 minutes total). You may prepare a power point style presentation or video if you would like, but that is not required. During your demo you should clearly show how your project works and what it is capable of. This is your time to show off what you have done and there will likely be incentives for the class voted best project in each lab section.
Your proposal shall be submitted through blackboard by midnight on the due date for your section (see timeline below). All other material including the final report and source code shall be submitted using the project repository on GitHub. All deadlines (see timeline below) are set in stone and will only be changed on an individual basis due to extenuating circumstances.
The final project will be due during your lab section on finals week. You will have three weeks to complete this project with week one starting April 6th. Lab during week one and two will be dedicated to the final project. Week three will be a regular lab week on operating system security, and week four (dead week) you will present to your lab section your project. Below is a list of due dates:
- Section A:
- Proposal on Blackboard due 4/7/2015 by midnight
- Work in lab: 4/7/2015
- Work in lab: 4/14/2015
- Security lab: 4/21/2015
- Present: 4/28/2015 in lab
- Final Report: 4/28/2015 by midnight
- Section B, C, E:
- Proposal on Blackboard due 4/8/2015 by midnight
- Work in lab: 4/8/2015
- Work in lab: 4/15/2015
- Security lab: 4/22/2015
- Present: 4/29/2015 in lab
- Final Report: 4/29/2015 by midnight
- Section D:
- Proposal on Blackboard due 4/10/2015 by midnight
- Work in lab: 4/10/2015
- Work in lab: 4/17/2015
- Security lab: 4/24/2015
- Present: 4/31/2015 in lab
- Final Report: 4/31/2015 by midnight