This is an undergraduate course on computer operating systems. (But only graduate students are permitted to be in this class. USC undergraduate students must take CS 350 in order to get credit for OS. If you are an undergraduate student, you cannnot be in this class and you cannot get credit for Operating System if you take this class. Please check with your adviser to see which Operating System class you need to take!) In addition to exploring concepts such as synchronization, virtual memory, processes, file systems and virtualization, students will develop elements of a fairly complete operating system during the course of the semester.
(If needed, the grader will hold office hours the week after the announcement of each assignment's grades.)
- 5/7/2025: Below is the link for starting the final exams.
The link will become active approximately 3 minutes before the exam start time and you can start working on the exam as soon as you have downloaded the exam.
- DEN section final exam start page (at [9:00:00am-9:40:00am) on Monday, 5/12/2025, USC time)
Plesae make sure you have done the following:
- watch the recorded DEN section live Lecture 18 on 3/12/2025 video (exam logistics were presented)
- use Quiz 7 as final exam rehearsal (for the real final exam, you cannot say that you submit late because you are not familiar with some of the exam procedure)
- submit your signed final exam academic integrity honor code pledge (you will not be able to download your final exam if I don't have a signed pledge from you and your final exam score will be zero)
No matter how late you start your exam, your exam must end at the same time as everyone else who is taking the same exam.
- 4/30/2025:
The final exam will be a 40-minute long take-home exam (open book and open notes),
and it will be conducted in the same manner as the midterm exam (please see live DEN section Lecture 18 on 3/12/2025 for the
exam instructions and replace the date and time with what's appropriate for your final exam).
No matter how late you start your exam, your exam must end at the same time as everyone else who is taking the same exam.
The final exam will cover everything from slide 30 of the 2nd part of Lecture 13 to slide 53 of the 2nd part of Lecture 15, PLUS, from slide 43 of the 2nd part of Lecture 17 to the last slide of Lecture 29. (A slide number refers to the number in the lower-right corner of a slide.) Also included are discussion section materials from Week 8 through Week 13.
Since the 2nd part of the course depends on stuff covered by the midterm, I cannot say that I will not ask anything covered by the midterm and you do need to know the material covered by the midterm. Therefore, it would be more appropriate to say that the final exam will focus on the material not covered by the midterm.
Regarding what types of questions will be on the exam, please see the Exams section of the course description web page. Regarding regrade policy, please see the Regrade section of the course description web page.
Please note that if you are asked to run the Stride Scheduling algorithm, to get any credit, you must run the algorithm described in the 2nd part of Lecture 28 (and not the one in the textbook).
Here is a quick summary of the final exam topics (not all topics covered may be listed):
- Ch 3 - Basic Concepts
- shared libraries
- Ch 4 - Operating-System Design
- devices
- virtual machines, microkernels
- Ch 5 - Processor Management
- threads implementation strategies
- threads implementations
- interrupts
- scheduler activations model
- scheduling
- Ch 6 - File Systems
- the basics of file systems
- performance improvements
- crash resiliency
- directories and naming
- RAID, flash memory, case studies
- Ch 7 - Memory Management
- virtual memory
- OS issues
- Kernel assignments 2 & 3
- discussion section slides
- spec
- FAQ
- my posts to class Google Group
- Ch 3 - Basic Concepts
- 12/3/2024: Please download, fill out, sign, and submit the Final Exam Academic Integrity Honor Code Pledge as soon as possible. Please understand that if I don't get a signed pledge from you, I will not send a final exam to you because I need you to promise me that you won't cheat before I can send you a take-home exam.
- 4/27/2025: Please download, fill out, sign, and submit the Final Exam Academic Integrity Honor Code Pledge as soon as possible. Please understand that if I don't get a signed pledge from you, I will not send a final exam to you because I need you to promise me that you won't cheat before I can send you a take-home exam.
- 4/17/2025: Quiz 7 will mainly focus on Discussions 10 & 11 and Lectures 21-24.
It will start at 3pm (USC time), on Friday, 4/18/2025. The starting point of your Quiz 7 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 7 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 4/18/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server.
- 4/2/2025: Zhuojin Li's office hour this Friday has been moved to 3:30-5:30pm.
- 3/31/2025: Quiz 6 will mainly focus on Discussions 8 & 9 and Lectures 17-20.
It will start at 3pm (USC time), on Friday, 4/4/2025. The starting point of your Quiz 6 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 6 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 4/4/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server.
- 3/20/2025: Below are the links for starting the midterm exams.
Currently, they are inactive/invalid.
They will become valid and active approximately 3 minutes before the respective exam start time and you can start working on the exam as soon as you have downloaded your exam.
- DEN section midterm exam start page (exam time is [10:00:00am-10:40:00am), Wed, 3/26/2025, USC time)
Plesae make sure you have done the following:
- watch the recorded live DEN section Lecture 18 on 3/12/2025 video (midterm exam logistics were presented)
- use Quiz 4 as midterm rehearsal (for the real midterm exam, you cannot say that you submit late because you are not familiar with some of the exam procedure)
- submit your signed midterm exam academic integrity honor code pledge (you will not be able to download your midterm exam if I don't have a signed pledge from you)
No matter how late you start your exam, your exam must end at the same time as everyone else who is taking the same exam. Please remember that due to my fairness policy mentioned in Lecture 1, I have to stick to all the posted rules and I cannot make an exception for any student.
- 3/19/2025:
The midterm exam will be a 40-minute long take-home exam (open book, open notes, open Internet).
The midterm exam will cover everything from the beginning of the semester to slide 21 of Lecture 17, MINUS Chapter 5 (i.e., material in Ch 5 is excluded from the midterm, i.e., slides 30 through 60 of Lecture 13, all slides in Lecture 14, and slides 4 through 53 of Lecture 15 are excluded from the midterm coverage). (A slide number refers to the number in the lower-right corner of a slide.) Also included are discussion section slides from Week 1 through Week 7.
Regarding what types of questions will be on the midterm, please see the Exams section of the course description web page.
Here is a quick summary of the midterm exam topics (not all topics covered may be listed):
- Ch 1 - Introduction
- introduction
- a simple OS
- files
- Ch 2 - Multithreaded Programming
- thread creation, termination
- thread synchronization
- thread safety, deviations
- Ch 3 - Basic Concepts
- context switching, I/O
- dynamic storage allocation
- static linking and loading
- booting
- Ch 4 - Operating-System Design
- a simple system
- storage management
- Warmup assignments 1 & 2
- discussion section slides
- specs
- FAQs
- my posts to class Google Group
- Kernel assignment 1
- discussion section slides
- spec
- FAQ
- my posts to class Google Group
Please note that kernel 1 is included in the midterm coverage but Chaper 5 is not. This mean that I can ask weenix-specific questions in the midterm exam.
- Ch 1 - Introduction
- 3/18/2025: Please download, fill out, sign, and submit the Midterm Exam Academic Integrity Honor Code Pledge as soon as possible. (Please note that submitting a signed pledge doesn't mean that you cannot decide to opt out of the exam later.) Please understand that if I don't get a signed pledge from you, you will not be able to download your midterm exam on the day of the exam because I need you to promise me that you won't cheat before you can download your exam.
- 3/4/2025: Quiz 5 will mainly focus on Lectures 15 & 16.
It will start at 3pm (USC time), on Friday, 3/7/2025. The starting point of your Quiz 5 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 5 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 3/7/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server.
- 2/23/2025: Quiz 4 will mainly focus on Discussions 6 & 7, Lectures 11-14.
It will start at 3pm (USC time), on Friday, 2/28/2025. The starting point of your Quiz 4 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 4 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 2/28/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server.
- 2/3/2025: Quiz 2 will mainly focus on Discussions 3 & 4, Lectures 5-8.
It will start at 3pm (USC time), on Friday, 2/7/2025. The starting point of your Quiz 2 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 2 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 2/7/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server. Also, if I have not received a signed Academic Integrity Honor Code Pledge For Quizzes from you, you will not be able to download your quiz and you will get a score of zero for your quiz.
- 1/23/2025: Zhuojin Li's office hour tomorrow has been moved to 4 - 6 pm.
- 1/20/2025: Quiz 1 will mainly focus on Discussion 2, Lectures 3 & 4.
It will start at 3pm (USC time), on Friday, 1/24/2025. The starting point of your Quiz 1 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 1 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 1/24/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server. Also, if I have not received a signed Academic Integrity Honor Code Pledge For Quizzes from you, you will not be able to download your quiz and you will get a score of zero for your quiz.
- 1/17/2025: Please download, fill out, sign, and submit the Academic Integrity Honor Code Pledge For Quizzes. Please understand that starting with Quiz 1, if I haven't received a signed pledge from you, you will not be able to download your quizzes because I need you to promise me that you won't cheat before I can send you a quiz.
- 1/17/2025: Quiz 0 will mainly focus on Week 1 discussion and Lectures 1 and 2.
It will start at 3pm (USC time), on Friday, 1/17/2025. The starting point of your Quiz 0 is at:
Currently, the above link is inactive/invalid. It will become valid and active around the Quiz 0 start time. The timestamp of your submission ticket must be at or before 11:59:59pm, 1/17/2025 or your submission is considered late and starting at 12:00:00am, you will lose 5% for every late minute.
Please remember that the only timestamp that we are allowed to consider is a timestamp inside a ticket issued by my submission server.
- 1/5/2025:
- Watch this area for important announcements.
- To get username and password for accessing protected
area of this web site, please visit the request access page after semester starts and submit the requested information.
(You do not have to be registered for the course to get the password. You just need to have an USC email address.)
- Due to security concerns, we cannot post Zoom meeting IDs in public area of the class website.
A summary of Zoom meeting IDs and links are provided here (password protected).
- Please do not send request to join the
class Google Group until after the Lecture 1.
- Please be familiar with the course preparation material in the Course Preview web page.
- Watch this area for important announcements.
(CSCI 201L or CSCI 455x) and (EE 357 or EE 352L)Apparently, they are the prerequisites for undergraduate students only. The CS department would waive these prerequisites for graduate students. Since undergraduate students are required to take CS 350 for OS credit, there should only be graduate students enrolled in CS 402. Therefore, these prerequisites are really not prerequisites. They should be considered recommended preparation for graduate students. The basic idea behind these prerequisites is that you are expected to know how to program and you are expected to know something about computer architecture (such as what a CPU does).Please see:
You should also get familiar with the Unix/Linux development environment (vi/pico/emacs, cc/gcc, make, etc.) You are expected to know how to use Unix/Linux. If you are not familiar with Unix/Linux, please read Unix for the Beginning Mage, a tutorial written by Joe Topjian. You can also visit UNIX Tutorial for Beginners or Learn tcsh in Y Minutes. If you already know how to use Unix/Linux before and just need a refresher, please review my summary of some commonly used Unix commands and my tcsh scripting tutorial. If you knew how to use Unix/Linux before and just need a refresher, please review a summary of some commonly used Unix/Linux commands.
All programming assignments must run on a "standard" 32-bit Ubuntu 16.04 system (which can be running inside VirtualBox, VMware Fusion/Workstation, UTM or in an AWS instance). The kernel programming assignments will only work on a 32-bit Ubuntu 16.04 system. Therefore, you should install a standard 32-bit Ubuntu 16.04 on your laptop or desktop as soon as possible and start using it right away to get familiar with the "standard" system. If you do not have a personal laptop or desktop that runs Windows or Mac OS X, please contact the instructor as soon as possible. If you are considering buying a laptop, please buy an Intel-based laptop that runs Windows or Mac OS X.
If the only computer you have access to is the new Mac running on a non-Intel/AMD CPU, then it may not be possible to install VirtualBox or VMware on your machine. If that's the case, please read here.
If a student registered late for this class or could not be present at the beginning of the semester, the student is still required to turn all projects and homeworks on time or the student will receive a score of 0 for these assignments. No exceptions!