∗ [Apr/1] Quiz 2 solution.
∗ [Mar/11] Quiz 1 solution posted.
∗ [Mar/1] Sign up for lab groups here
∗ [Feb/17] Quiz 1 posted.
∗ [Feb/15] Past exams posted.
∗ [Jan/9] Welcome to ECE 344!
In this course discuss the principles in the design and implementation of operating systems software. Topics include: Introduction to operating systems concepts, process management, memory management, file systems for both hard drive and SSD, virtualization, and distributed operating systems. The laboratory exercises will require implementing a simple, but functional operating system from ground up.
This site provides instructor's lecture notes and all lab-related information.
All lectures, tutorials, and practice sessions are delivered via Zoom until the university resumes in-person activities; the Zoom links can be found at UofT Quercus.
Course announcements and the course discussion is on the Piazza web site.
Course grades are available at the UofT Quercus.
Suggested textbook (not required)
Modern Operating Systems (4th Edition), Andrew Tanenbaum and Herbert Bos, Prentice Hall. 2014
Operating Systems: Three Easy Pieces, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau.
The lecture and lab times and office hours are shown below:
Lecture Times: Mon. 9-10 (GB120), Wed 10-12< (GB248)br>
Lab times (when TAs will be available): Thu. 9:00-11:00
Office Hours: 10 minutes after each lecture or by appointment
Quiz 1: Thursday 2/17, 10 - 11AM
Quiz 2: Thursday 3/24, 10 - 11AM
Quizzes: The quizzes will be done online, via Quercus. The questions will be posted on the course website, and you enter the answers to Quercus. Each quiz will be 45 minutes long, with 15 additional minutes provided for uploading your answers.
Final exam: 35
2 Quizzes: 40 (equally weighted)
Lab assignment: 25 (3, 10, 12 respectively for each lab assignment)
Bonus: there is an optional 4th lab assignment that worths 10 bonus marks
Grace tokens: each student has 3 grace tokens. Each token can be used for an automatic 24 hour extension for one lab assignment.
Cheating: Each group should work independently. You may confer with each other, but your work should be your own. You should understand your code well enough to describe it to the TA and make simple changes to it when asked to.