There will be no lab on 3 or 5 September 2025.
Please read this page with details applicable to all my courses.
This course is an introduction to the fundamentals of operating systems.
Topics include the various strategies used by operating systems to manage computational processes, including particularly their CPU, memory, and storage dimensions. We will cover these topics through three key paradigms: virtualization, concurrency and persistence.
The material is not simple, but if you are diligent in keeping up to date on the reading and attending the class discussions and participating, you should find it relatively easy to learn the required bits.
CS 2253 and one of CS 2263 or CS 2617. You also need to have 70 credit hours completed in the CS degree program.
Be able to explain the role of an operating system.
Have a general sense of how operating systems were initially developed and how they have evolved.
Be able to explain how virtualization works in the context of CPU, memory, and storage management.
Be able to explain how concurrency, and its various forms of implementation, is achieved by an operating system.
Be able to explain how persistence, and its various strategies of implementation, is achieved by an operating system.
Be able to explain the core security risks inherent in an operating system, and some of the key methodologies for managing these risks.
Be able to apply the above knowledge effectively in other realms of computer science, particularly software design and development.
Lectures and class discussions will be on Monday and Wednesday afternoon from 13:00 to 14:20 in Oland Hall 105. There will also be labs on most Wednesdays from 16:00 to 17:50 (for students in Section 1) and Fridays from 14:30 - 16:20 (for students in Section 2), both in Hazen Hall 326.
All lab sessions will be conducted by Sonal Joshi.
These sessions will be in-person as a default, but we may mix it up with the occasional online meeting.
Please consult the CS 3403 Course Schedule page for detail on the various meetings, required reading, and deadlines for the course. This page will be adjusted and/or updated as we proceed through the term.
We will use the excellent (and free!) online book "Operating Systems: Three Easy Pieces" (OSTEP) as the textbook for this course. It is a well written and highly readable text.
We will cover a lot of ground. It is very important that you do the required reading as we proceed through the material, preferably before the applicable class meeting where the material will be covered.
Our meetings on Mondays and Wednesdays will not be a detailed regurgitation of the material covered in the book. I will hit the important aspects of each topic, and will then leave it to you to fill in the blanks by completing the required reading. If you don't understand something, please ask questions!
For the topic overview each meeting, I will use slides, and will link to all slides and any other referenced material on the CS 3403 Course Schedule page.
Keeping up with the required reading and attending our meetings and labs will lay a foundation of knowledge, with which you will then be able to successfully complete the exams.
Your proficiency in understanding and applying the material will be assessed as follows:
> 10 labs, at 3 points each, for a total of 30 points.
> One midterm exam, worth 25 points.
> One cumulative (i.e. covers all material in the course) final exam, worth 45 points.
There will be no assignments in this course. We will instead use the labs to examine and play with various concepts important to the learning objectives of the course. The labs will usually consist of a set of small programming tasks.