Computer Science 110
Architecture and Operating Systems Systems
Syllabus -- Spring 2001

Professor: Geoff Kuenning
Office: 1251 Olin
Office hours: M 2:30-3:30, Tu 2:30-3, W 2:30-4
Phone: 71610
E-mail: geoff@cs.hmc.edu
Course home page: http://www.cs.hmc.edu/~geoff/courses/cs110
Course mailing list: cs-110-l@hmc.edu.
Meeting times: M/W 1:15-2:45
Meeting place:Beckman B126
Graders: Annie Chang (achang), Chip Bradford (cbradford@hmc.edu), Kylie Evans (kevans), and Chris Lee (clee)
Secretary: Joyce Greene, 1240 Olin, x18225

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 (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

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 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 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, e.g., bookpool.com, so do what is best for you.

Modern Operating Systems, 2nd Edition, by Andrew S. Tanenbaum, Prentice Hall, ISBN 0-13-031358-0. Buy the book from
Amazon.com
AND
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 that 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 underpinnings of the computer system, e.g., subprogram call and execution, process context switch.

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/~geoff/classes/hmc.cs110.200201/index.html

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

More on each of these:

Quizzes
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.
Homeworks
Provide a means for you and 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. They are not just programming projects, in that their implementation can be viewed as an OS subsystem.
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 (that's you). Thus, I 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 should consider using make and RCS to control your projects.

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. 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