These are Dave Patterson's comments about CS61C, "Machine Structures," taught at U.C. Berkeley in Spring 1999. Some notes are from before I started lecturing, but most are as a result of the lectures. I suggest reading them if you are going to teach the material and try to use the lecture slides.
CS61C is a large class, almost all freshmen and sophomores, that requires a cadre of Teaching Assistants and Readers to manage the class. The assignments are broken into things completed in scheduled computer labs, homework exercises, and larger projects, plus midterm and final. They have taken one intro course based on Abelson and Sussman in Scheme (CS61A), and may or may not have taken a data structures course in Java (CS61B). They are required to know how to write a recursive program in C, C++, or Java. They are expected to learn some C as part of 61C.
Prior versions had 2 midterms and 1 final, but to reduce the workload on the teaching staff to makeup and grade the exams, I limited it to 1 midterm. This gave enough time for TA's to help make up the questions, which is good for them. We started about 3 weeks before the exam, and I think this gave us time to get a fairly-well debugged midterm and final. The questions that we didn't use we placed on the practice midterm and final.
As the goal is education, its great to find effective ways for students to study on their own to prepare for the exam. Old tests, practice exams, and review sessions all help them learn the material.
I was satisfied that 1 midterm + 1 final, given all the support infrastructure for each exam, was sufficient for grading and made the class better for everyone
Labs
List of 11 labs |
Favorite |
Least Favorite |
1. First MIPS program |
35 |
20 |
2. Second, Third MIPS functions: translate multiplier routines |
9 |
12 |
3. Fourth MIPS program: sum of array function |
26 |
58 |
4. Debugging: find at least 2 errors in MIPS program |
8 |
16 |
5. First part of Project 3, instruction interpretation |
16 |
4 |
6. Polling I/O lab |
15 |
4 |
7. (midterm survey; choice not available) |
||
8. Network Examples: ping, traceroute |
66 |
24 |
9. Program to find cache parameters |
32 |
15 |
10. Processes, virtual memory, physical memory, swap space |
8 |
49 |
11. MIPS vs. HP vs. Intel instruction sets: CPI, optimized vs. unopt code |
24 |
31 |
Projects
List of 6 projects (plus goals) |
Favorite |
Least Favorite |
1. Philspel (learn C) |
32 |
101 |
2. Disassembler (learn MIPS format and practice C) |
30 |
29 |
3. Instruction Interpreter (understand interpretation, learn MIPS, and practice C) |
53 |
10 |
4. Interrupt Handler in MIPS (understand interrupts vs. polling, practice MIPS) |
46 |
34 |
5. Cache Simulator (understand caches, and practice C) |
57 |
52 |
6. Sprintf in MIPS (Review of parameter passing, understand how C is implemented, practice MIPS) |
39 |
26 |
Assignments
One issue is keeping on top of the readers to get things back in a timely fashion, especially
Initial Lab/Project Ideas
an AMAZING amount of time, but I'm sure I will get my reward for reuse in later course offerings (and probably helping other instructors in cyberspace as well), so I don't mind as much.
Grand total was 926 slides, or more pages than in COD
My class has 370 students (!) in the 5th week of classes, so part of challenge is administrative as well.
Notes from teaching class.
Big Ideas |
lost! |
significant questions |
understand well |
know very well |
||
Principle of abstraction |
3 |
20 |
117 |
143 |
||
Pliable Data |
13 |
27 |
87 |
157 |
||
Stored program concept |
1 |
26 |
89 |
167 |
||
Principle of Locality |
11 |
76 |
128 |
68 |
||
Exploiting parallelism |
11 |
83 |
128 |
62 |
||
Performance measurement |
14 |
100 |
125 |
43 |
Seems like it wored well; only 1 with many questions was performance measurement, and we only spent 1 lecture on the topic
Review lecture survey |
waste of time |
marginal |
helpful |
very helpful! |
Review lectures in general |
6 |
58 |
152 |
63 |
Stack passing review lecture |
6 |
51 |
157 |
57 |
Cache/VM/TLB review lecture |
3 |
59 |
162 |
47 |
Polling/interrupt review lecture |
3 |
38 |
102 |
20 |
Midterm review |
13 |
62 |
114 |
73 |
Little Topics |
lost! |
significant questions |
understand well |
know very well |
C/Asm Operations, operands |
2 |
11 |
101 |
162 |
C/Asm Decisions |
2 |
22 |
110 |
148 |
C/Asm constants |
2 |
22 |
107 |
152 |
C/Asm Procedures, register conventions |
2 |
19 |
126 |
136 |
C/Asm Procedures, stack v. heap v. static |
8 |
71 |
148 |
56 |
Addressing modes |
2 |
54 |
156 |
68 |
C/Asm pointers |
7 |
51 |
137 |
88 |
C/Asm Characters, Strings |
2 |
38 |
141 |
101 |
2's complement |
1 |
16 |
113 |
153 |
Logical operations: shift, and, or |
1 |
11 |
107 |
164 |
Floating point |
9 |
51 |
159 |
63 |
Polling I/O |
9 |
74 |
136 |
64 |
Interrupt I/O |
9 |
86 |
144 |
44 |
Storage Devices |
6 |
59 |
162 |
56 |
LRU |
17 |
53 |
120 |
91 |
Direct Mapped/Set Associative/Fully Associative |
10 |
50 |
142 |
81 |
TLB |
38 |
123 |
85 |
35 |
Paging |
34 |
120 |
106 |
23 |
Datapath block diagram |
21 |
108 |
120 |
33 |
ALU |
18 |
83 |
132 |
48 |
Multiply |
18 |
79 |
142 |
44 |
Divide |
21 |
91 |
136 |
35 |
Latency vs. Throughput |
8 |
97 |
129 |
49 |
CPI |
10 |
67 |
141 |
65 |
Pipelined Instruction Execution |
9 |
76 |
137 |
61 |
Structural Hazards |
11 |
95 |
142 |
35 |
Control Hazards |
11 |
93 |
144 |
36 |
Data Hazards |
10 |
93 |
143 |
38 |
Branch Prediction |
12 |
108 |
123 |
39 |
Delayed Branch |
13 |
110 |
117 |
43 |
Forwarding |
16 |
87 |
135 |
45 |
Load-use Hazard |
37 |
133 |
88 |
24 |