CS 351: Systems Programming


  • Welcome to the Spring 2021 edition of CS 351: Systems Programming

  • The Zoom meeting ID for our online lectures is 836 6745 2132 -- you can join using this link.

  • We will be using Discord to run office hours, and it will also serve as our peer support and Q/A forum. If you aren't already a member, please join at https://discord.gg/exbFK5b

  • Lecture recordings, when available, can be found on the class YouTube playlist


Please note that readings for a given lecture should ideally be reviewed before coming to class, and will likely need to be revisited afterwards. Most readings are from "Computer Systems: A Programmer's Perspective, 3rd Edition" (CS:APP3e). Lecture slides/notes will be updated after class, when available.

The lecture calendar is tentative and may be updated.

Dates Topic Notes Reading(s)
Jan 20 Syllabus and Course overview 01-prelim Syllabus
Jan 22 - Feb 03 C Primer 02-c K&R, Pro Git chapters 1, 2
Feb 10 The Process 03-theprocess CS:APP 8.1-8.2
Feb 12 Process Management: fork/exit 04-procmgmt-1 CS:APP 8.3-8.4.2
Feb 17 Process Management: wait/exec 05-procmgmt-2 CS:APP 8.4.3-8.4.6
Feb 19 - Feb 26 Process Management / Unix Shell 06-procmgmt-3 CS:APP 8.5-8.6
Mar 03 - Mar 10 Memory Hierarchy and Caching 07-caching CS:APP 6.1-6.6
Mar 12 Midterm Exam
Mar 17 - Mar 19 Cache Optimization
Mar 24 - Mar 31 Virtual memory 08-vm CS:APP 9.1-9.7
Apr 02 Dynamic Memory Allocation 09-dma CS:APP 9.9.1-9.9.4
Apr 07 - Apr 14 Implementing malloc 10-malloc CS:APP 9.9.5-9.9.14
Apr 16 - Apr 21 Garbage collection 11-gc CS:APP 9.10
Apr 23 - Apr 30 System-level I/O 12-io CS:APP 10.1-10.12

Machine Problems

Assignments will be posted as they become available.

# Released Due Topic Handout(s)
1 TBA TBA Preliminaries



Michael Lee

Primary references


Library / Syscall references

Other references

Development Tools

Exams and Study Guides