CS 343: Operating Systems, Fall 2020

(Prior Quarters)

Instructor: Branden Ghena (Office Hours: Fridays, 2:00-5:00pm Central or by appointment)
Teaching Assistant: Conor Hetland (Office Hours: Tuesdays 4:00-7:00pm, Central or by appointment)
Peer Mentors: Calypso McDonnell (Office Hours: Thursdays, 8:00-11:00am Central)
Michael Cuevas (Office Hours: Mondays, 11:00-2:00pm Central)
Lecture: Recordings on Canvas
Q&A Session: Tuesdays and Thursdays, 11:20-12:40pm Central, Zoom link and recordings on Canvas
Lab Discussion: Wednesdays, 6:00-7:00pm Central

Welcome to Operating Systems! This course introduces you to the basic, foundational concepts and principles of operating systems. You'll learn many of these concepts and principles by applying them in practice through labs designed to put you in the shoes of a systems developer. We'll be putting a special focus on concurrency, scheduling, device drivers, and virtual memory.

This is a recently redesigned course. It will have many differences from previous versions of CS343 before Winter 2020. The textbook is different and the labs have been newly developed and are Northwestern-specific.

CS343 satisfies one of the systems breadth, tech elective, or project requirements within the Computer Science major. It can also be taken for credit within the CE major.

Course Resources

Please use Piazza for all communication. Directing your questions to Piazza will likely produce the fastest response, and everyone else in the class will also benefit. You can also send private messages to the instructors through Piazza and all of the staff will be able to answer you.

Accounts and Remote Access

Office Hours

All links are in canvas





This schedule is subject to change. Modifications to the lecture schedule are possible. Changes to the lab schedule are unlikely. You will be notified if the schedule changes.







1 (pdf pptx)

09/17 Th

Introduction, OS Structure, OS Models, HW/SW interface, History

Chapter 1, 8.1.2, 10.1, 10.2

Start lab out

2 (pdf pptx)

09/22 Tu

Processes and Threads

2.1, 2.2, 5.1.5, 8.1.1


9/22 is the last day for adding courses or changing sections.

3 (pdf pptx)

09/24 Th

Concurrency Sources: hardware, interrupts. Amdahl's Law

2.1, 2.2, 5.1.5, 8.1.1

Start lab in, PC lab out

4 (pdf pptx)

09/29 Tu

Concurrency Challenges and Control: races, mutual exclusion, critical sections, locks design and implementation

2.3, Concurrency,


5 (pdf pptx)

10/01 Th

Concurrency Challenges and Control: concurrent data structures, condvars, barriers, semaphores

2.3 (cont.), 8.1.3, Therac


6 (pdf pptx)

10/06 Tu

Concurrency Challenges and Control: deadlocks, detection, avoidance, prevention, starvation, lockfree/waitfree data structures, other languages

6, 2.5


7 (pdf pptx)

10/08 Th

Scheduling: classic treatment

2.4, 10.3, 8.1.4

PC lab in, Queue lab out

8 (pdf pptx)

10/13 Tu

Scheduling: workload, queueing, and real-time perspectives


Queueing, Mars



10/15 Th

Midterm Exam Review During Q&A Session



Midterm Exam: 10/20, 11:20 am - 12:40 pm Central time. See Piazza for details.


10/20 Tu

Midterm Exam



11 (pdf pptx)

10/22 Th

Virtual memory with paging and segmentation

3.1, 3.2, 3.3, 3.7


12 (pdf pptx)

10/27 Tu

Swapping policies, Paging on x64 and Linux 3.4-3.6, 10.4 Queue Lab in, Paging lab out

13 (pdf pptx)

10/29 Th

Paging Wrapup, Security and Protection Chapter 9, Spectre  

14 (pdf pptx)

11/03 Tu

Devices and drivers: principles

5.1-5.3, 10.5


15 (pdf pptx)

11/05 Th

Devices and drivers: examples



11/06 is the last day to drop a class.

16 (pdf pptx)

11/10 Tu

OS design principles

Chapter 12

Paging lab in,
Driver lab out

17 (pdf pptx)

11/12 Th

File systems: principles and issues



18 (pdf pptx)

11/17 Tu

File systems: examples

4.5, 10.6


19 (pdf pptx)

11/19 Th

Virtualization, containerization, the cloud, etc

Chapter 7


20 (pdf pptx)

11/24 Tu

Special Topic: Embedded OS


Driver lab in

Finals week – Exam is Thursday, December 03, 12-2pm