The course schedule is tentative and subject to change. This page will be updated frequently to reflect the most up-to-date schedule. Chapter sections refer to the Computer Systems textbook.
| Date | Class | Topic | Readings | Slides | Exercises | |
|---|---|---|---|---|---|---|
| Wed | Jan 21 | 1 | Introduction, Lab 0 | Ch. 1 (skim) | Intro Slides | |
| Fri | Jan 23 | 2 | Numbering Systems | Ch. 2.1 | Representation Slides | Binary Exercises |
| Mon | Jan 26 | No Class: Weather | ||||
| Wed | Jan 28 | 3 | Bitwise Operators | Ch. 2.2 | Bitwise Exercises | |
| Fri | Jan 30 | 4 | Integer Representations, Lab 1 | Ch. 2.3 | Representation Exercises | |
| Mon | Feb 2 | 5 | Two's Complement, Bit Puzzles | Bitpuzzle Exercises | ||
| Wed | Feb 4 | 6 | Integer Logic & Floating-Point | Logic Exercises | ||
| Fri | Feb 6 | 7 | IEEE 754 Representation | Ch. 2.4 | Float Exercises | |
| Mon | Feb 9 | 8 | Memory, Endianness, & Pointers | Pointers tutorial | Memory Slides | Pointer Exercises |
| Wed | Feb 11 | 9 | Pointers and Arrays | Array Exercises | ||
| Fri | Feb 13 | 10 | Strings & Memory Layout | |||
| Mon | Feb 16 | 11 | Memory Allocation, Lab 2 | Allocation Exercises | ||
| Wed | Feb 18 | 12 | Debugging, Lab D | GDB Reference | ||
| Fri | Feb 20 | 13 | x86-64 ISA, Data Movement | Ch. 3.1-3.4 | x86-basics Slides | Mov Exercises |
| Mon | Feb 23 | 14 | Addressing & Arithmetic | Ch. 3.5 | Operand Exercises | |
| Wed | Feb 25 | 15 | Procedures & Condition Codes | Ch. 3.6 | x86-control Slides | Asm1 Exercises |
| Fri | Feb 27 | 16 | Conditionals & Loops | |||
| Mon | Mar 2 | Midterm Exam 1 | ||||
| Wed | Mar 4 | 17 | Reverse Engineering, Lab 3 | Gdb Exercises | ||
| Fri | Mar 6 | 18 | Switches & Jump Tables | |||
| Mon | Mar 9 | No Class: Spring Break | ||||
| Wed | Mar 11 | No Class: Spring Break | ||||
| Fri | Mar 13 | No Class: Spring Break | ||||
| Mon | Mar 16 | No Class: Spring Break | ||||
| Wed | Mar 18 | No Class: Spring Break | ||||
| Fri | Mar 20 | No Class: Spring Break | ||||
| Mon | Mar 23 | 19 | Procedures & Stacks | Ch. 3.7 | x86-procedures Slides | |
| Wed | Mar 25 | 20 | Procedure Memory | Procedures Exercises | ||
| Fri | Mar 27 | 21 | Saved Registers & Arrays | Ch. 3.8 | x86-structures Slides | |
| Mon | Mar 30 | 22 | Structs | Ch. 3.9 | Struct Exercises | |
| Wed | Apr 1 | 23 | Buffer Overflows | Ch. 3.10 | Buffers Slides | |
| Fri | Apr 3 | 24 | Code Injection Attacks, Lab 4 | |||
| Mon | Apr 6 | 25 | Return-Oriented Programming | |||
| Wed | Apr 8 | 26 | Caching & Cache Designs | Ch. 6.1 | ||
| Fri | Apr 10 | 27 | Direct-Mapped Caches | Ch. 6.4 | ||
| Mon | Apr 13 | 28 | Associative Caches | |||
| Wed | Apr 15 | Midterm Exam 2 | ||||
| Fri | Apr 17 | 29 | Locality & The Memory Hierarchy, Lab 5 | Ch. 6.2-6.3, 6.5 | ||
| Mon | Apr 20 | No Class: Instructor away | ||||
| Wed | Apr 22 | 30 | Processes & Exceptional Control Flow | Ch. 8.1-8.2 | ||
| Fri | Apr 24 | 31 | Process Management | |||
| Mon | Apr 27 | 32 | Process Control & Shells, Lab 6 | Ch. 8.3 | ||
| Wed | Apr 29 | 33 | Signals & Zombies | Ch. 8.4-8.5 | ||
| Fri | May 1 | 34 | Reaping & Concurrency | |||
| Mon | May 4 | 35 | Threads & Lab 6 Discussion | |||
| Wed | May 6 | 36 | Virtual Memory & Wrap-up | Ch. 9.1 | ||