Spring Semester 2010

January 25, 2010 – May 7, 2010

Welcome to Operating Systems

You're in the right place if you want to improve your systems-level ("low-level") development skills. We'll dive down all the way to where ugly hardware meets ugly software in order to (hopefully) produce beautiful, efficient, stable, and secure systems for users. Abandon all hope ye who enter here? We'll see...


Catalog Description: This course covers the fundamental topics related to operating systems theory and practice. Topics include processor management, storage management, concurrency control, multi-programming and processing, device drivers, operating system components (e.g., file system, kernel), modeling and performance measurement, protection and security, and recent innovations in operating system structure. Course work includes the implementation of operating systems techniques and routines, and critical parts of a small but functional operating system.

Prerequisite(s): 600.120: Intermediate Programming, 600.226: Data Structures, 600.333: Computer Systems Fundamentals. (600.211: Unix Systems Programming is helpful as well.) Participants must be familiar with the UNIX environment and be fluent in the C programming language. The course includes significant programming projects; without prior development experience you'll probably get lost in a maze of low-level code.

Academic Honesty: It is your responsibility to adhere to the Department Integrity Code and other applicable university regulations. Feel free to email us your questions or concerns.

Universal Insecurity Clause: Whenever you are unsure about the requirements for a grade item, it is your responsibility to contact the instructor and ask for clarification as soon as possible.


Lecture: Monday, Wednesday, Friday, 11:00 am — noon
Location: 303 Shaffer Hall

Midterm (tentative): Wednesday, March 10, 11:00 am — noon
Final Exam: Tuesday, May 11, 2:00 pm — 5:00 pm