Programming Embedded Interfaces|
LSU CSC4999 s16 (Spring 2005)
Course planned for delivery in collaboration with a similarly-themed
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).
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) SWITCHBLADE ARRAY: physical: $here:1.1 $there:1.1 press: ledBlade toggle $lights INIT: BEGIN set here [%self% get localAddress] set there [%behavCard% get remoteAddress] set lights [list $here:2.1 $there:2.1] END
|contact: Dr. Brygg Ullmer (email@example.com)|