Schedule


Below is a preview of our week-by-week plan for the entire quarter. There may be slight adjustments and rearrangements as we go. The schedule for the final project is set and will not change.

In the readings below, K&R refers to Kernighan and Ritchie's classic text The C Programming Language (accessible via Stanford's subscription to Safari Books Online). Nick Parlante's EssentialC is another great C reference. Please do the recommended readings before lecture for best effect!

Date Topics/Readings
Week 1
Lecture
Mon 9/26
Introduction and Welcome ( slides)

Readings:

Lab/assign Lab 0: Orientation ( writeup)

Please do the Lab 0 prelab preparation before coming to lab.

Assignment 0: Git oriented ( writeup)
Lecture
Wed 9/28
ARM processor and architecture ( slides, code )
Week 2
Lecture
Mon 10/3
ARM assembly and machine code ( slides, code )
Lab/assign Lab 1: Setup your Raspberry Pi ( writeup)

Please do the Lab 1 prelab preparation before coming to lab.

Assignment 1: Implement a Larson Scanner
Lecture
Wed 10/5
From Assembly to C
Week 3
Lecture
Mon 10/10
C Pointers and Arrays
Lab/assign Lab 2: Below C Level Assignment 2: Implement a Clock
Lecture
Wed 10/12
C Functions
Week 4
Lecture
Mon 10/17
Communication and the Serial Protocol
Lab/assign Lab 3: Debugging and Testing Assignment 3: Implement a String Formatting Library
Lecture
Wed 10/19
Modules, Libraries, and Linking
Week 5
Lecture
Mon 10/24
Memory Management
Lab/assign Lab 4: Linked and Loaded Assignment 4: Backtrace and Malloc
Lecture
Wed 10/26
C Mastery
Week 6
Lecture
Mon 10/31
Keyboards and the PS/2 Protocol
Lab/assign Lab 5: Keyboard Surfin' Assignment 5: Keyboard and Simple Shell
Lecture
Wed 11/2
Graphics and the framebuffer
Week 7
Lecture
Mon 11/7
Interrupts
Lab/assign Lab 6: Drawing into the Framebuffer Assignment 6: Graphics Library and Console
Lecture
Wed 11/9
Interrupts, cont'd
Week 8
Lecture
Mon 11/14
Sensors
Lab/assign Lab 7: Raspberry Pi, Interrupted Assignment 7: System Monitor with Interrupts
Lecture
Wed 11/16
Anna & Maria on Performance
Week 9
Lecture
Mon 11/21
Matt on Trust and Safety
Lab/assign Lab 8: Project Team Meeting 1 Final Project ( writeup)
Lecture
Wed 11/23
Computer Arithmetic
Week 10
Lecture
Mon 11/28
No lecture (public holiday)
Lab/assign Lab 9: Project Team Meeting 2
Lecture
Wed 11/30
No lecture (project lab time, office hours available)
Week 11
Lecture
Mon 12/5
Sound, Analog, and Music
Lab/assign
Lecture
Wed 12/7
Week 12
Final Project
Demo session Tue 12/13 at 3:30 pm
Code submission due Wed 12/14 at 11:59 pm