Physical Computing with Python and Microcontrollers

« Return to Course Catalog

This course is no longer being offered.

Course Description

'Physical computing' refers to the collection of tools and techniques that allows computers to interact with the physical world. Microcontrollers such as the popular Arduino(™) -- are the simplest, lowest-cost computers useful for physical computing -- typically costing tens of dollars, and capable of running single, simple programs, useful for basic physical interactions. Such devices are also now being deployed as part of the ‘Internet of Things’ (IOT), which promise to provide new solutions in a wide array of contexts, including: real-time road conditions, water quality assessment, laboratory and field research, and agricultural production

Micropython is a new approach to programming microcontrollers that uses Python, a programming language used widely in computer science education and in scientific and industrial applications. The Micropython language makes learning and using microcontroller even more accessible, and allows for live interactions with running programs, making debugging easier.

This course will cover the following topics and concepts: a) the basics of programming in a microcontroller context: variable assignments, control loops, simple data structures, and memory and timing constraints imposed by hardware; b) digital input and output; c) analog input and output; d) data storage and retrieval; e) simple electrical circuit principles; f) sensors and actuators; and g) time series data: recording, graphing, and analysis; and g) how to determine which hardware designs are appropriate for solving which types of problems.

Students are expected to work in small teams when addressing each physical computing challenge. In-class laboratory work will consist in coding in a computer laboratory or on laptops, as well as breadboarding simple, low-voltage circuits. Some of the challenges that will be posed in the class may include: creating a system for having an LED respond to temperature level changes; moving servos according to a pattern; recording temperature, humidity, and light levels; graphing and analyzing data to determine trends.

Learning physical computing techniques reinforces programming concepts in a hands-on way, and is a useful tool that can be used by students in their future academic studies. Students will finish the course with a small portfolio of modular, reusable tools and approaches that can later be employed in a variety of contexts. The skills learned in this course might lead students towards developing their own scientific instrumentation in a laboratory; inventing new agricultural or land and water management systems; learning more about robotics; or creating interactive art installations.

Prerequisites: Previous experience with a programming language, as well as some basic familiarity with electrical circuits, is expected: variable assignment, conditional statements (if / then), for loops; wiring up a battery to an LED; positive and negative terminals on batteries; the basics of electrical current flow and electrical connections in simple circuits. The final part of the course uses data analysis techniques that assume prior experience with graphing functions: dependent and independent variables, axes, averaging.


Course Information

  • Course Code: CECS0604
  • Length: 2 weeks

Program Information

STEM for Rising 9th and 10th Graders

Two-week, non-credit residential program focused on STEM subjects and taught on Brown’s campus. For students completing grades 8-9 by June 2019; minimum age of 14 and maximum age of 15 by the start of the program.

Visit Program Page Learn How to Apply
Back to Top