Ancient CS 61 Content Warning!!!!!1!!!
This is not the current version of the class.
This site was automatically translated from a wiki. The translation may have introduced mistakes (and the content might have been wrong to begin with).

Schedule

The schedule will remain tentative all term.

“Scribe notes” were produced by students (note taking schedule), and may be incomplete or wrong (although we certainly hope they're awesome). “Thoughts” are instructors’ supplementary notes on the lecture; these will not necessarily be comprehensible on their own (they might build on, or go beyond, actual lecture material). You can view the schedule for scribe note assignments here.

Recommended readings are generally from the textbook, CS:APP2e. The first edition often has comparable readings; we give section titles to help you match them up.

Videotaped lectures

Date

#

Topic

Recommended reading

Notes

T 9/2

1

Course overview: Robustness

W 9/3

Assignment 1 released

R 9/4

2

UNIT I. FUNDAMENTALS
Abstract machines & real machines
Memory layout

1 A Tour of Computer Systems-

Scribe notes

T 9/9

3

Data representation

2.1 Information Storage (2.1–2.1.6)
2.2 Integer Representations
3.8 Array Allocation and Access (skip 3.8.5)
3.9 Heterogeneous Data Structures
3.10 Putting It Together: Understanding Pointers
In 3.8 and 3.9, skip the assembly code.

Scribe notes

R 9/11

4

Representation of collections
Alignment

9.9 Dynamic Memory Allocation, through 9.9.4 Fragmentation
9.11 Common Memory-Related Bugs in C Programs
(3.12 Out-of-Bounds Memory References and Buffer Overflow)
(Skip assembly in 3.12.)

Scribe notes

F 9/12

Assignment 1 intermediate due date

T 9/16

5

Storage duration and dynamic allocation

9.9 Dynamic Memory Allocation, from 9.9.5 Implementation Issues

Scribe notes

R 9/18

6

Fixed-size arena allocation
Conservative garbage collection

9.10 Garbage Collection

Scribe notes

F 9/19

Assignment 1 due

T 9/23

7

Garbage collection II
UNIT II. STORAGE AND CACHING
Storage technologies
strace

2.1.7–2.1.10 Introduction to Boolean Algebra, etc.
2.3 Integer Arithmetic
2.4 Floating Point (skim)

Scribe notes A
Scribe notes B

W 9/3

Assignment 2 released

R 9/25

8

Caching, prefetching, buffer cache

6.1 Storage technologies
6.2 Locality
6.3 The memory hierarchy

Scribe notes

T 9/30

9

Cache model
Processor cache

10 System I/O (but not 10.4)

Scribe notes

R 10/2

10

Eviction policies
Memory-mapped IO

6.4 Cache Memories
6.5 Writing Cache-Friendly Code
6.6 Putting it together

Scribe notes A
Scribe notes B

F 10/3

Assignment 2 intermediate checkin

T 10/7

No class

R 10/9

11

UNIT III. MACHINE PROGRAMMING
Data movement and arithmetic instructions

3 through 3.5 Arithmetic and Logical Operations
3.6–3.7 Control and Procedures
8 Exceptional Control Flow: 8.1 Exceptions
8.4 Process Control through 8.4.2

Scribe notes

F 10/10

Assignment 2 due

T 10/14

12

Control flow instructions and calling convention

3.12 Out-of-Bounds Memory References
9 Virtual Memory: 9.1 Physical and Virtual Addressing
9.2 Address Spaces
9.3.2 Page Tables
9.5 VM as a Tool for Memory Protection

Scribe notes A
Scribe notes B

R 10/16

Midterm (in class)

T 10/21

13

Control flow instructions

8.2 Processes
8.4 Process Control (all)
9.6 Address Translation
(Additional Unix information: 8.3 System Call Error Handling
8.7 Tools for Manipulating Processes)

Scribe notes A
Scribe notes B

R 10/23

14

Calling convention

9.3 VM as a Tool for Caching
9.4 VM as a Tool for Memory Management
9.8 Memory Mapping

Scribe notes A
Scribe notes B
Scribe notes C

F 10/24

Assignment 3 due

T 10/28

15

UNIT IV. KERNEL PROGRAMMING
Kernel programming and process isolation

Scribe notes

R 10/30

16

Privilege, exceptional control flow, virtual memory I

Scribe notes

T 11/4

17

Virtual memory II

Scribe notes

R 11/6

18

Fork, advanced virtual memory

N/A

Scribe notes A
Scribe notes B

F 11/7

Assignment 4 due

T 11/11

19

UNIT V. PROCESS MANAGEMENT
Application process management

5 Optimizing Program Performance, particularly 5.1-5.6, 5.13-5.14

Scribe notes A
Scribe notes B

R 11/13

20

Inter-process communication, pipes

N/A

Scribe notes A
Scribe notes B

T 11/18

21

Process interruption: signals

11 Network Programming through 11.2

Scribe notes A
Scribe notes B

R 11/20

22

UNIT VI. CONCURRENCY
Application concurrency: servers, threads

12 Concurrent Programming through 12.2

Scribe notes A
Scribe notes B

F 11/21

Assignment 5 due

T 11/25

23

Threaded parallelism

12.3 Concurrent Programming with Threads, 12.4, 12.6, 12.7

Scribe notes A
Scribe notes B
Scribe notes C

R 11/27

Thanksgiving holiday

T 12/2

24

Advanced concurrency

N/A

Scribe notes

W 12/3

Assignment 6 “due” (in reading week)