CS107 is the third course in Stanford’s introductory programming sequence. CS106 provides students with a solid foundation in programming methodology and abstractions, and CS107 follows on to give you the skills needed to build computer systems.
There are two major learning goals for the course.
First, to understand how computers represent information, execute programs, and control peripherals.
Second, to master command-line programming tools and the C programming language.
The course builds understanding from the ground up using bare metal programming on the Raspberry Pi. Bare metal programming uses no operating system and few external libraries.
Students will receive a Raspberry Pi and a kit of parts, and all assignments will run on the Raspberry Pi. Assignments build upon each other by adding more and more functionality to a core library. They culminate in a simple personal computer shell using a keyboard and display.
Finally, students do a project of their choosing where they build a complete hardware-software system.
All class announcements will be posted on Piazza.
In the readings, K&R is The C Programming Language (Kernighan and Ritchie), and EssentialC is a PDF available via Stanford’s CS Library. A digital copy of K&R is available to Stanford students via Safari Books Online.
Please read the assigned readings before attending lecture and lab. You should also read the guides for each week.
Winter 2018 schedule TBA.