CS 3130 Fall 2025
Study MaterialsMain/ReadingsOffice HoursPoliciesHWs+LabsQuizzesSubmissionSchedule
This website may change (perhaps significantly) before the semester starts.

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 26 Aug

introduction / building intro

 [ 
Reiss's slides from: intro, logistics, building
 ]
Reading:

overview, (partially) compilation

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

(no lab)

Thu 28 Aug

building

 [ 
Reiss's slides from: building
 ]
Reading:

compilation, makefiles

  • .o, .a, .so files
  • dynamic and static linking
  • make
    • rules
Fri 29 Aug
—
Week 2
Tue 02 Sep

accounts

 [ 
Reiss's slides from: building, accounts
 ]
Reading:

accounts, POSIX permissions

  • make (finish)

  • user IDs/account abstraction
  • POSIX permissions, briefly
  • set-user-ID, sudo is not kernel mode
Wed 03 Sep

Lab: make


tentative lab writeup
Lab assigned
Thu 04 Sep

privilege / exceptions

 [ 
Reiss's slides from: kernel
 ]
Reading:

kernel §1-2.2, 3

  • kernel mode
  • system calls
  • memory protection
  • context switches
  • non-system-call exceptions (start)
Fri 05 Sep
—
Week 3
Tue 09 Sep

exceptions / signals

 [ 
Reiss's slides from: kernel, signals
 ]
Reading:

thread §1-2 / kernel §2-2.2, 3, 2.3.1

  • non-system-call exceptions (finish)
    • timer interrupt
    • I/O
  • Unix signals
    • signal handlers and implementation
Thu 11 Sep

Lab: permissions


tentative lab writeup
Lab assigned
Fri 12 Sep

processes 1

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

kernel §2.3.1

  • Unix signals (con’t)
    • signal unsafety
    • handling signals without signal handlers
  • processes, threads

  • creating new processes
    • fork, exec*
Sat 13 Sep
—
warmup (tentative writeup) due by 11:59pm
Week 4
Tue 16 Sep

processes 2

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

kernel §3.3.3; threads

  • waiting for processes
  • file descriptors
Wed 17 Sep

Lab: signal handling


tentative lab writeup
Lab assigned
Thu 18 Sep

process 3

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

kernel §3.3.3; threads

  • dup2
  • pipe, redirection
Fri 19 Sep
—
Week 5
Tue 23 Sep

virtual memory 1

 [ 
Reiss's slides from: vm
 ]
Reading:

VM §1, 2.2, 3.1

  • virtual memory concept
    • address space and address sizes
  • page tables
  • loading data on demand (start)
Wed 24 Sep

Lab: fork lab


tentative lab writeup
Lab assigned
Thu 25 Sep

virtual memory 2

 [ 
Reiss's slides from: vm
 ]
Reading:

VM §2.1, 3.2

  • loading data on demand (finish)
  • copy-on-write, other “page table tricks”
  • storing page tables in memory (start)
Fri 26 Sep
—
timing (tentative writeup) due by 11:59pm
Week 6
Tue 30 Sep

virtual memory 3

 [ 
Reiss's slides from: vm
 ]
Reading:

VM §2.1, 3.2; cache

  • pagetable assignment
  • as a tree
  • multi-level lookup example
Wed 01 Oct

Lab: virtual memory exploration


tentative lab writeup
Lab assigned
Thu 02 Oct

caches 1

 [ 
Reiss's slides from: caching
 ]
Reading:

cache

  • caching idea, locality
  • direct-mapped caches
    • valid bits, tags
  • set-associative caches
Fri 03 Oct
—
fork HW (tentative writeup) due by 11:59pm
Week 7
Tue 07 Oct

caches 2

 [ 
Reiss's slides from: caching
 ]
Reading:

cache

  • replacement policies
  • cache misses and C code
Wed 08 Oct

Lab: sync games


tentative lab writeup
Lab assigned
Thu 09 Oct

midterm review

Fri 10 Oct
—
pagetable part 1 (tentative writeup) due by 11:59pm
Week 8
Tue 14 Oct
(no class)
Wed 15 Oct

Lab: cache exercises


tentative lab writeup
Lab assigned
Thu 16 Oct

midterm

Fri 17 Oct
—
Week 9
Tue 21 Oct

caches 3 / TLB

 [ 
Reiss's slides from: caching, threads
 ]
Reading:

cache

  • cache write policies
  • the TLB
Wed 22 Oct

Lab: code reviews


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

threading

 [ 
Reiss's slides from: threads, sync, deadlock
 ]
