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!
Week 1 | ||
Lecture Mon 1/6 |
RISC-V architecture
( slides, code )
|
|
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/10 |
RISC-V assembly and machine code
( slides, code )
|
|
Week 2 | ||
Lecture Mon 1/13 |
From Assembly to C
( slides, code )
|
|
Lab/assign |
Lab 1: Getting to know your Mango Pi
( writeup )
Please do the Lab 1 prelab preparation before coming to lab. |
Assignment 1: Larson Scanner ( writeup ) |
Lecture Fri 1/17 |
C Pointers and Arrays
( slides, code )
|
|
Week 3 | ||
Lecture Mon 1/20 |
MLK Day (no lecture) | |
Lab/assign |
Lab 2: Below C Level
( writeup )
Prelab to prep before lab. |
Assignment 2: Clock ( writeup ) |
Lecture Fri 1/24 |
C Functions
( slides, code )
|
|
Week 4 | ||
Lecture Mon 1/27 |
Communication and the Serial Protocol
( slides, code )
|
|
Lab/assign |
Lab 3: Debugging and Testing
( writeup )
Prelab to prep before lab. |
Assignment 3: String Formatting ( writeup ) |
Lecture Fri 1/31 |
Modules, Libraries, and Linking
( slides, code )
|
|
Week 5 | ||
Lecture Mon 2/3 |
Memory Management
( slides, code )
|
|
Lab/assign |
Lab 4: Linked and Loaded
( writeup )
Prelab to prep before lab. |
Assignment 4: Stack and Heap ( writeup ) |
Lecture Fri 2/7 |
C Mastery
( slides, code )
We've crossed the halfway point! We will use this lecture to catch-up/expand on lecture content covered lightly on first pass, and discuss how to further your mastery of C. Readings:
|
|
Week 6 | ||
Lecture Mon 2/10 |
Keyboards and the PS/2 Protocol
( slides, code )
|
|
Lab/assign |
Lab 5: Keyboard Surfin'
( writeup )
Prelab to prep before lab. |
Assignment 5: Keyboard and Simple Shell ( writeup ) |
Lecture Fri 2/14 |
Graphics and the framebuffer
( slides, code )
|
|
Week 7 | ||
Lecture Mon 2/17 |
Presidents Day (no lecture) | |
Lab/assign |
Lab 6: Drawing into the Framebuffer
( writeup )
Prelab to prep before lab. |
Assignment 6: Graphics Library and Console ( writeup ) |
Lecture Fri 2/21 |
Interrupts
( slides, code )
In this first lecture on interrupts, we'll focus on the low-level mechanics and what needs to happen at the assembly level to enable and process an interrupt. Readings: |
|
Week 8 | ||
Lecture Mon 2/24 |
Interrupts, cont'd
( slides, code )
Now we move up to the higher-level abstractions for interrupts, including library support for managing interrupt handlers and best practices for interrupt-safe code. Readings:
|
|
Lab/assign |
Lab 7: Mango Pi, Interrupted
( writeup )
Prelab to prep before lab. |
Assignment 7: System Monitor with Interrupts ( writeup ) |
Lecture Fri 2/28 |
Project
( slides )
Aditri, Ben, Frances, and Haley will offer guidance and inspiration on how to achieve a satisfying and successful final project! |
|
Week 9 | ||
Lecture Mon 3/3 |
Sensor Input
( slides, code )
Reading gpio inputs, how electrical signals can be used to observe physical phenomena, analog to digital conversion, protocols I2C and SPI. Readings:
|
|
Lab/assign |
Lab 8: Project Team Meeting 1
( writeup )
|
Final Project ( writeup ) |
Lecture Fri 3/7 |
Output
( slides, code )
Controlling gpio outputs, pulse-width modulation (PWM), I2S protocol for digital sound input/output. Readings:
|
|
Week 10 | ||
Lecture Mon 3/10 |
Floating Point and Sound
( slides, code )
|
|
Lab/assign | Lab 9: Project Team Meeting 2 | |
Lecture Fri 3/14 |
Wrap or There and Back Again
( slides )
|
|
Week 11 | ||
Final Project Demo session Fri 3/21 at 9:00 am Code submission due Fri 3/21 at 11:59 pm |