CSc 335
Operating Systems


Course Instructor: Prof. Chris Fernandes
Office Hours: M 12:30-1:30, T 10:30-11:30, Th 10:30-noon, F 1-2 or anytime my door's open!
Office: 229 Steinmetz Hall
Phone: 388-6401
Course Webpage:

Text (1 required). Available at the Bookstore:

Silberschatz, Galvin, Gagne, Operating System Concepts. 7th edition, Wiley, 2005.
(There's an 8th edition, but the changes aren't worth buying it new. All readings will be from the 7th ed.)

A C++ reference manual is recommended. Two are available at the bookstore: Ray Lischner, C++ in a Nutshell. O'Reilly and Associates, 2003.

Jesse Liberty, SAMS Teach Yourself C++ in 24 hours, Complete Starter Kit. SAMS, 3rd edition, 2001.

Course Goals

The purpose of this course is for you to understand the most important concepts and systems associated with a modern operating system (OS). The goals of this course are:

Topics to be covered include:

The best way to understand an OS is to build one yourself, so this course is primarily a programming course. You will be writing code in the C/C++ language on the antipasto Linux server. Thus, an indirect goal of this course is for you to practice becoming proficient in a programming language and OS environment with which you may not already be familiar. The ability to independently learn new languages and environments is a skill every Comp. Sci. and Comp. Engg. should have.


Computer Organization (CSc 270 (210)) is necessary since the OS interacts with hardware a lot. You'll need to remember what things like registers, the system stack, the program counter, and the ALU do. You will also occasionally need to understand assembly language for the programming projects.



Academic Dishonesty

Students often have some confusion about what might or might not be considered "cheating" in a computer science class. In general, you should take advantage of your instructors and fellow students in working out solutions to assignments. This especially applies to C++ and Linux issues. You should be working together (either physically or virtually) so you can ask each other questions like, "what does this compiler error mean?" or "how do you do X in C++/Linux?" As always, however, you should not be using other people or the Web as a crutch. There is a point at which working together becomes plagiarism. As a rule of thumb, feel free to discuss general solutions to problems, but the writing down of an actual solution must be done solo by you. Two (or more) people should not be creating a single piece of code. That's plagiarism. Looking at someone else's code "for inspiration" is also plagiarism. So is copying code off the Web. If you have any doubts, talk to me before turning in the assignment. In all cases, you must give credit to any source (like a written work or help from some individual) that you use to help complete an assignment.

What you need to do

To prepare for class, you are required to do the following:

The Bottom Line

Ask questions and seek help. This is the most important point of all. I live to answer questions. Don't be afraid to come to my office every single day if you want. It's better for everybody (you AND me) if you understand things sooner rather than later.

Any student with a documented learning disorder is welcome to come talk to me privately about options for completion of exams and homework assignments.

CSc 335 homepage