601.229 (S20): Schedule

This page lists readings and homework/assignment due dates.

Unless otherwise indicated, readings are from Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, 3rd ed. Important: do the reading before you come to class.

The links to slides are provided for reference. In general, there is no guarantee that they will be posted before class, or that their content will not change.

Date Topic/Slides Reading
Week 1 (Jan 27–31) Course overview, binary data representation review: slides 1.1–1.9
  Data representation, addresses: slides 2.1
  Integer representation: slides 2.2
Week 2 (Feb 3–7) Integer arithmetic: slides 2.3
  Floating point: slides 2.4
  Machine-level program representation: slides 3.1–3.4
Week 3 (Feb 10–14) ALU operations, arithmetic: slides, alu.zip (example code) 3.5
  Control flow: slides, control.zip (example code) 3.6
  Procedures, stacks: slides, control2.zip (example code) 3.7
Week 4 (Feb 17–21) Assembly language in-class exercise, solution  
  Arrays and structs: slides, arraystruct.zip (example code) 3.8–3.9
  Code and data interactions, buffer overflows: slides, buf.zip (example code) 3.10
Week 5 (Feb 24–28) Program optimization (basic techniques): see Piazza for slides 5.1–5.8
  Pipelines: slides Patterson&Hennessy 4.5–4.7
  Program optimization (ILP, memory, profiling): see Piazza for slides 5.9–5.14
Week 6 (Mar 2–6) Memory hierarchy: slides 6.1–6.3
  Caches: slides 6.4
  Midterm exam review  
Week 7 (Mar 9–13) Midterm exam (March 9th)  
  two classes canceled  
Week 8 (Mar 16–20) Spring break, no class  
  Optional dry run of online class meeting: slides  
Week 9 (Mar 23–27) Caches and program execution: see Piazza for slides 6.5
  Linking basics, symbols, relocations, executables, loading: slides 7.1–7.9
  Dynamic linking, shared libraries, PIC, interpositioning: slides, dynload.zip (example code) 7.10–7.15
Week 10 (Mar 30–Apr 3) Exceptions, Processes: slides 8.1–8.4, 8.7
  Signals: slides, signals.zip (example code) 8.5–8.6
  Virtual memory: slides 9.1–9.3
Week 11 (Apr 6–10) Memory management, address translation: slides 9.4–9.7
  Memory mapping, dynamic memory allocation: slides 9.8, 9.9, 9.11
  Unix I/O, files: slides 10.1–10.11
Week 12 (Apr 13–17) Networks, Internet Protocol: slides 11.1–11.3
  Sockets, Application Protocols: slides, sockets.zip (example code) 11.4
  Network applications, HTTP: slides, webserver.zip (example code), webclient.zip (example code) 11.4–11.6
Week 13 (Apr 20–24) Concurrency with processes: slides, mp_webserver.zip (example code) 12.1
  Concurrency with threads: slides, mt_webserver.zip (example code), mandelbrot.zip (example code) 12.3
  Thread synchronization: slides, synch.zip (example code) 12.4–12.5
Week 14 (Apr 27–May 1) Concurrency with I/O multiplexing: slides, iomux.zip (example code) 12.2
  Parallelism, concurrency issues: slides, synch2.zip (example code) 12.6–12.7
  Final exam review