This schedule is an estimate. It may be updated based on the actual pacing of the course material.

Slides linked with text “Reiss’s slides from” references slide deck(s) for the overall topic(s) that Reiss has built over the years. You can see a list of those slidedecks here. Often not everything in the slide deck will be covered in one day (or sometimes, at all in the semester).

DateTopicAssignment
Week 1
Tue 25 Aug

introduction / building intro

 [ 
Reiss's slides from: intrologisticsbuilding(pdf)
 ]
Reading:

overview, (partially) compilation

  • course outline
  • pointers in C (review?)
Wed 26 Aug

(no lab)

Thu 27 Aug

building

 [ 
Reiss's slides from: building(pdf)
 ]
Reading:

compilation, makefiles

  • .o, .a, .so files
  • dynamic and static linking
  • make
    • rules
Fri 28 Aug
Week 2
Tue 01 Sep

accounts

 [ 
Reiss's slides from: building(pdf)accounts(pdf)
 ]
Reading:

accounts, POSIX permissions

  • make (finish)

  • user IDs/account abstraction
  • POSIX permissions, briefly
Wed 02 Sep

Lab: make


lab writeup
Lab assigned
Thu 03 Sep

privilege / exceptions 1

 [ 
Reiss's slides from: kernel(pdf)
 ]
Reading:

kernel §1-2.2, 3

  • set-user-ID, sudo is not kernel mode
  • kernel mode
  • system calls
  • memory protection
  • context switches
Fri 04 Sep
Week 3
Tue 08 Sep

exceptions 2 / processes 1

 [ 
Reiss's slides from: kernel(pdf)unix-api
 ]
Reading:

kernel §2-2.2, 2.3.1.1, 2.4, 3, 4 / thread §1-3.4

(add deadline)

  • exceptions and I/O

  • creating new processes

    • fork, exec*
Wed 09 Sep

Lab: permissions


lab writeup
Lab assigned
Thu 10 Sep

processes 2

 [ 
Reiss's slides from: unix-api
 ]
Reading:

threads §3.4-4

  • waiting for processes
  • file descriptors
  • redirection, dup2
Fri 11 Sep
warmup due by 11:59pm
Week 4
Tue 15 Sep

virtual memory 0

 [ 
Reiss's slides from: vm(pdf)
 ]
Reading:

VM §1

  • virtual memory (start)
  • virtual memory concept
    • address space and address sizes
  • page tables
Wed 16 Sep

Lab: fork lab


lab writeup
Lab assigned
Thu 17 Sep

virtual memory 1

 [ 
Reiss's slides from: vm(pdf)
 ]
Reading:

VM §1, 2.2, 3.1

  • page table lookup examples
  • page tables and context switches
  • loading data on demand
  • copy-on-write, other “page table tricks”
Fri 18 Sep
test 1 due
Week 5
Tue 22 Sep

virtual memory 2

 [ 
Reiss's slides from: vm(pdf)
 ]
Reading:

VM §2.1, 3.2

  • swapping
  • mmap, linux /proc/$$/maps
  • storing page tables in memory
  • pagetable assignment
Wed 23 Sep

Lab: empty loop


lab writeup
Lab assigned
Thu 24 Sep

virtual memory 3

 [ 
Reiss's slides from: vm(pdf)
 ]
Reading:

VM §2.1, 3.2

  • multi-level page tables
  • multi-level page table examples
  • virtual memory exercises
Fri 25 Sep
timing due by 11:59pm
Week 6
Tue 29 Sep

caches 1

 [ 
Reiss's slides from: caching(pdf)
 ]
Reading:

cache

  • caching idea, locality
  • direct-mapped caches
    • valid bits, tags
Wed 30 Sep

Lab: virtual memory exploration


lab writeup
Lab assigned
Thu 01 Oct
Fri 02 Oct
fork HW due by 11:59pm
Week 7
Tue 06 Oct
(no class)
Wed 07 Oct

Lab: sync games


lab writeup
Lab assigned
Thu 08 Oct

caches 2

 [ 
Reiss's slides from: caching(pdf)
 ]
Reading:

cache

  • cache parameter exercises
  • set-associative caches
  • replacement policies (start)
Fri 09 Oct
test 2 due
pagetable part 1 due by 11:59pm
Week 8
Tue 13 Oct

caches 3

 [ 
Reiss's slides from: caching(pdf)
 ]
Reading:

cache

(drop deadline)

  • replacement policies (finish)
  • cache misses and C code
  • cache write policies
Wed 14 Oct

Lab: cache exercises


lab writeup
Lab assigned
Thu 15 Oct
Fri 16 Oct
Week 9
Tue 20 Oct

TLB / threads

 [ 
Reiss's slides from: caching(pdf)threads(pdf)
 ]
