Computer Science 110
Architecture and Operating Systems Systems
Syllabus -- Spring 2001
Catalog Course Description
Introduction to computer architecture and operating system services,
digital logic (adders, latches, multiplexors), binary encodings
(two's complement, one's complement), computer arithmetic
division, floating point), hardware description languages, basic architecture (machine language, processor operation,
instruction decoding), processes (interprocess communication, scheduling, and deadlocks), programs (procedure calls
and activation records), memory hierarchy (caches, virtual memory, paging and swapping), and I/O (files, devices,
drivers, interrupts and traps).
Prerequisite: Computer Science 60 & 70. 3 credit hours.
We have a continuing
relationship with Amazon.com
in that there
is a link from the course web page to Amazon.com.
Please note: Clicking on one of the Amazon links above will take you
Amazon.com's web site to order that book, or any other book.
Any book purchased via one of these links will generate
a commission for the Computer Science department, which
will be placed in the CS student activities fund (Pepsi account).
The money will directly benefit
neither the faculty nor the department.
There are obviously other places to purchase books,
so do what is best for you.
Modern Operating Systems, 2nd Edition,
Andrew S. Tanenbaum,
Sparc Architecture, Assembly Language Programming, and C,
Richard P. Paul,
Other Related Texts
UNIX Network Programming,
by W. Richard Stevens,
UNIX Network Programming Volume 2: Interprocess Communications -
by W. Richard Stevens
Interprocess Communications in UNIX,
the Nooks and Crannies,
by John Shapley Gray,
What Is This Course About?
Historically, computer architecture and computer operating systems
have been taught as two separate courses.
As a department we felt that these two subjects are tightly coupled
in many areas, e.g., memory management, process management,
inter-process communication, etc..
We decided that a course that
investigated computer systems both from an architecture viewpoint
from an operating system viewpoint would provide our students with
a more integrated view of computer systems.
This course investigates various areas of computer architecture
and operating systems with the integration point
centering on the
cooperation of the hardware and software to provide
the underpinnings of the computer system,
e.g., subprogram call and execution, process context switch.
Since this is a unique course we will be taking material
from a number of places.
Thus, there are a number of books
which you might consider purchasing
Modern Operating Systems -
A solid book on the basics of operating systems.
Each text is used by many schools as the text for the first
This book has much of the OS-centric lecture material,
and many homework problems will come from it.
Sparc Architecture, Assembly Language Programming, and C -
One of the only books to focus on the Sparc architecture.
We (Mike & Geoff) have tried general architecture books with
but there is nothing as 'educational' as a real machine.
UNIX Network Programming -
An older book, but one of the best on how to use OS
facilities like semaphores, shared memory, etc.
Makes sense out of the material that manual
UNIX Network Programming Volume 2: Interprocess Communications -
A new version of the old book. Actually there are now 3 volumes.
Requirements and Grades
Students will be responsible for
the usual projects, homeworks, quizzes,
abstracts being a new activity.
Students are also responsible for adding themselves
to the course email list,
Students are responsible for reading the web page:
I (Geoff) am happy to take messages about problems with the web page.
No matter how much time I spend on it, there is always something wrong.
Make sure to read the
course late policy.
There will be two exams during the term.
In the past,
we have found that in most cases,
the exams are
the separator as far as grades.
The relative weighting scheme of
the course work and grades will be as follows:
More on each of these:
- Randomly given during the semester.
Indicate whether the class is keeping up and
whether the lecture material has been thoroughly
presented. Not announced, and no makeups.
- Provide a means for you and me to determine that you are
at least keeping up with the course activities.
- Mostly programming, allow you to experiment with
the course material, language features, and OS services.
Some of the projects are both long and difficult.
They are not just programming projects, in that their implementation
can be viewed as an OS subsystem.
- Allow you to review the course related technical
Training in reading the literature with a
- Create stress in the students and demonstrate
procrastination in the faculty.
- Yes, folks, we want you in class.
Having been free and easy on attendance in the past,
we have found that lecture needs the detailed questions provided
by the attendees (that's you).
Thus, I will take attendance a few times during the semester.
For some of the projects, we will request that you demo your
program to one of the course graders.
Usually these demonstrations take place sometime after you
have turned in your program.
A key point to remember is that we want you to demo the
version of the program that you submitted as your project.
We realize that sometimes people discover fixes after turning
in their projects, but the version we want to see is the version
turned in as the project.
Note, you should consider using
make and RCS to control your projects.
Collaboration is encouraged. This means that you may
discuss approaches to solving problems with anyone in the class,
including professors, classmates, graders, etc.
However, copying solutions from any source (web, person, or book) is
not allowed. All students are expected to conduct themselves in
accordance with the Harvey Mudd Honor Code
Computer Science Honesty Statement .
If you have any questions
about what is appropriate or inappropriate collaboration, please talk
To encourage collaboration and to assist you in debugging your programs,
we would like each of you to team up with someone else in the course.
Your buddy is there as a first line of support for this course, in
particular the projects. The faculty and the graders are available
to assist you, but as you may have heard some of the projects are
long and difficult. We believe that your buddy should be the first
person that you seek help from. This will improve both of your
abilities to debug code. Again, each of you are to turn in your
own work, but help each other.
As far as debugging projects, we will first ask you whether you have
discussed your problems with your buddy. If the answer is NO
then we will politely tell you to go find her.
Most of the projects are modifications of previous projects.
You are encouraged to talk to former CS110 students, but you
are not to use any of their code, e.g.,
if someone from a previous year created a semaphore library,
you can talk to them about that library, but you are NOT to
use the library in your project.
Order of Topics
History of, and Introduction to Operating Systems,
Tanenbaum 1 & 12.
Processes, IPC, and Scheduling,
Introduction Computer Architecture,
Instruction Sets, Sparc,
The Stack, Data Structures, & Subroutines
Paul 5, 6, & 7.
Memory and Virtual Memory,
Digital Logic & Binary Arithmetic,
Paul 3 & 4.