COMP 40 Syllabus

Note: This syllabus is subject to change without notice at any time. Expect it to change approximately weekly throughout the semester. Scheduling is by ``units,'' not weeks. Units and weeks may not correspond exactly. Check the dates carefully. If you want to see something organized more by date, look at the schedule.
intro (9/7-9/9)
Introduction: Software Design with Interfaces in C
Read: Notes for all lectures appear on one large page.
Design (also in PDF) due on 9/12.
Homework (also in PDF) due on 9/15.
iii (9/12-9/23)
Interfaces, implementations, and images
Read:
Design (also in PDF) due on 9/20.
Homework (also in PDF) due on 9/25.
locality (9/26-10/3)
Machine storage and locality
Read:
  • Bryant and O'Hallaron: Chapter 1 (skim)
  • Bryant and O'Hallaron, Section 1.7 (read)
  • Bryant and O'Hallaron, Sections 6.2 to 6.5

Design (also in PDF) due on 10/2.
Homework (also in PDF) due on 10/6.
arith (10/5-10/17)
Data! Bits, bytes, words, and arithmetic
Read: Bryant and O'Hallaron, Sections 2.1–2.4 Notes for all lectures appear on one large page.
Design (also in PDF) due on 10/12.
Homework (also in PDF) due on 10/16.
Midterm exam in class (10/19)
Interfaces and implementations; caches and locality; machine arithmetic.The midterm will focus on material from the first three assignments and on material from in-class exercises. I will also expect you to have some grasp of floating-point arithmetic.You will be expected to read and write C code, although if you can't remember some syntax, you can make it up and explain its meaning.
code (10/21-10/28)
From C code to machine instructions
Read:
  • If you have the second (new) edition of Bryant and O'Hallaron:
    • New material in Sections 3.1–3.7 (but be aware this material uses the wrong machine for examples)
    • Section 3.13 on the AMD64
    • Material for review in Sections 3.8–3.10
  • If you have the first (old) edition of Bryant and O'Hallaron:
    • New material in Sections 3.1–3.7 (but be aware this material uses the wrong machine for examples)
    • The AMD64 supplement
    • Material for review in Sections 3.8–3.11

Homework (also in PDF) due on 11/1.
um (10/31-11/9)
Machine code: Virtual Machines
Design (also in PDF) due on 11/3.
Homework (also in PDF) due on 11/13.
profile (11/14-11/21)
Profiling and Code Tuning
Read:
  • Bryant and O'Hallaron, sections of Chapter 5 (for details, see homework)
  • Documentation for valgrind and kcachegrind (for reference)
Notes for all lectures appear on one large page.
Homework (also in PDF) due on 11/22.
asm (11/28-12/2)
From assembly code to machine code
Read:
Homework (also in PDF) due on 12/4.
asmcoding (12/5-12/9)
Programming in assembly code
Read: Programming the Universal Machine (also in PDF)
Design (also in PDF) due on 12/6.
Homework (also in PDF) due on 12/11.
review (12/12)
Final-exam review
Final exam (12/16)
12:00 PM, Halligan 111A