Computer Science 110
Intro to Computer Systems
Syllabus -- Spring 2001
Professor: Mike Erlinger
Office: Olin 1249
Phone: x-18912
E-mail: mike@cs.hmc.edu
Meeting Times: Tuesday & Thursday 2:45-4:00 PM
Meeting Place: Edwards
Graders:: cs110 Tim Morgan, Dave Jones, Andrew McDonnell, Sam Ahn
Tutors:: email to: cs110helpl@cs.hmc.edu
Tutors:: Andrew McDonnell - Tues 4:00 until dinner
Tutors:: Sam Ahn - Fri 9:00 until 12:00
Secretary: Nancy Mandala, Olin 240, 621-8225, (Part-Time: 1-5pm)
Catalogue 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
(including multiplication,
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.
Course Texts
I did order texts through Huntley Bookstore,
but I also 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 below will take you directly to
Amazon.com's web site to order that book, or any other book.
Any book purchased via one of these links will generate
a 15% commission for the Computer Science department, which
will be placed in the CS student activities fund (pepsi).
The money will directly benefit
neither the faculty nor the department,
but rather is used for various student activities.
There are obviously other places to purchase books,
e.g., bookpool.com,
so do what is best for you.
|
Operating System Concepts, 5th Edition,
by
Abraham Silberschatz & Peter Baer Galvin,
Addison-Wesley,
ISBN 0-201-59113-8.
|
|
|
Sparc Architecture, Assembly Language Programming, and C,
2nd Edition
Richard P. Paul,
Prentice Hall,
ISBN: 0130255963.
|
|
Other Related Texts
|
UNIX Network Programming,
by W. Richard Stevens,
Prentice Hall,
ISBN 0-13-949876-1.
|
|
|
UNIX Network Programming Volume 2: Interprocess Communications -
by W. Richard Stevens
Prentice Hall,
ISBN: 0-13-081081-9.
|
|
|
Interprocess Communications in UNIX,
the Nooks and Crannies,
by John Shapley Gray,
Prentice Hall,
ISBN 0-13-899592-3
|
|
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 which
investigated computer systems both from an architecture viewpoint
and
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 underpinings of the computer system,
e.g., subprogram call and execution, process context switch.
S&G mention this symbiosis
in their introduction,
"The operating system must ensure the correct operation of the computer
system. To prevent user programs from interfering with the proper
operation of the system, the hardware must provide appropriate
mechanisms to ensure such proper behavior.
We describe the basic computer architecture that makes it possible
to write a correct operating system."
They provide a quick look at computer architecture in their early
chapters. We will spend more time on architecture,
using the SPARC as our example.
Lecture Style & Learning
My lecture style is a combination of overheads and the board.
I will hand out some of the slides but NOT all the slides.
My belief is that taking notes is a good learning vehicle
(maybe it is my age - grew up using coal and parchment).
Lectures are driven by student participation.
If you don't ask questions, then I tend to hurry through the
material. In the past, I have tended to asked questions of the
class as a whole. This semester I plan on moving to a style of
asking individuals. We will see how well this goes...
I do NOT attempt in lecture to put everything in such an orderly
manner, that you do NOT have to think.
One of my goals is to force you to order the material into
an understanding of a computer system.
The Web page and Calendar will be constantly updated.
The outline below lists the general topics and the approximate
lecture time on each subject.
Each year, I try to change parts of the class, so the detailed outline
is never the same, e.g., this year there will be two new projects.
If you check the Web page and the Calendar, you will find that I will
try to keep it detailed for the next two weeks.
Learning
One of the best professors I ever had,
Dave Martin of UCLA, indicated that
abstraction and synthesis
are the most difficult of all topics for students to put into
practice.
This course tends to talk about a number of isolated features
of operating systems and computer architecture.
The nature of the course is to treat many of these as system
abstractions.
While all these features are important in themselves, my goal
would be for you to be able to synthesize these into a system
and to apply the various abstractions to different system
features.
The projects are the vehicle to accomplish this.
Thus with a little thought you can use the Dining Philosophers
and the Barber Shop to understand different system concepts,
e.g., memory management and device drivers.
Projects
I do not know how to force you to start projects early.
There are listed penalties for being late, but this continues
to be an issue.
The Books
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
-
Operating System Concepts -
A solid book on the basics of operating systems.
Used by many schools as the text for the first
OS course.
Has much of the OS centric lecture material
and many homeworks will come from here and
from one of Tanenbaum's OS books.
-
Sparc Architecture, Assembly Language Programming, and C -
One of the only books to focus on the Sparc architecture.
I have tried general architecture books with machine simulators,
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
pages obscure.
-
UNIX Network Programming Volume 2: Interprocess Communications -
A new version of the old book. Actually there are now 3 volumes. I
prefer the old book simply because I know where things are.
Requirements and Grades
Students will be responsible for
the usual projects, homeworks, quizzes,
and tests,
with
abstracts being a new activity.
Students are also responsible for adding themselves
to the course email list, cs-110-l@hmc.edu
Students are responsible for reading the web page:
http://www.cs.hmc.edu/courses/1999/fall/cs110/index.html
I 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,
both inclass.
In the past,
I 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:
My view of each of these:
-
Quizzes - randomly given during the semester.
Indicate whether the class is keeping up and
whether the lecture material has been understood
completely.
Not announced, and no makeups.
-
Homeworks - provide a means for me to determine that you are
at least keeping up with the course activities.
-
Projects - mostly programming, allow you to experiment with
the course material, language features, and OS services.
Some of the projects are both long and difficult.
-
Abstracts - allow you to review the course related technical
publications.
Training in reading the literature with a
"critical eye"
-
Tests - create stress in the students and demonstrate
procrastination in the faculty.
-
Attendance - 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 (thats you).
Thus, we will take attendance a few times during the semester.
Program Demonstrations
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 might consider using RCS to control your versions.
Collaboration Policy
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
and the
Computer Science Honesty Statement .
If you have any questions
about what is appropriate or inappropriate collaboration, please talk
to me.
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.
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.
ISSUES
-
The Homeworks will NOT always be obvious answers from either the
lecture or the readings.
The idea is for you to go beyond what was covered and think about
things yourself.
-
Project 5, Threads, is consciously NOT covered in class. You have
learned enough about processes and operating systems from class,
that you should be able to read about Threads and apply what you
learn to an implementation.
-
Off-campus students lose on the printed out papers. I do not have
enough copies to put binders in all the libraries. Feel free to
come to HMC and use the library. You will NOT find it crowded with
mudd students.
-
I assume that you read the book, and will quiz on material covered
there and not by me.
-
Abstracts take time, but I think you should be reading one or more
technical articles each week. Therefore I consider abstracts general
CS activity (better than games or web surfing). I am just asking you
to document something that you are doing anyway....
-
Web pages. I view Web page errors and/or ambiguity as YOUR problem.
You need to tell me about the issues rather than wait until the
end of the semester.
Order of Topics
-
History of, and Introduction to Operating Systems,
OSC 1, 2, 3, & 24.
- (~1.5 lectures)
-
Processes, IPC, and Scheduling,
OSC 4, 6, & 5.
- (~6 lectures)
-
Deadlock,
OSC 7.
- (~1 lecture)
-
Introduction Computer Architecture,
Paul, 1.
- (~1 lecture)
-
Instruction Sets, Sparc,
Paul, 2.
- (~1 lecture)
-
The Stack, Data Structures, & Subroutines
Paul 5, 6, & 7.
- (~3 lectures)
-
Memory and Virtual Memory,
OSC 8 & 9;
Paul, 11.
- (~4 lectures)
-
Caches,
Paul, 11.
- (~2 lectures)
-
I/O,
OSC 12 & 13, Paul 10.
- (~3 lectures)
-
File Systems,
OSC 10 & 11.
- (~2 lectures)
-
Threads,
Sun Manuals
- (~1 lecture)
-
Digital Logic & Binary Arithmetic,
Paul 3 & 4.
- (~1 lecture)
Changes
-
Add a step after each project in which the class reads the
'reference' implementation and comments on parts of it.
-
Before each section come up with a set of problems to be
answerable after the lectures. Make sure that students know that
they will be answering them...random selection.
-
Set up labs on each of the projects, where design and implementation
issues are discussed.
-
Come up with a 'drop-dead' policy on lateness....
Last modified Jan 21, 2001 by mike@cs.hmc.edu