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 3/30 |
Welcome and intro to RISC-V | |
| Lab/assign | Lab 0: Orientation | Assignment 0: Git oriented |
| Lecture Fri 4/3 |
RISC-V assembly and machine code | |
| Week 2 | ||
| Lecture Mon 4/6 |
From Assembly to C | |
| Lab/assign | Lab 1: Getting to know your Mango Pi | Assignment 1: Larson Scanner |
| Lecture Fri 4/10 |
C Pointers and Arrays | |
| Week 3 | ||
| Lecture Mon 4/13 |
C Functions | |
| Lab/assign | Lab 2: Below C Level | Assignment 2: Clock |
| Lecture Fri 4/17 |
Communication and the Serial Protocol | |
| Week 4 | ||
| Lecture Mon 4/20 |
Modules, Libraries, and Linking | |
| Lab/assign | Lab 3: Debugging and Testing | Assignment 3: String Formatting |
| Lecture Fri 4/24 |
Memory Management | |
| Week 5 | ||
| Lecture Mon 4/27 |
C Mastery | |
| Lab/assign | Lab 4: Linked and Loaded | Assignment 4: Stack and Heap |
| Lecture Fri 5/1 |
Keyboards and the PS/2 Protocol | |
| Week 6 | ||
| Lecture Mon 5/4 |
Sensor Input | |
| Lab/assign | Lab 5: Keyboard Surfin' | Assignment 5: Keyboard and Simple Shell |
| Lecture Fri 5/8 |
Graphics and the framebuffer | |
| Week 7 | ||
| Lecture Mon 5/11 |
Output | |
| Lab/assign | Lab 6: Drawing into the Framebuffer | Assignment 6: Graphics Library and Console |
| Lecture Fri 5/15 |
Interrupts | |
| Week 8 | ||
| Lecture Mon 5/18 |
Interrupts, cont'd | |
| Lab/assign | Lab 7: Mango Pi, Interrupted | Assignment 7: System Monitor with Interrupts |
| Lecture Fri 5/22 |
Project | |
| Week 9 | ||
| Lecture Mon 5/25 |
Memorial Day | |
| Lab/assign | Lab 8: Project Team Meeting 1 | Final Project |
| Lecture Fri 5/29 |
Wrap or There and Back Again | |
| Week 10 | ||
| Lecture Mon 6/1 |
No lecture (work on projects) | |
| Lab/assign | Lab 9: Project Team Meeting 2 | |
| Lecture Fri 6/5 |
No lecture | |
| Week 11 | ||
| Final Project Demo session Wed 6/10 at 9:00 am Code submission due Wed 6/10 at 11:59 pm |
||