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 9/23 |
Introduction and welcome
( slides, code )
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 9/27 |
RISC-V architecture
( slides, code )
|
|
Week 2 | ||
Lecture Mon 9/30 |
RISC-V assembly and machine code
( 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 10/4 |
From Assembly to C
( slides, code )
|
|
Week 3 | ||
Lecture Mon 10/7 |
C Pointers and Arrays
( slides, code )
|
|
Lab/assign |
Lab 2: Below C Level
( writeup )
Prelab to prep before lab. |
Assignment 2: Clock ( writeup ) |
Lecture Fri 10/11 |
C Functions
( slides, code )
|
|
Week 4 | ||
Lecture Mon 10/14 |
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 10/18 |
Modules, Libraries, and Linking
( slides, code )
|
|
Week 5 | ||
Lecture Mon 10/21 |
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 10/25 |
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 10/28 |
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 |
Lecture Fri 11/1 |
||
Week 7 | ||
Lecture Mon 11/4 |
Graphics and the framebuffer | |
Lab/assign | Lab 6: Drawing into the Framebuffer | Assignment 6: Graphics Library and Console |
Lecture Fri 11/8 |
Interrupts | |
Week 8 | ||
Lecture Mon 11/11 |
Interrupts, cont'd | |
Lab/assign | Lab 7: Mango Pi, Interrupted | Assignment 7: System Monitor with Interrupts |
Lecture Fri 11/15 |
Sensors | |
Week 9 | ||
Lecture Mon 11/18 |
/lectures/Sensors2/ | |
Lab/assign | Lab 8: Project Team Meeting 1 | Final Project |
Lecture Fri 11/22 |
Project | |
Week 10 | ||
Lecture Mon 11/25 |
Thanksgiving recess | |
Lab/assign | ||
Lecture Fri 11/29 |
Thanksgiving recess | |
Week 11 | ||
Lecture Mon 12/2 |
/lectures/Guest/ | |
Lab/assign | Lab 9: Project Team Meeting 2 | |
Lecture Fri 12/6 |
Wrap or There and Back Again | |
Week 12 | ||
Final Project Demo session Fri 12/13 at 9:00 am Code submission due Fri 12/13 at 11:59 pm |