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 | ||
---|---|---|---|---|---|
Thu | Aug 30 | 1 | Introduction | intro-slides.pdf, Ch. 1 (skim) | |
Mon | Sep 3 | L0 | Unix Warmup | ||
Tue | Sep 4 | 2 | Bits and Binary | Ch. 2.1, representation-slides.pdf, binary-exercises.pdf | |
Thu | Sep 6 | 3 | Data Representation: Ints | Ch. 2.2, representation-slides.pdf, representation-exercises.pdf | |
Mon | Sep 10 | L1 | A Bit Puzzling | ||
Tue | Sep 11 | 4 | Data Representation: Ints | Ch. 2.3, representation-slides.pdf, logic-exercises.pdf | |
Thu | Sep 13 | 5 | Floating-Point Data | Ch. 2.4, representation-slides.pdf, float-exercises.pdf | |
Mon | Sep 17 | L1 | A Bit Puzzling (cont) | ||
Tue | Sep 18 | 6 | Memory and Pointers | memory-slides.pdf, C Pointers & Memory tutorial | |
Thu | Sep 20 | 7 | Pointers, Arrays, and Strings | memory-slides.pdf, stringtest.c, pointer-exercises.pdf | |
Mon | Sep 24 | 8 | Memory Allocation | memory-slides.pdf, pointertest.c | |
Tue | Sep 25 | L2 | Program Pointers | debugging practice programs (in SVN), GDB Tutorial | |
Thu | Sep 27 | 9 | x86-64 ISA, Data Movement | Ch. 3.1-3.4, x86-basics-slides.pdf | |
Mon | Oct 1 | L2 | Program Pointers (cont) | ||
Tue | Oct 2 | 10 | x86 Arithmetic | Ch 3.5, x86-basics-slides.pdf, mov-exercises.pdf | |
Thu | Oct 4 | 11 | Condition Codes & Conditionals | Ch 3.6, x86-control-slides.pdf | |
Mon | Oct 8 | No Class: Fall Break | |||
Tue | Oct 9 | No Class: Fall Break | |||
Thu | Oct 11 | L3 | BitBombs | x86-registers.pdf, gdb-reference.pdf | |
Mon | Oct 15 | 12 | Control Flow: Loops & Switches | x86-control-slides.pdf | |
Tue | Oct 16 | L3 | BitBombs (cont) | ||
Thu | Oct 18 | 13 | Control Flow: Procedures | Ch. 3.7, x86-procedures-slides.pdf | |
Mon | Oct 22 | Midterm Exam (in lab) | |||
Tue | Oct 23 | 14 | Saved Registers & Arrays | Ch 3.8, x86-structures-slides.pdf | |
Thu | Oct 25 | 15 | Arrays & Structs | Ch 3.9, x86-structures-slides.pdf | |
Mon | Oct 29 | 16 | Buffer Overflow & Code Injection | Ch. 3.10, buffer-slides.pdf, buftest.c, makesploit.c | |
Tue | Oct 30 | L4 | Byte Stacker | ||
Thu | Nov 1 | 17 | Return-Oriented Programming | buffer-slides.pdf | |
Mon | Nov 5 | L4 | Byte Stacker (cont) | ||
Tue | Nov 6 | 18 | Caching & Cache Designs | Ch 6.1, caching-slides.pdf | |
Thu | Nov 8 | 19 | Direct-Mapped Caches | Ch. 6.4, caching-slides.pdf, caching-exercises.pdf | |
Mon | Nov 12 | L5 | Make Some Cache | ||
Tue | Nov 13 | 20 | Associative Caches & Locality | Ch 6.2-6.3, 6.5, caching-slides.pdf, associative-exercises.pdf | |
Thu | Nov 15 | 21 | Exceptional Control Flow | Ch. 8.1-8.3, process-slides.pdf | |
Mon | Nov 19 | L5 | Make Some Cache (cont) | ||
Tue | Nov 20 | 22 | Process Management | Ch. 8.4, process-slides.pdf, fork-exercises.pdf, forktest.c | |
Thu | Nov 22 | No Class: Thanksgiving Break | |||
Mon | Nov 26 | 23 | Shells & Signals | Ch. 8.5, process-slides.pdf | |
Tue | Nov 27 | L6 | The Bowdoin Shell | ||
Thu | Nov 29 | 24 | Concurrency and Threads | process-slides.pdf | |
Mon | Dec 3 | L6 | The Bowdoin Shell (cont) | ||
Tue | Dec 4 | 25 | Virtual Memory | vm-slides.pdf | |
Thu | Dec 6 | 26 | Linking, Digital Logic, Wrap-up | wrapup-slides.pdf |