This course covers the theory and implementation of operating systems. You will start working with Unix Signals and Processes to become familiar with these important ideas.
There will be a number of Minix Projects. Each project will have a number of components. These are the kind of steps that any mature software organization will use to manage their software effort.
| Mechanism | Where is this done? |
| Proposal | Short writeup, including test plan |
| Tests | Actions we can take before and after to validate project |
| Implementation | Actual code that compiles, runs, and passes tests |
| Evaluation | What worked? What was hard/easy? What could be done better? |
We will want to do some simple challenges at the start, so everyone can start with a solid foundation, but you don't have to do all parts of all projects: you may build on the work of others. You will need to give credit to those you have built upon. As the semester progresses, I may make some components of your project public to allow others to build on your work.
Not all projects are equally hard.
Part of proposal will be estimating the difficulty of the project.
These brief thumbnails will act as marketing input: part of your task
is to make the requirements clearer.
We will be adding to this list as the semester continues.
You will be encouraged to assist each other in learning C and Minix, and discussing alternative strategies for the challenges.
It is expected that all work you submit is your own. If you have any questions about these expections, please see me.