Overview
This course is an introduction to the fundamentals of operating systems design and implementation. Topics include process and thread management, multiprocessing, real-time kernel development, scheduling, queue management, memory and caching, permanent storage management, file systems, I/O device management, and security. Prereq: ECE 252; Antireq: CS 350, ECE 254, SE 350
Instructor
Ziqiang Patrick Huang (ziqiang.huang AT uwaterloo.ca)
Lab Instructor
Irene Huang (yqhuang AT uwaterloo.ca)
Graduate Teaching Assistants
Karim W. A. Elhammady (kwamelha AT uwaterloo.ca)
Sulav Shrestha (slshrestha AT uwaterloo.ca)
Khilav Divyang Soni (k7soni AT uwaterloo.ca)
Lectures, Tutorials, Labs
For lecture, tutorial and lab schedules, see the Undergraduate Schedule of Classes. Labs are used as help sessions for projects. Tutorials are used to 1) introduce lab projects, and 2) review & practice lecture materials
Discussion Forum
We will use Piazza for class discussions. The system is highly catered to getting you help fast and efficiently from classmates, the TAs, the lab instructor and myself. Rather than emailing questions to the teaching staff, you should post your questions on Piazza. The Piazza course site is here
Office Hours
Patrick's: Please send an email to schedule an appointment
Irene and TAs' office hours will be located with the lab schedule.
Textbooks
Operating Systems: Principles and Design (2nd Edition) (Will be posting relevant chapters below with schedules)
Operating Systems: Three Easy Pieces (freely available online); Operating System Concepts (10th Edition) (Optional, recommended as supplementary readings)
Gradings
Quizzes (20%)
Lab projects (40%)
Final (40%)
*No need to pass individual components to pass the course.
Quizzes
There will be a total of 5 quizzes, each covering roughly 2 weeks of lecture materials. The quizzes are NOT meant to be exams, their purpose is to help you stay on top of the lecture materials and not fall behind. Quizzes are done on Learn. Each quiz will have ~20 questions, selected randomly among a question pool, usually true/false or multiple-choice questions. Each quiz are given 2 hours (more than enough) and must be compeleted in one seating. Quizzes are open book in the sense that students may consult their textbook, course notes, and materials posted on the course webpage. Use of any other resource (including online services such as stackexchange.com) is prohibited. During each quiz, students are allowed to ask private questions on Piazza if they have any question or need any clarification. While taking quizzes, students may not communicate directly or indirectly with any person except the course instructors. Students may not discuss nor disclose quiz questions with anyone. Any suspected plagiarism or infractions of this honor code will be reported to the appropriate Associate Dean. Quiz schedule(tentative) can be found below:
(Every quiz is released 4pm on release date, and due 11pm on due date, you can take it in any 2-hour window in between)
Q1: release on May 16, due on May 19
Q2: release on May 30, due on June 2
Q3: release on June 20, due on June 23
Q4: release on July 11, due on July 14
Q5: release on July 25, due on July 28
Lab Projects
There will be a total of 4 lab projects(not including L0), each covering an important aspect of RTOS. There is a project demo for the last one (LP4). The project is done in groups of four. Five is not allowed and three is not recommended. The workload is fixed regardless of the size of the group. All group members receive the same grade for each project. LEARN is used for group sign-up. You are allowed to form groups with students in a different lab sections but in the same class, provided that it does cause conflicts with other courses/labs for any of the group members. After the deadline, any student without a group will be randomly assigned to a group. Explaining concepts to someone in another group, discussing algorithms/testing strategies with other groups, and searching online for generic algorithms (e.g., hash table) are allowed. Sharing code and test cases with another group, open-sourcing code (e.g., hosting code publicly on GitHub) even after this term, copying/reading another group's code and test cases, and copying/reading online code and test cases from prior years are not allowed. Any suspected plagiarism or infractions of this honor code will be reported to the appropriate Associate Dean. Lab projects schedule(tentative) can be found below:
LP0: release on May 4, due on May 10 (Group signup, environment setup)
LP1: release on May 11, due on May 24
LP2: release on May 25, due on June 7
LP3: release on June 8, due on July 1
LP4: release on July 1, due on July 19 (Final Project Demo: July 19 - 22)
Exams
There will be one final exam for this course. The final exam takes place from 9am to 11:30am on Aug 5, 2022 at STC 1012. There is no midterm exam for this course.
Late Policy
There are three grace days (including weekends) that can be used for late submissions without incurring any penalty. When all grace days are used, a 15% penalty is applied per day for late submissions. Please be advised that to simplify the book-keeping, late submissions are rounded up. A ten-minute-late submission receives the same penalty as a fifteen-hour-late submission. Submissions after three days are not accepted.
Academic Policy
The discussion of ideas and problem-solving strategies is an integral part of the learning experience, but cheating and plagiarism are not. Practically, you violate academic integrity when (1) you obtain solutions and code from others, or (2) you provide solutions and code to others. A student is expected to know what constitutes academic integrity to avoid committing an academic offence and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline. For typical penalties check Guidelines for the Assessment of Penalties.
Lecture Schedules(tentative), Topics, Reading Assignments
Week of |
Topics |
Reading Assignments |
Tutorials (LP: Lab Project, R&P: Review & Practice) |
May 2 |
Introduction |
OSPP 1 | LP 0 |
May 9 |
OS concepts |
OSPP 2 (and 3 to refresh your memory) | LP 1 |
May 16 May 23 |
Multithreaded kernels |
OSPP 4.5-4.8, 5.7-5.8 (and 5.2 - 5.6 to refresh your memory) |
R&P 1 LP 2 |
May 30 |
Uniprocessor scheduling |
OSPP 7.1 | R&P 2 |
June 6 |
Multiprocessor scheduling |
OSPP 6.1-6.3, 7.2-7.3 | LP 3 |
June 13 |
Midterm Week |
||
June 20 June 27 |
Real-time systems | OSPP 7.4 |
R&P 3 |
July 4 |
Address translation | OSPP 8.1-8.2 | LP 4 |
July 11 |
Caching | OSPP 8.3 and 9.1-9.4 | R&P 5 |
July 18 July 25 |
File Systems |
OSPP 11.1-11.2 and 13 | R&P 6 |
Aug 5 |
Final Exam |