| Date | Topic | Notes | 
| January 18 | Course overview: -- Programming in the physical world | Introductory notes | 
| January 20 | Introduction to the Arduino: -- Hardware / IDE overview | Introduction to the Arduino | 
| January 25 | Arduino IDE walkthrough: -- Getting started with hardware -- Examples: Blinking LEDs | Arduino notebook (Download and install IDE s/w on laptop or use lab machines) Lab 1 | 
| January 27 | Microcontroller overview: -- Atmel ATmega 328 / AVR family -- Timers, PWM, analog / digital IO | MegaAVR Family microcontroller
notes | 
| February 1 | Class assignment: -- Complete and test robot -- Basic motion control -- H-bridge driver / motor controller logic/programming | Lab 2 | 
| February 3 | Electronics 101 for CS Majors: -- Basic circuit theory, KCL, KVL, Ohm's Law -- Components: Resistors, capacitors, transistors, etc --Op Amps, ADCs, DACs, and H-bridge motor controllers | Intro notes on electronics | 
| February 8 | Actuators: -- Basics of DC motors, ... | Notes on motors/actuators | 
| February 10 | Hardware timers, watchdogs and interrupt handling -- Example AVR timing -- PWM signal generation -- Arduino PWM support versus low-level code for signal generation | Notes on timing | 
| February 15 | Class assignment: -- PWM generator / motor speed controller -- Interrupt handler / timer problem | Lab 3 Notes on PWM, advanced timing and interrupts | 
| February 17 | Input / output -- Analog vs digital -- Examples (e.g., resistive touchscreens as analog sensors, light and temperature sensing, ...) | Notes on touchscreen sensors | 
| February 22 | -- No class -- -- Monday schedule -- | |
| February 24 | Class assignment: -- Touchscreen input | Lab 4 | 
| March 1 | Class assignment: -- Light / temperature sensing | Datasheets for LM35 temperature
and GL5528 
light sensors | 
| March 3 | Serial communication revisited -- Background -- TTY driver for PC communication -- UARTs / RS232 | Lab 5 Example serial communication files (ssc.c and ssc.h) | 
| March 8 | Class assignment: -- Minicom-style serial communication driver | Notes on serial
communication | 
| March 10 | Fun with Arduinos -- DFRobot Rover -- Writing libraries -- Basic robot control (e.g., forward, reverse, path following) Spring Assignment: -- Behaviors library for robot (motion and speed control) | Behaviors Library assignment
for robot | 
| March 15 | -- Spring Recess -- | |
| March 17 | -- Spring Recess -- | |
| March 22 | Wireless communication -- WiShield overview -- Setting up / configuration | |
| March 24 | Class assignment: -- wireless robot control | Lab
6 | 
| March 29 | uIP overview / protosockets / protothreads | Source code for protothreads/coroutines See also: | 
| March 31 | Class assignment: -- socket versus web interfacing for wireless robot control | |
| April 5 | Class assignment: -- Telemetry system -- Sensor readings relayed to remote PC | |
| April 7 | IR line detection and motion control | SINGLE IR-sensor line-following example sketch Another version of the above, using interrupts rather than periodic sampling | 
| April 12 | Class assignment: -- line following | Instructor traveling Lab 7 | 
| April 14 | TBA | Instructor traveling | 
| April 19 | Group-based project: -- Cat-and-mouse -- Maze solver -- Capture the flag -- Leader-follower -- Etc. | Group project description | 
| April 21 | -- No class -- -- Monday Schedule -- | |
| April 26 | Team challenge: -- develop strategy for group project | |
| April 28 | Team challenge: -- cont'd development | |
| May 3 | Team challenge: -- compete against opposite team(s) | |
| May 5 | Team presentations: -- Approach -- Lessons learned -- Problems and solutions |