Reading:

threads, pthreads

  • thread use examples
  • problem of synchronization
Fri 24 Oct
—
pagetable 3 (post code review) (tentative writeup) due by 11:59pm
Week 10
Tue 28 Oct

synchronization 1

 [ 
Reiss's slides from: deadlock, sync
 ]
Reading:

sync

  • locks and mutexes
  • barriers

  • deadlock (start)
Wed 29 Oct

Lab: openmp


tentative lab writeup
Lab assigned
Thu 30 Oct

synchronization 2

 [ 
Reiss's slides from: sync
 ]
Reading:

sync

  • deadlock (con’t)
    • examples
    • definition
    • preventing/avoiding
  • producer/consumer problem
  • monitors (start)
Fri 31 Oct
—
cache programs (tentative writeup) due by 11:59pm
Week 11
Tue 04 Nov
(no class)
Wed 05 Nov

Lab: pthreads (dining philosophers)


tentative lab writeup
Lab assigned
Thu 06 Nov

synchronization 3

 [ 
Reiss's slides from: sync, network
 ]
Reading:

sync

  • monitors (finish)
  • (if time) false sharing
  • briefly, transactions
Fri 07 Nov
—
TLB (tentative writeup) due by 11:59pm
Week 12
Tue 11 Nov

networking 1

 [ 
Reiss's slides from: network
 ]
Reading:

protocols §1-6

  • layers
  • mailbox analogy
    • best-effort delivery
    • envelope versus contents
  • connections atop mailbox model
  • names and addresses
  • example: a frame
    • layers (link, network, transport)
  • IP
    • addresses (v4, v6)
    • routers
  • port numbers and UDP
  • mapping between addresses and names/other addresses:
    • DNS
Wed 12 Nov

Lab: networking


tentative lab writeup
Lab assigned
Thu 13 Nov

networking 2 / secure channels 1

 [ 
Reiss's slides from: network, secure
 ]
Reading:

security §1-3

  • networking (finish)
  • cryptography
    • symmetric encryption
    • asymmetric encryption
    • digital signature
  • replay attacks
  • public key infrastructure
Fri 14 Nov
—
life (tentative writeup) due by 11:59pm
Week 13
Tue 18 Nov

secure channels 2 / pipelining 1

 [ 
Reiss's slides from: secure, processors, pipeline
 ]
Reading:

processors §1-3

  • cryptography (finish)
    • extra cryptography bits
      • cryptographic hashes
      • key exchange
    • (if time) TLS outline
  • review: single-cycle CPU
  • pipelining idea
  • pipelining for the CPU
  • pipelining tradeoffs
  • hazards and hazard handling
    • stalling
    • branch prediction, briefly
    • forwarding
Wed 19 Nov

Lab: secure channels lab


tentative lab writeup
Lab assigned
Thu 20 Nov

pipelining 2

 [ 
Reiss's slides from: pipeline, ooo
 ]
Reading:

processors §2-3

  • combining forwarding and stalling
  • some pipeline exercises

  • idea of multiple issue + out-of-order
  • (start) register renaming
Fri 21 Nov
—
pipeline (tentative writeup) due by 11:59pm
Week 14
Tue 25 Nov

out-of-order 1

 [ 
Reiss's slides from: ooo, bpred
 ]
Reading:

processors §2-3

  • (finish) register renaming
  • instruction queues, dispatch

  • (if time) branch prediction ideas
    • static prediction
    • 1/2-bit histroy tables, pattern
Wed 26 Nov
(no class)
Thu 27 Nov
(no class)
Fri 28 Nov
(no class)
Week 15
Tue 02 Dec

out of order 2 / side channels

 [ 
Reiss's slides from: spectre
 ]
  • side chnanels generally
  • side channels in the cache
Wed 03 Dec

Lab: side channel


tentative lab writeup
Lab assigned
Thu 04 Dec

meltdown/spectre

 [ 
Reiss's slides from: spectre
 ]
  • meltdown:
    • speculation past a priv/protection fault
  • spectre
    • speculation past a bounds chcek
    • using cache side-channels
Fri 05 Dec
—
OOO (tentative writeup) due by 11:59pm
Week 16
Tue 09 Dec

exam review

Fri 12 Dec

final exam (both sections; 7pm)

—

CS 3130 Fall 2025

  • Charles Reiss and Kevin Skadron
  • creiss@virginia.edu
By Luther Tychnoviech and Charles Reiss. Released under the Creative Commons License CC-BY-NC-SA 4.0.