Programming Embedded Interfaces

LSU CSC4999 s16 (Spring 2005)

Instructor:   Dr. Brygg Ullmer, LSU CS & CCT
Time:   MWF 10:30am

 Course planned for delivery in collaboration with a similarly-themed course by
 Dr. Albrecht Schmidt, University of Munich

 jump to description | prerequisites | timeline | example code

The number of computers on desks and laps is dwarfed by those embedded in the physical world. New cars may incorporate 50 or more embedded processors -- most controlling interfaces to sensors, displays, actuators, networks, and people -- and there are likely far more embedded processors in operation than people on earth.

In this course, students will examine the concepts and practice, and work hands-on with programming embedded interfaces to sensors, actuators, displays, networks, people, and grids. In the process, they will gain proficiency in programming languages and approaches ranging from very low to very high levels of abstraction (including C, Java, Tcl, Prolog, and the basics of Assembler). Students will also gain familiarity with example hardware and application domains relevant to embedded interfaces, including wireless sensor networks and distributed user interfaces.

The course will be supported by cutting-edge software and hardware technologies under development at LSU. In addition, we intend to collaborate with a similarly-themed course in Germany, allowing practical experience with application areas such as wide-area sensor networks and distributed user interfaces. Heavy use of video conferencing will provide a means both for remote collaboration, as well as for observing the consequence of remote actions.

For example, in the first day of class, we will demonstrate how eight wires, eight lines of code, and less than $8 of parts can be used to construct a pair of synchronized lamps in Germany and the US, with each light switch controlling both lights (useful for communications, monitoring, and other purposes).

Working in small teams, students will learn to physically assemble and deploy working embedded processors and interfaces (no prior electronics experience is necessary); to program these interfaces; to connect these sensors with physical and virtual sensors and displays; and to use these in real applications. One class per week will be a hands-on laboratory, and a final project will be required.

Prior programming experience is expected. As the course will involve hands-on projects, class size may be limited. Participation by advanced undergraduates is possible, by permission of instructor.

This timeline is tentative, and likely to change. The tentative plan is one week per topic. This includes two days of lecture (MW), and one of laboratory (F).
  • Introduction and overview

  • Embedded interfaces to sensors
  • Intro to the PIC microcontroller

  • Embedded interfaces to actuators and displays
  • Intro to the Rabbit microcontroller

  • Embedded interfaces for facilitating human interaction
  • High-level programming of embedded interfaces

  • Embedded interfaces to networks
  • Planning and resources for projects

  • Embedded interfaces to grids
  • Final project presentation

example code
The following gives a flavor for the high-level programming of embedded interfaces which will be used in this course. This eight-line example implements the distributed synchronized lamp example described above (in conjunction with supporting RFID cards).
#EtherLamp code (simplest version)
#By Brygg Ullmer and Frederic Konkel, Digital Artifact
#Written September 13, 2004

#(one line is ommitted, per a pending hardware patent filing)

 physical: $here:1.1 $there:1.1
 press:    ledBlade toggle $lights

 set here   [%self%      get localAddress]
 set there  [%behavCard% get remoteAddress]
 set lights [list $here:2.1 $there:2.1]

contact: Dr. Brygg Ullmer (