CSE306: Operating Systems (Spring 2006)
Scott Stoller

Course Description

This course covers essential topics in the design and implementation of operating systems. A list of topics appears in the following table, along with the corresponding readings in the course textbook, which is:

William Stallings, Operating Systems: Internals and Design Principles, 5th edition, Prentice Hall, 2005.

Introduction to OS; Background on Computer Organizationchs. 1-2
Processes and Threadschs. 3-4
Synchronization, Deadlock chs. 5 except Message Passing (section 5.6), Appendix A.1 (only Peterson's Alg., not Dekker's Alg), 6.1-6.6
Memory Managementchs. 7-8
Processor Schedulingch. 9
I/O, Filesystems chs. 11-12 (except Disk Scheduling Policies, pp. 496-501)
Distributed Filesystemssee below

Unfortunately, the course textbook does not have a chapter on Distributed Filesystems. For this topic, you should refer to the chapter on Distributed Filesystems in any reasonably recent edition of either of the following textbooks, both of which are available in the Computer Science Library: Silberschatz and Galvin, Operating System Concepts; Coulouris, Dollimore and Kindberg, Distributed Systems.

For information about how this course relates to the objectives of the Computer Science B.S. program, please see the entry for CSE306 in the Mapping of Program Objectives to Course Objectives.

Course Work

The numbers of assignments are tentative.

Administrative Info

Meeting Time and Place: Tuesday and Thursday, 2:20pm-3:40pm. Light Engineering 152.
Instructor's Office Hours: Mon and Wed, 10am-11am, and by appointment and chance.
Credits: 3

Teaching Assistant: Jiawu Chen
TA's Office Hours: Fri, 3:30pm-4:30pm, and by appointment. TA Desk 5 in Computer Science 1207


The Discussion Forum contains announcements and discussion. Read it regularly, and post your questions (and answers to other people's questions) there.

I occasionally use Blackboard's email feature to send urgent announcements, so please set your preferred email address in Blackboard.

Project: Nachos

Note: All of the software mentioned below is free.

The project descriptions are available in Blackboard under Assignments.

Here are the source code and documentation: Nachos-SBU

You will need to use a cross-compiler (see the proj2 description for details). The cross-compiler is available in the UG Lab in ~cse306/mips-gcc/.

There is also a cross-compiler that runs on Windows. To use it, you must also download cygwin1.dll and put it in a directory in your PATH. You might want to get an entire Cygwin distribution; it's free and contains lots of useful stuff (such as make and ssh, mentioned below).

There is also a cross-compiler that runs on Linux and a cross-compiler that runs on Mac OS X.

The official Java implementation for this course (i.e., the one used during grading) is Sun JDK 1.5.0 (also called 5.0). It is installed in the UnderGrad Lab. You may use other compilers and run-time environments during development, but you should ensure that your code compiles and runs under Sun JDK 1.5.0 before submitting it.

Learning to use a debugger is well worth the small initial investment of time. Options include debuggers built into an IDE, such as Eclipse or Netbeans, or a stand-alone (graphical) debugger, such as JSwat.

You might also want:


Exams. During exams, you may use the course textbook, your own notes, handouts that were distributed in class or posted on the course web sites (other than the Nachos code), and a dictionary. You may not bring someone else's notes or a mechanical reproduction of all or part thereof. You may not bring a different textbook or a mechanical reproduction of all or part thereof.

Grading. Each assignment is graded relative to some maximum number of points (e.g., 20). The maximum number of points is unrelated to the weight of the assignment in the course grade. Each score is normalized into a number between zero and one (e.g., 19/20 -> 0.95) and then multiplied by the weight of the assignment to obtain a weighted score. Course grades are based primarily on the sum of the weighted scores.

Grading of Teamwork. Each project assignment will receive a score reflecting the quality of the work. At the end of the semester, each team member's score for that assignment will be computed by multiplying that score by an individual contribution factor (ICF) that reflects the team member's overall contribution to the team effort for the entire semester. Ideally, every team member will contribute equally to the overall effort. In that case, every team member's ICF is 1, and every team member receives the same scores for all projects. If some team member's overall contribution was, for example, only 90% of his or her fair share, then that team member's score for each project will be computed by multiplying the original score for the project by that team member's ICF of 0.9. A team member who contributes more than his or her fair share will have an ICF larger than 1. We will evaluate each team member's contribution using all available information, including the summary of contributions in the README of each project assignment.

You are responsible for ensuring that you contribute to the team effort. If you believe that your teammate is preventing you from contributing, discuss the situation with the instructor immediately. If you wait until near the end of the project, it will be too late to remedy the situation, and your ICF will be low.

Integrity. All students are expected to follow CEAS's policies governing academic dishonesty. Suspected academic dishonesty will be reported to CEAS's Committee on Academic Standing and Appeals (CASA). If you submit anything that includes any material created by other people, your submission must clearly indicate the sources of all such material. Failure to indicate the sources will be treated as plagiarism. Discussing assignments with other people is fine. However, each person must write his or her own submission independently. Showing your own work to other students, giving it to them, or making it accessible to them (e.g., by making the files world-readable, intentionally or through carelessness) will be treated as academic dishonesty.

Disabilities. If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Center for Disability Support Services (DSS) in the ECC Bldg, 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.

Submission of Assignments

Assignments that do not involve programming should be submitted on paper in class on the due date, unless the assignment specifies otherwise. Assignments submitted after the end of class on the due date are late and receive a -3% penalty. Assignments submitted the next day receive a -6% penalty, and so on.

Programming assignments are due at 11:59pm on the due date and should be submitted via Blackboard. Click on Assignments (in the menu on the left), click on View/Complete, attach a zip file containing your assignment, and then click on Submit.

Grading Weights (Tentative)