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. Buy the book from Amazon.com
Sparc Architecture, Assembly Language Programming, and C, 2nd Edition Richard P. Paul, Prentice Hall, ISBN: 0130255963. Buy the book from Amazon.com

Other Related Texts

UNIX Network Programming, by W. Richard Stevens, Prentice Hall, ISBN 0-13-949876-1. Buy the book from Amazon.com
UNIX Network Programming Volume 2: Interprocess Communications - by W. Richard Stevens Prentice Hall, ISBN: 0-13-081081-9. Buy the book from Amazon.com
Interprocess Communications in UNIX, the Nooks and Crannies, by John Shapley Gray, Prentice Hall, ISBN 0-13-899592-3 Buy the book from Amazon.com

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

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:
Quizzes (4-5): 5%
Homeworks (6-8): 15%
Projects : 50%
Abstracts : 5%
Tests : 25%

My view of each of these:

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

Order of Topics

Changes

Last modified Jan 21, 2001 by mike@cs.hmc.edu