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. If you’d like a preview of coming attractions, check the 2012 schedule.

“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).

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/3

1

Course overview: Robustness

Scribe notes

R 9/5

2

Course overview: Performance

1 A Tour of Computer Systems

Scribe notes

Assignment 1 posted

T 9/10

3

UNIT I. FUNDAMENTALS
Memory layout

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 A
Scribe notes B

R 9/12

4

Stacks, data representation

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 A
Scribe notes B

F 9/13

Assignment 1 intermediate due date

T 9/17

5

Representation of collections, memory errors

9.9 Dynamic Memory Allocation, from 9.9.5 Implementation Issues

Scribe notes

R 9/19

6

Memory error protection, other nasal demons

9.10 Garbage Collection

Scribe notes

F 9/20

Assignment 1 intermediate due date

T 9/24

7

Dynamic memory allocation

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

Scribe notes
Scribe notes B
Computer arithmetic notes

R 9/26

8

Garbage collection
UNIT II. STORAGE AND CACHING
Storage technologies

6.1 Storage technologies
6.2 Locality
6.3 The memory hierarchy

Thoughts
Scribe notes A
Scribe notes B

F 9/27

Assignment 1 due
Assignment 2 released

T 10/1

9

I/O caching: caching, prefetching, buffer cache

10 System I/O (but not 10.4)

Scribe notes A
Scribe notes B

R 10/3

10

Cache model

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

Scribe notes A
Scribe notes B
Scribe Notes C

T 10/8

11

Associative caches, processor caches

3 through 3.5 Arithmetic and Logical Operations

Scribe notes A
Scribe notes B
Scribe notes C

R 10/10

12

Application-level caches
UNIT III. MACHINE PROGRAMMING
Data movement instructions

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/11

Assignment 2 due

T 10/15

13

Arithmetic instructions and computer arithmetic

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/17

Midterm (in class)

T 10/22

14

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
Scribe Notes C

R 10/24

15

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

Su 10/27

Assignment 3 due

T 10/29

16

UNIT IV. KERNEL PROGRAMMING
Kernel programming and process isolation

Scribe Notes A
Scribe Notes B
Scribe Notes C

R 10/31

17

Privilege, exceptional control flow, virtual memory I

Scribe Notes A
Scribe Notes B
Scribe Notes C

T 11/5

18

Virtual memory II

Scribe Notes A
Scribe Notes B

R 11/7

19

Fork, advanced virtual memory

N/A

Scribe Notes A
Scribe Notes B
Scribe Notes C

S 11/10

Assignment 4 due

T 11/12

20

UNIT V. PROCESS MANAGEMENT
Application process management

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

Scribe Notes A

R 11/14

21

Inter-process communication, pipes

N/A

Scribe Notes A
Scribe Notes B

T 11/19

22

Process interruption: signals

11 Network Programming through 11.2

Scribe Notes A
Scribe Notes B

R 11/21

23

UNIT VI. CONCURRENCY
Application concurrency: servers, threads

12 Concurrent Programming through 12.2

Scribe Notes A
Scribe Notes B

F 11/22

Assignment 5 due

T 11/26

24

Threaded parallelism

12.3 Concurrent Programming with Threads, 12.4, 12.6, 12.7

Scribe Notes A

R 11/28

Thanksgiving holiday

T 12/3

25

Advanced concurrency

N/A

Scribe Notes A

W 12/4

Assignment 6 “due” (in reading week)