Aside from hyperlinked material, reading assignments refer to sections in the CS: APP3e book. Unless otherwise specified, reading quizzes and homework assignments are due by the time class starts on the day on which they are listed and labs are due by 11:00 pm on the day on which they are listed. All quizzes, assignments, and labs are administered via Canvas. Note that all section and problem numbers listed are specific to the hardcopy version of the book with the ISBN number as listed in the syllabus. An errata for the textbook cataloging known errors in the current version can be found here.
| Date | Class Period & Lecture Topic | Reading | Assignment |
|---|---|---|---|
| Aug 25 | Syllabus, policies, business, goals, intro | Join Class Discord Server Complete get-to-know-you survey |
|
| Aug 27 | Command line basics | ||
| Sep 01 | C: variables, literals, loops, makefiles | C tutorial (through Arrays)(online, not in book) | |
| Sep 03 | C: strings, I/O, functions, gdb | C tutorial (through Command Line Arguments) | Lab 1: Remote Linux Server Tutorial Terminate your EC2 (if necessary) |
| Sep 08 | C: arrays, structs, headers, Lab 2 Specification | Lab 2 Specification Makefiles |
Get started on Lab 2 |
| Sep 10 | C: pointers, argument passing | Using gdb to debug C | |
| Sep 15 | Bits and Bytes | 2.0.0-2.1.3 | |
| Sep 17 | Strings, Code, and Booleans | 2.1.4-2.1.9 | Hwk 1 Lab 2: C Calculator |
| Sep 22 | Integer Representations | 2.2.0-2.2.4 | Hwk 2 Get started on Lab 3 |
| Sep 24 | More on Integer Representations, Lab 3 Specification | 2.2.5-2.2.8 Lab 3 Specification |
Hwk 3 |
| Sep 29 | Integer Addition and Negation | 2.3.0-2.3.3 | Hwk 4 |
| Oct 01 | Integer Multiplication and Division | 2.3.4-2.3.8 | Hwk 5 |
| Oct 06 | Floating Point | 2.4.0-2.4.6 | Hwk 6 Lab 3: C Bit Calculator |
| Oct 08 | Program Encodings | 3.0.0-3.1.0 (optional) 3.2.0-3.2.3 |
Hwk 7 |
| Oct 13 | Data Formats, Access, and Movement | 3.3.0-3.4.4 | |
| Oct 15 | Midterm Exam (on Canvas, closes midnight) | Study guide | |
| Oct 20 | Arithmetic and Logical Operations | 3.5.0-3.5.5 gdb cheat sheet |
Hwk 8 |
| Oct 22 | Control Flow | 3.6.0-3.6.5 | Hwk 9 |
| Oct 27 | Loops and Switches | 3.6.6-3.6.8 note error on p. 234 (see errata) | Hwk 10 |
| Oct 29 | Bomb Lab | Lab 4 Specification | |
| Nov 03 | Procedures | 3.7.0-3.7.6 | Hwk 11 |
| Nov 05 | Array Allocation and Access | 3.8.0-3.8.5 | Bomb Lab Phases 1&2 (expect an email soon about setting up VPN) |
| Nov 10 | Heterogenous Data Structures | 3.9.0-3.9.3 | Bomb Lab Phases 3&4 |
| Nov 12 | Bomb Lab Q&A | Lab 4: Bomb Lab | |
| Nov 17 | Combining Control and Data | 3.10.0-3.10.5 | |
| Nov 19 | Attack Lab | Lab 5 Specification Complete Section 2 "Getting setup" in Lab 5 |
|
| Nov 24 | Fall Break | ||
| Nov 26 | Fall Break | ||
| Dec 01 | Attack Lab Q&A | Attack Lab Phases 1 | |
| Dec 03 | Locality and The Memory Hierarchy | 6.2.0-6.3.2 | Attack Lab Phases 2&3 |
| Dec 08 | Cache Memory | 6.4.0-6.4.7 | Lab 5: Attack Lab |
| Dec 10 | Final Review | Study guide | |
| Dec 17 | Final (on Canvas, closes midnight) | Study guide |
The schedule is subject to change.
For students interested in learning more, I highly recommend Chapter 5 from the textbook on "Optimizing Program Performance". It will pick up from where we have left off in this class and more specifically elaborate on how the information we have discussed is directly applicable as a programmer.