Programming Projects

CMSC 421, Fall 2004

Goals

The aim of projects in this course is rather simple -- to make you work with a real operating system (in our case, Linux) , and to understand how to modify and add functionality to it. Many of the ideas that underlie operating systems design, which we will cover in class, become clear only when used in practice -- in creating/coding a real operating system. Of course, we don't expect you to design a brand new one, just to add features to an existing one. Even though most of you will never design and implement an OS yourselves, the understanding you gain by knowing how to tweak an OS is invaluable as a tool in your other "complex" coding endeavors. The projects here will also allow you (and need you) to bring to bear all the skills you have learnt in the run up to this course -- programming skills from 201,202, and 341; basic hardware knowledge from CMSC 313 or CMPE 310 and 312; and software design skills that those of you who have done 345 would have ! picked up.

There will be three projects with the final project due towards the very end of the semester. The first two projects are designed to get you comfortable with installing and compiling Linux, and get used to the idea of modifying an OS which will actually run you machine. They are worth 25 and 75 points, respectively. The third and final project is the real deal -- you will be asked to add an interesting "new" feature to Linux. That will be worth 125 points, and you will get close to 8 weeks to implement it. Use that time wisely, almost all of it will be needed!

Project 1 (P1)

Points: 25
Released on : Sep 7th, 2004
Due               : Sep 23rd, 2004 (Extended from Sep 21st)

Project 2 (P2)

Points: 75
Released on : Sep 30th, 2004
Due               : Oct 20th, 2004

Project 3 (P3)

Points: 125
Released on : Oct 25th, 2004
Due               : Dec 14th, 2004