This page contains pointers to the PowerPoint slides used during lecture! Lecture slides will be posted a few hours after the lecture is given. [Also remember that, via the "Panopto" link on the course's Canvas page, you can find lecture videos; those videos should also be posted a few hours after the relevant lecture is over.]
This page also lists additional reading material that reinforces the concepts from lecture. Some students might find that information helpful to read before lecture, whereas other students might prefer to read the information after lecture. The additional material comes from the CS 61 website itself or from the textbook. The additional material is supplemental in the sense that the midterm and the final exam will specifically target material from the lecture slides. However, the additional material can provide a helpful second perspective on the lecture material, making the concepts easier to learn!
- Lecture 1: Overview
- Lecture 2: Types and Memory, Part I
- Additional reading (textbook): General: §1.1–1.4, Integer representation: §2.1–2.2, Dynamic memory allocation: §9 up to and including §9.9.2.
- Additional reading (CS 61 site): Data representation up to and including the discussion of "Signed integer representation."
- Lecture 3: Types and Memory, Part II
- Additional reading (textbook): Compound types: §3.8-3.9; pointers: §3.10.2.
- Additional reading (CS 61 site): Data representation, in particular, the discussion about data lifetimes in the "Segments" section, and the entire sections "Compiler layout," "Alignment," "Collection representation," and "Uninitialized objects."
- Lecture 4: Functions
- Additional reading (textbook): §3.7.1-3.7.5, and §3.8
- Additional reading (CS 61 site): Data representation, in particular, the discussion about "Pointer arithmetic"
- Lecture 5: Debugging
- Additional reading (textbook): §A.1 and §3.10.2
- Additional reading (CS 61 site): gdb quick start guide and gdb commands.
- Lecture 6: Compilation and Interpretation
- Additional reading (CS 61 site): Base pointer, stack, and compiler optimizations.
- Lecture 7: Assembly, Part I
- Additional reading (textbook): §2.1.6-2.1.7, §2.1.9, §3.3-3.5, §3.6.1-3.6.3, §3.6.5, §3.6.7
- Additional reading (CS 61 site): Registers, instruction format, address modes, address arithmetic, %rip-relative addressing, arithmetic instructions, stack, base pointer, and branches.
- Lecture 8: Assembly, Part II
- Additional reading (textbook): §3.7, §7.1-7.5, §7.6.2-7.11
- Additional reading (CS 61 site): Directives, calling convention, arguments, stack, return address and entry and exit sequence, callee-saved vs. caller-saved registers, base pointer, and stack size and red zones.
- Lecture 9: Kernels, Part I
- Additional reading (textbook): §8.2.3-8.2.5
- Additional reading (CS 61 site): Kernel vs. processes, current privilege level, protected control transfer, WeensyOS (see the subsection "System calls and protected control transfer").
- Lecture 10: Kernels, Part II
- Additional reading (textbook): §8.1
- Additional reading (CS 61 site): WeensyOS (see the subsection "System calls and protected control transfer").
- Lecture 11: Kernels, Part III
- Additional reading (textbook): §9.1-9.6
- Additional reading (CS 61 site): Virtual memory, page tables.
- Lecture 12: Character Encodings
- Lecture 13: Storage, Part I
- Additonal reading (textbook): §1.5–1.6, §6.3
- Additional reading (CS 61 site): Introduction, reference locality, latency and throughput.
- Lecture 14: Storage, Part II
- Additonal reading (textbook): §10.1–10.4, §10.10
- Additional reading (CS 61 site): Cache benefits, cache coherence.
- Lecture 15: Storage, Part III
- Additional reading (CS 61 site): File I/O, streams, and file positions, memory mapping.
- Lecture 16: Processes, Part I
- Lecture 17: Processes, Part II
- Additonal reading (textbook): §8.5-8.5.3, §9.8.3, §10.9
- Additional reading (CS 61 site): Pipe blocking, running a new program, signals.
- Lecture 18: Processes, Part III
- Additional reading (CS 61 site): Exit detection.
- Lecture 19: Processes, Part IV
- Lecture 20: Synchronization, Part I
- Lecture 21: Synchronization, Part II
- Additional reading (CS 61 site): Threads, data races, atomics, synchronization objects, mutual exclusion.
- Lecture 22: Synchronization, Part III
- Additional reading (CS 61 site): Mutual exclusion, bounded buffers, mutex patterns, condition variables, deadlock.
- Lecture 23: Synchronization, Part IV