Welcome to the Winter 2020 offering of CS107E!

CS107E is Computer Systems from the Ground Up. Read more about the course here.

  • March 9, 2020: We will continue in entirely virtual/remote format from here to end of quarter (See Piazza post for logistics) Keep an eye on Piazza forum for updates and stay in touch. Above all, take care to be safe and well.
  • March 14, 2020: Note to Prospective Spring CS107E Students CS107E will be offered in the Spring of 2020. Because it is a hands-on class that has a kit, we will be mailing the kits to students in the class before spring break. Because CS107E has limited enrollment, the implication of this is that we will select students for the course before Wednesday, March 25th. On Saturday, March 21st, we will email a questionnaire to all students enrolled in the course, to be completed by Monday, March 23rd. Because we are physically mailing kits, we ask that students do not shop CS107E, because we have no way of transferring the kit to another student. If you have any questions, please email me (pal@cs.stanford.edu).

Upcoming events

  • Loading...

This week’s schedule

Date Topics/Readings
Week 1
Mon 1/6
Introduction and Welcome ( slides )


Lab/assign No lab in first week Assignment 0: Choose Lab Section, Learn Git ( writeup )
Fri 1/10
ARM processor and architecture ( slides , code )
Week 2
Mon 1/13
ARM assembly and machine code ( slides , code )
Lab/assign Lab 1: Setup your Raspberry Pi ( writeup )

Please do the Lab 1 prelab preparation before coming to lab.

Assignment 1: Implement a Larson Scanner ( writeup )
Fri 1/17
From Assembly to C ( slides , code )
  • Review sections A3.2 and A3.3 on conditional execution and branch instructions from the ARM Instruction Set manual
  • Brush up on C basics (syntax, data types, operators, control structures) via your favorite C reference; sections 1-2 of Nick Parlante’s EssentialC; or chapters 1, 2, and 3 of K&R. Skip content on I/O and standard libraries (we are bare metal!)
  • Read Dennis Ritchie’s account of the history of C
  • Try out the Compiler Explorer demoed in lecture

See schedule for entire quarter.

Meet the CS107E team