This course focuses on physical computing. This involves the
study and interaction of hardware and software to sense and respond to
the physical world. We extend the idea of a computer as a black box
operating in isolation of its environment, to one in which it plays a
central role in actions and reactions to external physical phenomena.
The course will be lab-centric, with an emphasis on software
development for microcontroller boards, such as Arduino-based platforms
that leverage multiple sensors and actuators.
The aim of this course is to introduce students to low-level
programming skills by peeling away the layers of software, and related
abstractions, that currently exist in today's development environments.
If you've ever really wondered what happens during program execution,
right down to the electrical signal level, when you write your first
"hello, world!" program, this is the place to start.
Topics include a study of microcontrollers, sensors, actuators,
analog and digital I/O, wireless and serial communication, hardware
timing, pulse-width modulation (PWM), interrupt handling, and
co-routines/proto-threading, amongst others. Design projects,
team challenges and student project presentations may also be covered.
Prerequisites: CS210 or consent of instructor.
Book and supplies: There is no text-book requirement for this
course. Electronic and printed materials will be provided as necessary.
The development platforms used in the course will be available for
purchase and are expected to be on par with the price of a typical