2013/Schedule

From CS61
Jump to: navigation, search
Computer Science 61 and E61
Systems Programming and Machine Organization
This is the 2012 version of the course. Main site

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)