| Date | Meeting | Material covered | Required reading | Other materials |
| 1/5 | Lecture 1 | Class intro; straight-line and loops in assembly | slides; handout; code | |
| 1/6 | Lab 1 | Listing primes in assembly (loops and if statements) | ||
| 1/7 | Lecture 2 | Practice with assembly control flow | slides; code | |
| 1/9 | Lecture 3 | Memory with assembly; arrays and strings | slides | |
| 1/12 | Lecture 4 | Objects in assembly; functions in assembly | slides; code | |
| 1/13 | Lab 2 | Functions in assembly | ||
| 1/14 | Lecture 5 | Practice with function; representing numbers | slides; code | |
| 1/16 | Lecture 6 | Signed integers; floating-point numbers | slides | |
| 1/19 | Lecture 7 | Introduction to C; some of the differences with Java | main slides; emacs reference handout; code; differences slides | |
| 1/20 | Lab 3 | Connect 4 (C practice) | ||
| 1/21 | Lecture 8 | More on pointers (multiple pointers, dynamic memory allocation) | slides; handout | |
| 1/23 | Exam 1 | |||
| 1/26 | Lecture 9 | More pointers and pointer arithmetic | slides | |
| 1/27 | Lab 4 | Debugging (gdb) and buffer overflows | ||
| 1/28 | Lecture 10 | Buffer overflows; more pointer arithmetic | slides | |
| 1/30 | Lecture 11 | Linked lists in C; beginning of caching | slides; code | |
| 2/2 | Lecture 12 | More caching | slides | |
| 2/3 | Lab 5 | Generative AI to simulate MIPS assembly | ||
| 2/4 | Lecture 13 | Associative caching; multi-processor caching; virtual memory | slides | |
| 2/6 | Lecture 14 | Dirty bit; multiprocessor caching; virtual memory; start of threads | slides1; slides2; video | |
| 2/9 | Lecture 15 | Parallelism concepts; producer-consumer | slides1; slides2 | |
| 2/10 | Lab 6 | Parallel Mandelbrot set creation | ||
| 2/11 | No class -- Day of Dialog | |||
| 2/13 | Lecture 16 | Producer-consumer; semaphores | slides | |
| 2/16 | Lecture 17 | Readers and writers; detecting deadlock | slides1; slides2 | |
| 2/17 | Lab 7 | Testing allocation safety | ||
| 2/18 | Exam 2 | |||
| 2/20 | Lecture 18 | Recorded lecture; dealing with deadlock | slides | |
| 2/23 | Lecture 18 | Pollack's rule; Introduction to CUDA | slides1; slides2 | |
| 2/24 | Lab 8 | Image tasks in CUDA | ||
| 2/25 | Lecture 19 | More CUDA: dimension transformation, Voronoi diagram example | slides; code I wanted to show | |
| 2/27 | Lecture 20 | Shared memory in CUDA; OpenMP | slides1; slides2 | |
| 3/2 | Lecture 21 | Go over exam 2; protocol stacks and IP addresses | slides | |
| 3/3 | Lab 9 | Networking with TCP/IP (chat client) | ||
| 3/4 | Lecture 22 | Discussion of lab; DNS | slides | |
| 3/6 | Lecture 23 | |||
| 3/9 | Lecture 24 | |||
| 3/10 | Lab 10 | |||
| 3/11 | Reading Day | |||
| 3/12 | Reading Day | |||