CMSC216: Course Schedule and Materials
University of Maryland
Spring 2026
Schedule and Course Materials
All materials are subject to change and are marked internally with their latest update time.
| Week | Dates | Lecture / Projects | Links | Labs | HW | Solutions | Reading | |
|---|---|---|---|---|---|---|---|---|
| Course Mechanics / Code Environment | Slides Video | Code Environment | ||||||
| 1 | 26-Jan | Mon | No Discussion | K&R C book OR | ||||
| Tue | Introduction to C | Slides Code | Lab01 | HW01 | C Refs on Canvas | |||
| Wed | Environment Setup, Lab1 | Videos | ||||||
| Thu | C Basics | |||||||
| 2 | 02-Feb | Mon | Lab02 Overview | Slides Code | Lab02 | HW02 | ||
| Tue | Basic Types, Pointers / Addresses | Videos | ||||||
| Wed | Lab02 Completion, HW02 Practice | |||||||
| Thu | Void Ptrs, Arrays | |||||||
| 3 | 09-Feb | Mon | C I/O Tutorial, Lab03 | |||||
| Tue | Allocation, Valgrind | |||||||
| Wed | Valgrind Debugging | |||||||
| 💘 | Thu | Structs, I/O | ||||||
| 4 | 16-Feb | Mon | Project 1 Due: Mon 16-Feb | |||||
| Mon | Practice1A | |||||||
| Tue | Binary Ints, Bit Operations | CSAPP: 2.1-2.3 | ||||||
| Wed | Practice1B | |||||||
| Thu | Exam 1 Thu 19-Feb (Exam Rules) | |||||||
| 5 | 23-Feb | Mon | Bit Shifting, Lab04 | CSAPP: 3.1-3.5 | ||||
| Tue | Assembly Basics | |||||||
| Wed | GDB Usage and Practice | Quick Guide to GDB | ||||||
| Thu | Data movement, GDB usage | |||||||
| 6 | 02-Mar | Mon | Assembly Coding Examples, Lab05 | CSAPP: 3.6-3.7 | ||||
| 🎂 | Tue | Arithmetic, Division, Jumps | ||||||
| Wed | Assembly Arithmetic | |||||||
| Thu | Compare, Test, Functions | |||||||
| P2 Due Fri 06-Mar | ||||||||
| 7 | 09-Mar | Mon | Assembly Functions, Lab06 | CSAPP: 3.8-3.10 | ||||
| Tue | Function Calls | |||||||
| Wed | TBD | |||||||
| Thu | ASM Globals/Data, Buffer Overflow | |||||||
| 16-Mar | SPRING BREAK: No Classes | |||||||
| 8 | 23-Mar | Mon | Stack Space, Lab07 | CSAPP: 8 | ||||
| Tue | Exceptional Control Flow | |||||||
| Wed | GDB with Compiled Code | |||||||
| Tue | Unix Processes | |||||||
| 9 | 30-Mar | Mon | P3 Due Mon 30-Mar | |||||
| Mon | Practice2A | |||||||
| Tue | Unix Procs Wrap | |||||||
| 🤡 | Wed | Practice2B | ||||||
| Thu | Exam 2 Thu 02-Apr | |||||||
| 10 | 06-Apr | Mon | Processes, Fork, Wait, Lab09 | CSAPP: 10 | ||||
| Tue | Unix read() / write() | |||||||
| Wed | TBD | |||||||
| Thu | Unix redirection, stat() | |||||||
| 11 | 13-Apr | Mon | I/O Redirection | CSAPP: 6 | ||||
| Tue | Timing, Strides and Cache | |||||||
| Wed | Cache Analysis | |||||||
| Thu | Memory Pyramid, Matrix layout | |||||||
| 12 | 20-Apr | Mon | Matrices and Cache Opt | CSAPP: 9 | ||||
| Tue | Hardware Demo, VirtMem Overview | |||||||
| Wed | Practice Exam 3A | |||||||
| Thu | Page Tables, mmap() | |||||||
| Fri | P4 Due Fri 24-Apr | |||||||
| 13 | 27-Apr | Mon | Practice Exam 3B | |||||
| Tue | Exam 3 Tue 28-Apr | |||||||
| Wed | Memory Mapped Arrays | |||||||
| Thu | Threads, Mutex, Coordination | CSAPP: 12 | ||||||
| 14 | 04-May | Mon | Threads, Lab12 | |||||
| Tue | Advanced Thread usage | |||||||
| Wed | PracticeFA | |||||||
| Thu | Finale / Review | |||||||
| Fri | P5 Due Fri 08-May | |||||||
| 09-May | Sat | Reading Day | ||||||
| 📚 | ||||||||
| 12-May | Tue | Final Exam | ||||||
| Tue 12-May 6:30pm-8:30pm | ||||||||
| (Common Final Exam Time) |
Textbooks
Required Textbook (CSAPP): Computer Systems: A Programmer's Perspective, Third Edition by R. Bryant, D. O'Hallaron, Pearson, 2016
Optional (K&R C Book): The C Programming Language, Second Edition by Brian Kernighan and Dennis M. Ritchie, Prentice Hall 1988
Other free C references are listed on the course Canvas Site