Reading:

cache, thread §1.3-4, pthreads §1-2

(withdraw deadline)

  • cache write policies

  • the TLB

  • thread use examples (start)

Wed 21 Oct

Lab: code reviews


lab writeup
pagetable part 2 (pre code review) due BEFORE FIRST LAB — normal late policy does not apply
Lab assigned
Thu 22 Oct

synchronization 1 --- reordering and locks

 [ 
Reiss's slides from: sync-reorder(pdf)sync-locks(pdf)
 ]
Reading:

consistency §1-2, sync §1-2, 4, pthreads §3.1-2

  • thread use examples (finish)

  • problem of synchronization
    • reordering by compilers, processors
  • locks
Fri 23 Oct
pagetable 3 (post code review) due by 11:59pm
Week 10
Tue 27 Oct

synchronization 2 --- barriers / deadlock

 [ 
Reiss's slides from: sync-locks(pdf)sync-barriers(pdf)deadlock(pdf)
 ]
Reading:

sync §8; deadlock; pthreads §3.3

  • barriers
  • deadlock
  • (if time) producer/consumer problem
Wed 28 Oct

Lab: pthreads (dining philosophers)


lab writeup
Lab assigned
Thu 29 Oct

synchronization 3 --- monitors, producer/consumer

 [ 
Reiss's slides from: sync-monitors(pdf)
 ]
Reading:

sync §5-7, pthreads §3.5

  • monitors
    • solving producer/consumer problem
Fri 30 Oct
test 3 due
TLB due by 11:59pm
Week 11
Tue 03 Nov
(no class)
Wed 04 Nov

Lab: openmp


lab writeup
Lab assigned
Thu 05 Nov

transactions / networking 1

 [ 
Reiss's slides from: sync-xact(pdf)sync-rwlocks(pdf)network(pdf)
 ]
Reading:

sync §9, protocols §1-2

  • reader/writer locks, briefly
  • transactions, briefly

  • networking layers
  • mailbox analogy
  • connections atop mailbox model
  • names and addresses
Fri 06 Nov
life due by 11:59pm
Week 12
Tue 10 Nov

networking 2

 [ 
Reiss's slides from: network(pdf)
 ]
Reading:

protocols §1-6

  • example: a frame
    • layers (link, network, transport)
  • IP
    • addresses (v4, v6)
    • routers
  • port numbers and UDP
  • mapping between addresses and names/other addresses:
    • DNS
  • (briefly) HTTP, network address translation
Wed 11 Nov

Lab: networking


lab writeup
Lab assigned
Thu 12 Nov

secure channels 1

 [ 
Reiss's slides from: network(pdf)secure(pdf)
 ]
  • cryptography
    • symmetric encryption
    • asymmetric encryption
    • digital signature
  • replay attacks
  • public key infrastructure
Fri 13 Nov
pool due by 11:59pm
Week 13
Tue 17 Nov

pipelining 1

 [ 
Reiss's slides from: secure(pdf)pipeline(pdf)
 ]
Reading:

processors §1-3

  • TLS outline

  • review: single-cycle CPU
  • pipelining idea
  • pipelining for the CPU
  • pipelining tradeoffs
  • hazards (start)
Wed 18 Nov

Lab: secure channels lab


lab writeup
Lab assigned
Thu 19 Nov

pipelining 2

 [ 
Reiss's slides from: pipeline(pdf)ooo(pdf)
 ]
Reading:

processors §2-3

  • hazards and hazard handling
    • stalling
    • branch prediction, briefly
    • forwarding
  • some pipeline exercises

  • idea of multiple issue + out-of-order
Fri 20 Nov
test 4 due
Week 14
Tue 24 Nov

out-of-order 1

 [ 
Reiss's slides from: ooo(pdf)
 ]
Reading:

processors §2-3

  • register renaming
  • instruction queues, dispatch
Wed 25 Nov
(no class)
Thu 26 Nov
(no class)
Fri 27 Nov
(no class)
Week 15
Tue 01 Dec

out-of-order 2

 [ 
Reiss's slides from: ooo(pdf)bpred(pdf)
 ]
  • execution units
  • branch prediction ideas
Wed 02 Dec

Lab: side channel


lab writeup
Lab assigned
Thu 03 Dec

side channels

 [ 
Reiss's slides from: spectre(pdf)
 ]
  • side channels generally
  • side channels in the cache
Fri 04 Dec
OOO due by 11:59pm
Week 16
Tue 08 Dec

meltdown/spectre

  • meltdown:
    • speculation past a priv/protection fault
  • spectre
    • speculation past a bounds chcek
    • using cache side-channels
    • spectre mitigations, briefly
test 5 due