Syllabus: CSCI 350, Fall 2001


We study the internal design and workings of operating systems through the study of Minix, an operating system for PC compatibles developed for educational purposes, and the historical predecessor to Linux. In our studies, we will concentrate on the boundary between the computer architecture and the operating system. You will learn a lot about the workings of a PC compatible!

The overall class is divided into three parts. The first will be introductory material: C programming, system programming, and x86 assembly language. The second and largest part concentrates on the concepts and design of Minix. In the final part, we'll look at network programming under Solaris.



This class will be very Thursday-intensive. Every time class meets on a Friday, an assignment is due. Every time class meets on a Thursday, a test will occur.

6 SepQuiz 1 14 SepAssn 1 due
20 SepQuiz 2 28 SepAssn 2 due
4 OctQuiz 3 12 OctAssn 3 due
18 OctMidterm 26 OctAssn 4 due
1 NovQuiz 4 9 NovAssn 5 due
15 NovQuiz 5 30 NovAssn 6 due
6 DecQuiz 6 17 DecFinal (11am)


The textbook is Tanenbaum and Woodhull's Operating Systems: Design and Implementation, 2nd edition. I anticipate using it heavily during class (mostly for the code listings in the second half). It is worth reading, though we will cover most of the material during classroom time.

I'll personally also be using Sargent and Shoemaker's The Personal Computer from the Inside Out, 3rd edition. You don't need it - I'll try to make sure we cover the details in class - but this book provides a good, detailed description of PC hardware, which is really necessary for understanding Minix and useful to know anyway.


Participation / in-class work 50
Assignments (80 pts each) 480
Quizzes (50 pts each, lowest dropped) 250
Midterm 100
Final 120
TOTAL 1000
I anticipate letter grades will be assigned on the traditional 60-70-80-90 scheme. I reserve the right to make adjustments in the entire scheme or for particular cases.

In-class work

Occassionally I may assign work to be done in class for a grade. When this is done, it will be worth up to six points. If you are absent, you will miss these points, and there will be no make-ups.


Assignments are a major component of this course. They are due at 2:40pm on scheduled Fridays. You lose 10 points for day that elapses thereafter, up to when class begins the Tuesday after the due date. At this point, I will not accept late assignments.

The assignments will be long, and the late penalty is firm. Start as early as possible to allow yourself the opportunity to recover from computer and personal problems. My assumption in planning assignments is that you'll find them so exciting that you'll begin working on them as soon as class ends!


Generally, the quizzes will test knowledge of material, while the midterm and final will emphasize ability to apply this knowledge. All tests are cumulative, although quizzes will tend to apply recent knowledge. I have a strong tendency to ask questions based on past quizzes and assignments.

I will write tests with regard only to my own standards; I anticipate, however, the median score on these tests will be around 75%.

Missing tests

I will not administer make-ups for missed quizzes. Note the lowest quiz will be dropped to give you some flexibility.

I am willing to administer make-ups for the midterm or final for good reason given advance notice. I strongly suggest notifying me at least 24 hours in advance. Do not attempt to earn any grades later than the scheduled time without my advance permission! My tolerance for after-the-fact notification is limited only to dire emergencies.

I will not administer the final outside the scheduled time except in extreme circumstances. You should notify me at the earliest possible time in such an event.

Plagiarism and groupwork

You may be accustomed to working closely with other students on assignments in other classes. But don't do that in this one.

Each assignemnt will explicitly lay down the rules about how you may work in groups. Do not work with others outside of this explicit structure. I should not be able to detect any similarity between different submissions. I will pursue such as cheating cases.

Of course, you are welcome to discuss general questions with other students. But do not share any part of your answer or any other group's answer until all answers have been handed in.

You must properly attribute any work or ideas you use in assignments for this course which are quoted or derived from others. Plagiarism includes not only copying the ideas and the written and spoken words of others, but also copying or otherwise appropriating their computer files as well. Interfering with the work of others including their use of computing facilities is also a serious academic offense. I will report all instances of plagiarism, cheating, or other academic misconduct to the appropriate Academic Dean, and I will give an F for that assignment or for the course at my discretion.


It's unlikely that many of us will ever write operating systems. So what can we gain through the study of them?

Operating systems constitute some of the largest software systems out there - and they represent software that works as close to the hardware as possible. Both of these aspects of operating systems are useful in a software development career, but you won't study them in traditional computer science courses. Through our study of operating systems, we should gain a greater understanding of both large-scale systems and low-level programming. Additionally, we will learn study approaches to problems arising in operating systems but which also arise in application programs.

I'm looking forward to this semester! I hope you find this material as interesting as I do. You should emerge from the experience a much more talented programmer, with a greater appreciation of operating systems and other large software systems. Enjoy the course, and make the most of it!