Course at a glance
- Fall 2018: Class meets Mon and Wed 4:30-5:45 pm in Crane Room, Paige Hall.
- Instructor: Alva Couch
- Office: Halligan 246
- Office hours:
- Monday and Wednesday 9:30-11 AM and 6:00-7:30 PM
- And by appointment; email me
or catch me after class.
- Email: firstname.lastname@example.org
- Phone: +1 (617) 627-3674.
- Teaching assistants:
- Stallings, Operating Systems, Ninth Edition,
- Kernigham and Ritchie, The C Programming Language,
second edition, Prentice-Hall (recommended).
- Ability to program in some high-level language (e.g., C, C++, Java, ...)
and willingness to learn the C language. You must be familiar with basic data structures,
including stacks, queues, trees, and graphs.
- Some exposure to computer architecture, such as that provided by
EE14 (Microprocessors) or Comp40(Architecture).
- Course Requirements
- Weekly individual assignments (40% of course grade)
- In-class group exercises (10% of course grade)
- Two closed-book quizzes (7% and 8% of course grade)
- Open-book midterm and final exam (15% and 20% of course grade)
An "operating system" is a program that controls the overall function
of a computing system, including managing the execution of other
programs. In this course, we will study all aspects of operating systems,
We will build to the last goal through complete and thorough pursuit
of the others. During the course, the first three goals will be
intertwined and inseparable; practice follows theory and code must
be based upon algorithms conformant with the theory.
- Theory and algorithms: how does an operating system work, and why?
- Interface and manipulation: how can one control an existing operating
system to do what one wishes?
- Implementation and practice: how does one write parts of an operating
- Literacy: how can one read and understand existing operating system
We will rather strictly follow Stallings, except that lectures will
focus upon the specifics of Linux/UNIX rather than the more general
treatment in the book. Also, you will (hopefully) find the course notes
to be a valuable online resource, and several lectures are based directly
upon the linux online manual (available on any workstation).
Frequently asked questions about textbooks:
- Q: Is the edition of the book important? Can I, e.g., buy the 8th edition instead.
A: Frankly, there is not much difference.
There will likely be one assignment from the
textbook. There are very minor changes between the eighth
and ninth editions. You should get a copy of the true
assignment from the ninth edition, if you buy a seventh
- Q: Is an electronic copy of the textbook sufficient?
A: No. There are two open-book examinations. I am not
likely to make them "open laptop", so you will need a physical copy
of the book.
- Q: How do you use the book?
A: I actually follow it quite closely, but do not lecture on absolutely
everything in the book, and leave it to you to read those sections.
I post complete transcripts of online lecture notes as well. It is best to read
the online lecture notes before a lecture and the book sections
after the lecture.
- Q: What do you think of the online solution manuals for the book?
A: In past experience, they have proven to be both very out of date and wrong!
In my opinion, they contain grevious errors and do more harm than good!
Prerequisites for this course include some course in architectures (e.g.,
either EE14 or Comp40) as well as competence in some high-level
programming language such as Java or C or C++. UNIX and Linux are
written in C for some rather good reasons; we will thus be writing C
code during the course and will cover the details of C and its intimate
relationship to UNIX and Linux in the first few lectures.
The class this term is comprised of EE14 graduates and
Comp40 graduates. I will do my best to serve both populations. Note
that the differences between the prerequisite courses will give you
advantages in some things and disadvantages for others. For example,
Comp40 students have more programming experience, while EE14 students
tend to understand architecture better than Comp40 students. I will
assign projects that draw on the strengths of each population.
Frequently asked questions about prerequisites:
- Q: I want to take COMP111 and COMP40 (or EE14) at the same time.
Is this advisable?
A: Frankly, no. I start by assuming that you know everything
from COMP40 and/or EE14. I also assume that you are expert in the
prerequisites to COMP40 and/or EE14. I assume, in particular, an
expert command of data structures, including stacks, queues, trees,
and graphs. Basic runtime analysis is also used heavily, as covered
- Q: I am a graduate student who has neither taken COMP40 nor EE14. How
can I best prepare for the course?
A: COMP40 and EE14 actually prepare students for this experience in different and
To understand everything, you actually need both of these perspectives.
- COMP40 describes architecture from a performance perspective:
how can architecture make programs run faster?
- EE14 describes architecture from a systems design perspective:
how can components be put together to construct a working computer?
To prepare yourself without either COMP40 or EE14, it is best to collect gems
from both courses:
Of course, these are rather intimately related! (which is why either course is sufficient preparation for this one!)
- Expertise in how to make programs run faster (specifically in C).
For example, how to eliminate various forms of program
overhead, including stack frame creation and destruction,
how to improve memory management and localize memory
- Understanding of the building blocks of a rather vanilla
x86-based computer. For example, the positions and functions of
building blocks including memory caches, memory managers,
contexts, and so on.
While this may seem a little daunting, there will be substantive
review of things I need from COMP40 and EE14 as the course progresses.
I will begin by pulling concepts from COMP40, while the main
dependencies upon EE14 happen after the midterm. I hope the two
populations of students can help each other!
I can take some getting used to as an instructor, because I do not
function by the same rules as many other instructors. First, I do not
teach from authority. I do not consider myself smarter than you. In
fact, I am quite sure that you know more than I do about some things.
What I have to offer, instead, is 30 years of experience in the
discipline, and some proven approaches to developing understanding.
I do not teach from authority because I do not need to. Physical
law is my authority, and I can demonstrate everything I claim either
experimentally or mathematically. In a systemic and deep sense, I am
fundamentally a scientist, dedicated to the truth and to teaching you
how to find it for yourself.
This means that, among other things:
The last one of these is -- in fact -- the key to everything we will do.
- I am a random-access device. I can be asked about anything at any time.
Do not worry about putting me on the spot. If I don't know something, I will
simply find out about it, and enjoy doing it!
- I expect and greatly enjoy challenges and learning new things. If there is
something neat and cool (or perhaps "c00l" or "kewl") that you want to know more about, ask me! I hope to impress upon you the importance of adopting that attitude yourselves!
- You cannot bruise my ego by proving me wrong. My primary duty is to the
truth, and you can please and impress me by pointing out where I am wrong!
In fact, I will feel worse if you let me get something wrong without pointing
- You cannot hurt my opinion of you by showing me that you don't know
something. I will simply try to help you with it. You can increase
my opinion of you by showing me that you understand the limits of your
For assignments, we will be using the provide submission
system (that I wrote:). To submit an assignment for grading,
provide comp111 assignment files...
assignment is the assignment name (e.g.,
files... is a list of files to be graded.
To check on your grades for an assignment, type
for a summary report.
Grading and lateness
Assignments are graded on correctness, using a scale from 0 to 10. An
(automatic) lateness penalty applies for assignments turned in late;
this is typically one point deducted (10%) for each week late or
fraction thereof. If an assignment is due Wed at 11:00 pm, then one
point is deducted if it is turned in after 11:00 pm on Wed and before
11:00 pm on the next Wed. Two points are deducted if it is turned in
after that, and before the following Wed. Late penalties are not
incurred on holidays. Complaints about assignment grading must be
accompanied by working code and/or correct solutions:)
In-class exercises are graded on participation and effort.
Part of each exercise is open discussion with other class members.
Thus one may not turn in exercises late, because part of the
exercise credit is awarded for discussing the possibilities with others!
In this course, you are expected to work on your own on each
assignment. Working in groups on an assignment constitutes
plagiarism. Discussion is encouraged, provided that no code or
explicit answers are shown or copied. Plagiarism can be detected and
will be reported to the Dean of Students.
We will be going through the whole of Stallings, more or less in
order. Not all material in the book will be covered in lectures, but
you will be responsible for that material on exams. Instead, lectures
will include practical information on the relationship between book
concepts and Linux/Solaris. For a more detailed syllabus, click on
the "Timeline" link from the course homepage. Course lecture notes
are also available in real time from the course's OneNote
page, via the link on the home page. These update as I lecture.