CPSC 410 / CPSC 611 -- Operating Systems (Fall 2011)

CPSC 410 / CPSC 611 -- Operating Systems (Fall 2011)

Section 410-501 / 611:

TR 12:45pm - 2:00pm

Instructor: Teaching Assistant:

Riccardo Bettati
509C Harvey R. Bright Bldg
Office hours:
T: 2:10pm-3:00pm
W: 11am-12pm
(and by appointment)
bettati cs

Suneil Mohan
514B Harvey R. Bright Bldg
Office hours:
T: 3:00-5:00pm (office)
W: 4:00-5:00pm (lab)
R: 4:00-5:00pm (lab)
suneil cs

TA-Page | Slides | Tests | Homeworks | Projects | Tutorials

Course Goals

The objectives of this course is to make you familiar with the general architecture and the most important components of modern operating systems. You will leverage your knowledge acquired in your previous courses on Computer Architecture and Computer Systems to understand (and to some level implement) aspects of operating systems, such as memory management, persistent storage and file systems, threading, scheduling, and resource management in general. You will understand fundamental approaches to virtualization and what it takes to build a distributed file system. We will discuss general aspects, realization approaches, and case studies in class. In addition, we will implement a simple operating system that will be able to boot and run on a bare PC.


This course requires an understanding of Computer Architecture (CSCE 312 or ECEN 350 or similar) and of Computer Systems (CSCE 313 or similar). In particular, we assume that you have (a) some understanding with interrupts from a hardware perspective, (b) some familiarity with low-level programming with some instruction set and (b) a good understanding of the theory and practice of multithreaded programming and synchronization.


Over significant portions of the course (see below) we will follow this textbook closely. Purchasing it for the course is therefore highly recommended.

Reference Material

These books complement the textbook. Perusing them may help you better understand some issues discussed in class. Some books, such as Silberschatz, may be used to complement some of the textbook material in the lectures.

Of course I never miss a chance to recommend the following bathtub reading to anybody with ambition to write decent code.


Class time will be partitioned into lectures proper and project sessions. During lectures we will be covering OS concepts and case studies. During the project sessions we will be discussing project assignments and the infrastructure needed for the projects.

We plan to go over the following material in this class, roughly in the following order:

Note: The items marked with a (*) not be covered in the textbook or will be covered in a significantly different fashion than in the textbook.

Reading Assignments

The material covered in this course is quite dense, and some time will be required for project discussions. Expect therefore that some of the material will have to be studied in form of reading assignments.


In this course we will not only talk about operating systems; we will actually build one (at least portions of it.) You will get into writing some rather sophisticated code. While doing this, you will realize that writing OS code is to programming your typical application like NASCAR racing is to driving your mom-in-law to Sunday brunch. If you need somebody to hold you by the hand (like, memory protection) you will be in really bad shape. You will either have to learn to live without, or you will write your own. But the fun part is that you will learn how to nurture a CPU (or multiple CPUs) from the moment it wakes up until it has access to sufficient support infrastructure to run user programs on its own.

Details about projects are being finalized and will be made available soon. Stay tuned.


There will be one midterm and one final examination. The midterm will be in-class, and the final will be during the allocated time during Final's Week.

All tests will be closed-book. You will be allowed one hand-written "cheat sheet" of size 8.5in x 5.5in. No other aids will be allowed, except for writing utensils.

Assessment Method

This couse will have two tests (200 + 250 = 450 points,) a series of projects (totalling 450 points,) and several homeworks (totalling = 100 points).

The grading scale looks as follows:

A: 901 - 1000 points

B: 801 - 900 points

C: 701 - 800 points

D: 601 - 700 points

F: 0 - 600 points

We expect that the projects (and perhaps the tests) will have some bonus points. These will be difficult to get, so don't count on them.

Note on Grading Scales: The exams are graded on an absolute scale, i.e. you are given up to 200 points for the midterm and up to 250 points for the final exam. Homeworks and Projects, however, are graded on a relative scale: Every homework will give up to 100%, same for the projects. The final grade is calculated by normalizing the homeworks relative to 100 points and the projects relative to 450 points. (For example, if you make 100% in all projects, you will receive 450 points.)

Late-Submission Policy

Machine problems and homeworks are to be handed in on CSNET. Make sure that you have access to CSNET. (Information on how to start with computing in the CSE Department can be found here, or, if it does not show, here.)

Note: The machine problems are very demanding, and they will require dedication and time.

All the submission deadlines have included extra time for the consideration of accidental events such as (not limited to) unavailable resource (machines are down,) sickness of students, stock market collapse, distress due to the Aggies loosing a game, etc. This means that additional extensions are generally not granted. The rule of the game: START EARLY!

Lateness is penalized with 1/5 of the earned points of the item per calendar day. After the due date (plus 5 days) no more submissions will be accepted. Also, no make-up work submissions will be accepted.

Communication Policy

Both the instructor and the teaching assistant for this course will do their best to communicate relevant administrative information (deadlines, information about posted material, details about projects, locations of tutorials, and so on) in an effective and timely manner. We will be using anouncements in class, e-mails to students, postings on the web site, material on CSNET (see here or here for information on how to get started with CSNET,) and discussions, chats, and posted grades on eLEARNING.

Having said that, keep in mind that this is not a distance education course! You are expected to be current with the material covered in class and with any announcements made in class. In fact, announcements in class will override whatever information has been made available through the other channels. The instructor and TA cannot be held responsible for not conveying important information to students who did not attend class.

Note on the use of eLEARNING: We will make some use of eLEARNING in this course. In particular, we will use it to host discussion groups and chats, and to post grades for your submissions. We expect discussion groups and chats to be primarily about projects, but they may turn out to be useful for general discussions and/or preparation for exams. You can access eLEARNING here. You will need your NetId to log into the CSCE 410/611 class.

Note on e-mail etiquette: E-mail is a very convenient and potentially effective way to communicate with instructor and TA, but only if used in a professional manner. Keep in mind that -- in particular when a deadline is looming -- we are receiving many e-mails, and all senders expect immediate turn-arounds. Therefore, keep your e-mail short and to the point; indicate that you have done some thinking *before* typing the e-mail; provide necessary support documentation (e.g. code sections) when needed (don't attach huge amounts of code!); follow standard basic rules for courteous and professional communication; proofread your e-mail before sending it out. We will not answer e-mail that does not follow these rules. Repeated offenders will be added to the spam filter.

Note on how to ask questions: Here are two links to collections of recommendations on how to best formulate and ask questions. (Note that the pages linked by the URLs below are not maintained by us, and neither us nor TAMU bear any responsibility for what you may encounter there.)
How to ask questions the smart way: http://catb.org/~esr/faqs/smart-questions.html.
How to report bugs effectively http://www.chiark.greenend.org.uk/~sgtatham/bugs.html.

Academic Dishonesty

It goes without saying that the highest level of academic integrity is expected for students in this class. While discussions among students on the analysis of problems and on the development of general solution approaches is welcome (encouraged, in fact; feel free to use the discussion groups and chats on eLEARNING) the realization has to be of the individual student. Spelled out, this means:

Whoever violates these rules can expect to fail this course. For information about the TAMU Honor Council Rules and Procedures check out the Aggie Honor System Office.

Disabilities Policy Statement

The Americans with Disabilities Act (ADA) is a federal antidiscrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires that all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. If you believe you have a disability requiring an accommodation, please contact the Department of Student Life, Services for Students with Disabilities in Cain Hall, Rm. B118, or call 845-1637.

These pages are prone to change without notice! Consult them regularly to avoid surprises.

Last modified: Sept 2011