CS107 is the third course in Stanford's introductory programming sequence. The CS106 courses build a solid foundation in programming methodology and abstractions and CS107 follows to establish programming maturity and expand breadth and depth of experience. The course works from the C programming language down to the microprocessor to de-mystify the machine. With a complete understanding of how computer systems execute programs and manipulate data, you will become a more effective programmer, especially in dealing with issues of debugging, performance, portability, and robustness. The course has three weekly meetings: two lectures and one lab for hands-on learning and experimentation. Local students will be strongly encouraged to attend lab sessions in person on the Stanford campus if at all possible.