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 1/9 |
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 Fri 1/13 |
ARM processor and architecture
( slides, code )
|
|
Week 2 | ||
Lecture Mon 1/16 |
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 ( writeup) |
Lecture Fri 1/20 |
From Assembly to C
( slides, code )
|
|
Week 3 | ||
Lecture Mon 1/23 |
C Pointers and Arrays
( slides, code )
|
|
Lab/assign |
Lab 2: Below C Level
( writeup)
Prelab to prep before lab. |
Assignment 2: Implement a Clock ( writeup) |
Lecture Fri 1/27 |
C Functions
( slides, code )
|
|
Week 4 | ||
Lecture Mon 1/30 |
Communication and the Serial Protocol | |
Lab/assign | Lab 3: Debugging and Testing | Assignment 3: Implement a String Formatting Library |
Lecture Fri 2/3 |
Modules, Libraries, and Linking | |
Week 5 | ||
Lecture Mon 2/6 |
Memory Management | |
Lab/assign | Lab 4: Linked and Loaded | Assignment 4: Backtrace and Malloc |
Lecture Fri 2/10 |
C Mastery | |
Week 6 | ||
Lecture Mon 2/13 |
Keyboards and the PS/2 Protocol | |
Lab/assign | Lab 5: Keyboard Surfin' | Assignment 5: Keyboard and Simple Shell |
Lecture Fri 2/17 |
Graphics and the framebuffer | |
Week 7 | ||
Lecture Mon 2/20 |
Presidents Day | |
Lab/assign | Lab 6: Drawing into the Framebuffer | Assignment 6: Graphics Library and Console |
Lecture Fri 2/24 |
Interrupts | |
Week 8 | ||
Lecture Mon 2/27 |
Interrupts, cont'd | |
Lab/assign | Lab 7: Raspberry Pi, Interrupted | Assignment 7: System Monitor with Interrupts |
Lecture Fri 3/3 |
Sensors | |
Week 9 | ||
Lecture Mon 3/6 |
TBD | |
Lab/assign | Lab 8: Project Team Meeting 1 | Final Project |
Lecture Fri 3/10 |
Computer Arithmetic | |
Week 10 | ||
Lecture Mon 3/13 |
TBD | |
Lab/assign | Lab 9: Project Team Meeting 2 | |
Lecture Fri 3/17 |
Wrap or There and Back Again | |
Week 11 | ||
Final Project Demo session Fri 3/24 at 9:00 am Code submission due Fri 3/24 at 11:59 pm |