Course Description

Computer Systems from the Ground Up

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. The course will start with the microprocessor and move up to the C programming language, without skipping anything in between. The goal is to build a solid understanding of all aspects of how modern computers execute programs and how program development tools work.

Topics covered include:

CS107e is an experimental approach that teaches the fundamental concepts of computer systems through bare metal programming on the Raspberry Pi. Bare metal programming means you will not run an operating system on the Raspberry Pi and will make minimal use of libraries. This course also serves as a short introduction to embedded systems.

This class is organized by weeks. Each week consists of two lectures on Fri and Mon, a lab offered on Tue or Wed evening, and a programming assignment which is due the following Tue at 5 PM (an hour before the Tue lab). Lecture and lab attendance is mandatory. There will be a short final project, but no exams.

Readings will be assigned from a variety of sources, including The C Programming Language, Kernighan and Ritchie.