The schedule will remain tentative all term.
Week
|
Date
|
Topic
|
Pre-Class Prep
|
Readings
|
1
|
Thu 9/3
|
Course Overview
|
None
|
None
|
2
Section Notes
|
Tu 9/8
|
Unit 1: Fundamentals
Exploring Memory
|
`<a href = "https://mix.office.com/watch/12u3c9podjlau">`Administrivia`</a>`
(`<a href = "/wiki/images/3/38/Administrivia.pdf">`PDF`</a>`) (8:52)
Course Mechanics
Abstractions
(`<a href = "/wiki/images/5/55/Abstractions.pdf">`PDF`</a>`) (33:27)
Web Work
(`<a href = "/wiki/images/4/40/9_8_15-solutions.pdf">`Solutions`</a>`)
|
1. A Tour of Computer Systems (1.1-1.10)
3.11 Using GDB
|
Thu 9/10
|
Data Representation
|
`<a href = "https://mix.office.com/watch/1ue5bhlr3nfzk">`Hexadecimal review`</a>` (`<a href = "/cs61wiki/images/e/e2/Hex.pdf">`PDF`</a>`) (15:27)
`<a href = "https://mix.office.com/watch/19ykf7av27eiw">`Data Representation`</a>` (`<A href = "/cs61wiki/images/2/29/Representation.pdf">`PDF`</a>`) (23:18)
Web Work
(`<a href = "/cs61wiki/images/3/3f/Preclass-9-15-15.pdf">`Solutions`</a>`)
|
2.1 Information Storage (2.1-2.1.6)
2.2 Integer Representation
3.8 Array Allocation and Access (skip 3.8.5)
3.9 Heterogeneous Data Structures
3.10/3.10.1 Understanding Pointers
(Skip assembly code)
|
Fri 9/11
|
A1 Intermediate Checkin
|
3
Section Notes
|
Tu 9/15
|
Pointers and Strings
|
Signed and Unisigned Arithmetic
(`<a href = "/cs61wiki/images/e/ed/Arithmetic.pdf">`PDF`</a>`) (14:16)
Alignment and Fragmentation
(`<a href = "/cs61wiki/images/9/9e/Dynamic.pdf">`PDF`</a>`) (15:08)
`<a href = "https://docs.google.com/forms/d/1vqEhH4A9hCAtjt7cVUYwp8cfHrtVpLD3qnZfW4i1vRg/viewform">`Web Work`</a>` (`<a href = "/cs61wiki/images/9/9a/9_15_15_solutions.pdf">`Solutions`</a>`)
|
9.9 Dynamic Memory Allocation (9.9.1-9.9.4)
9.11 Common Memory-Related Bugs in C
(Skip Assembly)
|
Thu 9/17
|
A Simple Allocator
|
Garbage
Collection (PDF)
(22:05)
Pre-class
survey
(`<a href = "/cs61wiki/images/2/2a/9_17_15-solutions.pdf">`Solutions`</a>`)
|
9.9.5-9.9.8 Implementation issues
9.10 Garbage Collection
|
Fri 9/18
|
A1 Due
|
4
Section
Notes
|
Tu 9/22
|
Unit II: Machine Programming
From C to Assembly and back
|
`<a href ="https://mix.office.com/watch/1t0h04fwaaa9t">` Introduction to Assembly`</a>` (`<a href="/cs61wiki/images/0/05/Asm-intro.pdf">`PDF`</a>`) (13:10)
`<a href = "https://mix.office.com/watch/1fa23jmsx7ufw">`Arithmetic and Logical Operators`</a>` (`<a href = "/cs61wiki/images/a/a1/Asm-operators.pdf">`PDF`</a>`) (12:40)
Web Work
(`<a href = "/cs61wiki/images/c/c5/9_22_15-solutions.pdf">`Solutions`</a>`)
|
See Note below
3-3.5 Arithmetic and Logical Operations
|
Thu 9/24
|
Fun with Control Flow
|
<!--
Addressing Modes
Control Flow
|
--!>
Addressing
Modes
(`<a href = "/cs61wiki/images/a/ad/Asm-addressing.pdf">`PDF`</a>`) (9:18)
Control Flow
(`<a href = "/cs61wiki/images/9/91/Asm-control.pdf">`PDF`</a>`) (19:54)
Web Work
(`<a href = "/cs61wiki/images/5/5a/9_24_15-solutions.pdf">`Solutions`</a>`)
|
3.6-3.7 Control and Procedures
|
5
Section
Notes
|
Tu 9/29
|
Assembly Roulette
|
Calling Conventions
(`<a href = "/cs61wiki/images/b/bd/Asm-call.pdf">`PDF`</a>`) (20:11)
Web Work
(`<a href = "/cs61wiki/images/c/c5/9_29_15-solutions.pdf">`Solutions`</a>`)
|
3.12/3.10.3 Out of Bounds Memory
|
Thu 10/1
|
Unit III: The Memory Hierarchy
Go Fast/Go Slow
|
`<a href ="https://mix.office.com/watch/4ihl8cho7xnh">`Buffer Overflows`</a>`(`<a href="/cs61wiki/images/1/18/Buffer-overflow.pdf">`PDF`</a>`) (24:40)
`<a href = "https://mix.office.com/watch/1wbbu07yuggh4">`Architecture and Caching`</a>` (`<a href="/cs61wiki/images/2/28/Architecture.pdf">`PDF`</a>`) (19:24)
Web Work
(`<a href = "/cs61wiki/images/8/80/10_1_15-solutions.pdf">`Solutions`</a>`)
|
6.1 Storage Technologies
6.2 Locality
6.3 The memory hierarchy
|
Fri 10/2
|
A2 Due
|
6
Section
Notes
|
Tu 10/6
|
Building a Simple Cache
|
`<a href = "https://mix.office.com/watch/1oga2tvehka0m">`Cache Details`</a>`
(`<a href = "/cs61wiki/images/8/8c/Caching.pdf">`PDF`</a>`) (32:15)
Web Work
(`<a href = "/cs61wiki/images/e/eb/10_6_15-solutions.pdf">`Solutions`</a>`)
|
10 System I/O (skip 10.4)
|
Thu 10/8
|
Building a Simple Cache
(cont)
|
Replacement/Eviction Policies
(`<a href = "/cs61wiki/images/c/cb/Replacement.pdf">`PDF`</a>`) (14:04)
Web Work
(`<a href = "/cs61wiki/images/3/33/10_8_15-solutions.pdf">`Solutions`</a>`)
|
6.4 Cache Memories
6.5 Writing Cache Friendly Code
6.6 Putting it Together
|
Fri 10/9
|
A3 Intermediate Checkin
|
7
Section
Notes
|
Tu 10/13
|
Matrix Multiply: HW Cache
Effectiveness
|
mmap
(`<a href ="/cs61wiki/images/6/6f/Mmap.pdf">`PDF`</a>`) (18:20)
Web Work
(`<a href = "/cs61wiki/images/0/0c/10_13_15-solutions.pdf">`Solutions`</a>`)
|
None
|
Th 10/15
|
Unit IV: Process Management
Baby Shell
Baby Shell
|
Fork and Exec
(`<a href = "/cs61wiki/images/3/3f/Fork-exec.pdf">`PDF`</a>`) (25:08)
Web Work
(`<a href = "/cs61wiki/images/9/9d/10_15_15-solutions.pdf">`Solutions`</a>`)
|
8.2 Processes
8.4 Process Control
|
Fri 10/16
|
A3 Due
|
8
Section
Notes
|
Tu 10/20
|
Midterm review
|
Midterm review
Web Work
|
|
Thu 10/22
|
Midterm Exam
( Solutions )
(Extension: 7:00 PM - 8:30, Maxwell Dworkin 221, 33 Oxford Street Cambridge)
|
9
Section Notes
|
Tu 10/27
|
Pipes and
Redirection
|
`<a href = "https://mix.office.com/watch/2x650fqml0z2">`Pipes`</a>` (`<a href = "/cs61wiki/images/4/4f/Pipes.pdf">`PDF`</a>`) (22:06)
Web Work
(`<a href = "/cs61wiki/images/8/8e/10-27-15-solutions.pdf">`Solutions`</a>`)
|
8.1 Exceptions
8.3 System Call Error Handling
8.5 Signals
|
Thu 10/29
|
Signals
Process Groups
|
Read This article
`<a href = "https://mix.office.com/watch/asxtw3dsaqrj">`Signals`</a>` (`<a href = "/cs61wiki/images/d/d4/Signals.pdf">`PDF`</a>`) (24:40)
`<a href = "https://mix.office.com/watch/oosq2qnx6bxy">`Waiting`</a>` (`<a href = "/cs61wiki/images/5/5b/Waiting.pdf">`PDF`</a>`) (11:04)
Web Work
(`<a href = "/cs61wiki/images/3/37/10_29_15-solutions.pdf">`Solutions)
|
None
|
Fri 10/30
|
A4 Intermediate Checkin
|
10
Section
Notes
|
Tu 11/3
|
Midterm Solution Discussion
A4 Mega Office Hours
|
Synchronizing processes
(`<a href = "/cs61wiki/images/1/18/Select.pdf">`PDF`</a>`) (20:43)
Synchronization overview
(`<a href = "/cs61wiki/images/c/c6/Synch-overview.pdf">`PDF`</a>`) (14:53)
Web Work delayed until Thursday since these went up so late -- apologies -- awful Internet access!
|
12.1 Concurrent Programming with Processes
12.2 Concurrent Programming with I/O Multiplexing
|
Thu 11/5
|
Programming with pthreads
|
Synchronization Primitives
(`<a href = "/cs61wiki/images/6/67/Synch-primitives.pdf">`PDF`</a>`) (17:26)
Threads and Pthreads
(`<a href = "/cs61wiki/images/3/31/Threads.pdf">`PDF`</a>`) (12:12)
Web Work
(`<a href = "/cs61wiki/images/0/0f/11_5_15-solutions.pdf">`Solutions`</a>`)
|
12.3 Concurrent Programming with Threads
12.4 Shared Variables in Threaded Programs
12.5 Synchronizing Threads with Semaphores
12.6 Using Threads for Parallelism
|
Fri 11/6
|
A4 Due
|
11
Section Notes
|
Tu 11/10
|
More synchronization practice
|
`<a href = "https://mix.office.com/watch/1gled1viz34rl">`Building and Programming with Semaphores`</a>`
(`<a href = "/cs61wiki/images/4/4f/Semaphores.pdf">`PDF`</a>`) (26:52)
Web Work
(`<a href = "/cs61wiki/images/e/e7/11_10_15-solutions.pdf">`Solutions`</a>`)
|
None
|
Thu 11/12
|
Solving Classic Synchronization
Problems
|
Dobby the Elf
(PDF) (10:12)
No Web Work!
|
None
|
12
Section Notes
|
Tu 11/17
|
Unit 6: Virtual memory
|
VM Overview
(`<a href = "/cs61wiki/images/b/b6/Vm-concepts.pdf">`PDF`</a>`) (12:52)
x86 VM
(`<a href = "/cs61wiki/images/b/bf/Vm-x86.pdf">`PDF`</a>`) (26:45)
Web Work
(Solutions `<a href = "/cs61wiki/images/f/fc/11-17-15-12-solutions.pdf">`pp12`</a>` `<a href = "/cs61wiki/images/7/73/11-17-15-34-solution.pdf">`pp34`</a>`)
|
9.1 Physical and Virtual Addressing
9.2 Address Spaces
9.3 VM as a tool for caching
|
Thu 11/19
|
Meet a Weensy OS (but not the Weensy
OS)
|
`<a href = "https://mix.office.com/watch/pfx56byheins">`VM Features`</a>`
(`<a href = "/cs61wiki/images/3/33/Vm-tricks.pdf">`PDF`</a>`) (28:00)
Pre-class Work
(`<a href = "/cs61wiki/images/5/57/11-19-15-solutions.pdf">`PDF`</a>`)
|
9.7: The Intel Core i7/Linux Memory System
|
Fri 11/20
|
A5 Due
|
13
|
Tu 11/24
|
Weensy OS
|
Kernel Programming/Introduction to Weensy OS
(`<a href = "/cs61wiki/images/6/6e/Kernel.pdf">`PDF`</a>`) (36:44)
Pre-class work
(`<a href = "/cs61wiki/images/8/85/11_24_15-solutions.pdf">`Solutions`</a>`)
|
Read Assignment 6.
|
Thu 11/26
|
No class
|
|
|
14
|
Tu 12/1
|
Building a Network Server (1)
|
Building a networked server
(`<a href = "/cs61wiki/images/0/03/Network.pdf">`PDF`</a>`) (31:36)
Pre Class Work
(`<a href = "/cs61wiki/images/2/2a/12_1_15-solutions.pdf">`Solutions`</a>`)
|
11.1 Client/Server Programming
11.2 Networks
|
Thu 12/3
|
Building a Network Server (2)
|
NONE!
|
11.4 The Sockets Interface
11.5 Web Services
11.6 Putting it Together (The TINY Web Server)
|
15
|
Tue 12/8
|
A6 Due
|
Sat 12/12
|
Final Exam: 9:00 AM - Noon Lowell Lecture Hall (Both College and
Extension) 17 Kirkland Street.
(Solutions)
|
NOTE: The 3rd edition of the text book presents assembly language on a
64 bit machine, while the 2nd edition presents it on a 32 bit machine.
Our appliance is a 32-bit machine and we will be using that for all our
assembly language exercises (and the problem set). In general, the
information is easily transferable, but everywhere that the 3rd edition
talks about quad words (e.g., movq), we will be talking about longs
(e.g., movl).