* Course syllabus can be found here (including the grading scale and expected course schedule).
This course teaches how internals of modern operating systems are working with hardware/software stack. In the course, we will learn fundamental concepts of operating systems by building an operating system by our own hand. In particular, lab assignments are based on JOS, an educational OS project, and the students will build it starting from booting (Lab 1), virtual memory (Lab 2), process (Lab 3), multi-tasking (Lab 4), and finally to file system (Lab 5). We will also cover concurrency issues in systems by learning on how to implement locks and other synchronization mechanisms and how to resolve deadlock issues.
Class meetings and modality¶
When: MW 2:30-3:45pm
Where: ECSS 2.412
Video recordings of the class will NOT be provided
Students are required to satisfy the following prerequisites:
Computer Architecture (CS/SE 2340)
Systems Programming in UNIX and Other Environments (CS/SE 3377)
Data Structures and Introduction to Algorithmic Analysis (CS/SE/CE 3345)
Student learning objectives/outcomes¶
Students shall be able to understand fundamental concepts in operating systems: their design, implementation, and usage. After completing the course, students are expected to gain the abilities to understand and apply the following topics:
Memory management and virtual memory
System calls, page faults, interrupts and exceptions
Multi-threading, synchronization and deadlocks
I/O and file systems
Lab assignments (70%): 4 labs (Lab 1: 10%, Lab 2: 15%, Lab 3: 20%, Lab 4: 25%)
Quizzes (30%): 3 quizzes (10% each)
No midterm or final exam
Extra credits: optional Lab 5 (10%), and challenges in lab assignments and questions during class (1-2% each)
Evaluation & late policy¶
Lab assignments and quizzes will be evaluated on a 100-point scale (0-100).
Late assignment submission will be penalized 10 points per day (24-hour period).
Late days are not applicable to Lab 5 submission (firm deadline).
Cheating vs. collaboration
Collaboration is a very good thing. On the other hand, cheating is considered a very serious offense and is vigorously prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act.
- For this semester, the policy is simple: don't cheat:
Never share code or text on the homeworks and projects.
Never use someone else's code or text in your solutions.
Never consult potential solutions on the Internet.
- On the other hand, for this class, you are strongly encouraged to:
Explain your code to someone to see if they know why it doesn't work.
Help someone else debug if they've run into a wall.
If you obtain help of any kind, always write the name(s) of your sources.