CS 49N: Using Bits to Control Atoms
This is a crash course in how to use a stripped-down computer system about the size of a credit card (the Raspberry Pi computer) to control as many different sensors as we can implement in ten weeks, including LEDs, motion sensors, light controllers, and accelerometers. The ability to fearlessly grab a set of hardware devices, examine the data sheet to see how to use it, and stitch them together using simple code is a secret weapon that software-only people lack, and allows you to build many interesting gadgets. We will start with a "bare metal'" system—no operating system, no support—and teach you how to read device data sheets describing sensors and write the minimal code needed to control them (including how to debug when things go wrong, as they always do). This course differs from most in that it is deliberately mostly about what and why rather than how—our hope is that the things you are able to do at the end will inspire you to follow the rest of the CS curriculum to understand better how things you've used actually work.
Meet the Instructor
Dawson Engler is an associate professor of computer science and electrical engineering at Stanford. He received his Ph.D. from MIT for his work on the exokernel operating system and his undergraduate degree from University of Arizona, the latter in large part funded by being a bouncer. His research mainly focuses on devising automatic methods to find as many interesting bugs in real code as possible, including static analysis, implementation-level model checking, and symbolic execution. His research group has won numerous "Best Paper'' awards and produced successful tools (both open-source and commercial) that have found millions of errors in mature systems. Most recently he has been developing systems for computer-controlled (CNC) fabrication machines; his work using these systems has appeared in numerous fashion runway shows. He won the 2006 Weiser award and the 2008 ACM Grace M Hopper award.