The goal is an in-depth understanding of how an operating system
manages resources in a computer and provides programmers with a
machine and device independent interface.
There is a difficult and time-consuming programming project (GeekOS).
You are provided the source code (a few thousand lines of C and some assembly)
of a skeleton "Unix-style" operating system kernel for a PC-like x86 platform.
You have to understand a large part of this code
and augment it in various ways:
pipes, fork, signals, semaphores, cpu scheduling,
memory paging, file system, etc.
The x86 platform is simulated by QEMU.
The programming environment is Gnu/Linux.
Administrative stuff
A. Udaya Shankar
Email: shankar@cs.umd.edu (put "412" in the subject)
Office: AVW 4141
Office hours: TuTh 1:00-2:30 but easily extendable to 3:30pm (tell me)
One late submission:
One project can be turned in after the weekend
(when due Friday, it can be turned in on Monday).
The best way to use this is to submit both a regular submission
and a late submission for every project.
Then at the end you can choose which project (if any) to apply it to.
Minimum requirement:
To pass the course,
for each project you must pass a minimum number of public tests by
the last day of class (Dec 11).
This number will be given when the project is assigned.
Participation means asking good questions and/or answering questions well.
To make my life easier,
you will get these points only if you're just below a cutoff
(otherwise it doesn't matter).
Note the minimum requirement in projects.
The above percentages may shift slightly (at most ± 2% ).
Regrade requests must be submitted
within a week of the project grade being posted
or the exam being returned.
After that, they won't be processed.
Consider each programming assignment to be a take-home exam.
Do not expose your source code to others.
Do not leave it potentially accessible to others,
e.g., unlocked unattended laptop, publicly accessible websites,
unsecured servers, unsecure communications.
Do not look at another's source code.
This also applies to code from online searches,
e.g., Sourceforge, Stackoverflow, Google.
Interaction via course discussion forum is permitted.
Discussion of problems and code solutions is permitted as long as
you do not write down code during your discussion
and you wait at least 30 minutes after the end of the discussion
before you write code based on the discussion.
Do not wait for project or exam deadlines before asking your questions.
Piazza is not a replacement for office hours as far as getting responses
from staff is concerned.
Response times on Piazza will inevitably deteriorate as the semester goes by.
Early on, the projects are simple and your questions are relatively precise.
Later projects are more intricate and typically there is a flood of vague
questions (eg, "Why is this not working?") just before due dates.
It's unlikely you will get helpful answers to such questions in time
and on Piazza.
This also applies to questions about class material. Just before exams,
there is usually a flood of questions that should have been asked in
office hours or class when the material was covered.
Again, it's unlikely you will get helpful answers in time and on Piazza.