Embedded Software Engineering Course, CCN 25548, Spring 2001
Lecture: Tu 930-11, Discussion: Th 930-11 Location: 531 Cory Hall, Hogan Room.

Overview talk and summary talk at the end of the semester.

Brief Overview: This 3 unit course will provide an introduction to embedded software engineering which is a young research discipline on design methodologies for embedded software development. The course begins with an introduction to real-time operating system concepts and real-time communication protocols. Techniques like rate-monotonic scheduling and earliest deadline first as well as real-time protocols like TTP and CAN will be illustrated. The second half of the course emphasizes the pros and cons of the two fundamentally important paradigms of event-triggered and time-triggered systems. An introduction to the two high-level embedded programming languages Esterel and Giotto will be presented. Esterel is a synchronous reactive language with an event-triggered semantics whereas Giotto has a time-triggered semantics. Giotto has recently been developed at UC Berkeley. Example programs in Esterel and Giotto will be implemented on Lego Mindstorm robots. Each week, a one and a half hour lecture will be presented and a one and a half hour discussion will be held.

Goal of the course: Learn how to: evaluate applications with real-time requirements, identify adequate programming paradigm and platform, implement applications with real-time requirements.

Student Discussion Project Video
Elaine Cheong: RapidRMA Code Generation Code Generation AVI, MPG
Benjamin Horowitz: Scheduling of Hybrid Task Sets Pendulum Pendulum AVI, MPG
Paul Griffiths: CAN (Official Home Page) Scheduled Computation Scheduled Computation AVI, MPG
Jason Souder: Byteflight (Official Home Page) Scheduled Computation Scheduled Computation AVI, MPG
Carlo Cloet: Fieldbusses Synchronous Computation AVI, MPG
Daniel Jhin Yoo: LegOS 0.2.4 Tutebot Tutebot1 AVI, MPG; Tutebot2 AVI, MPG
Steve Neuendorffer: Real-Time Java Code Generation Code Generation AVI, MPG
Alvin AuYoung: Real-Time Operating Systems Tutebot Tutebot1 AVI, MPG; Tutebot2 AVI, MPG
Shawn Shaffert: WCET Estimation Pendulum Pendulum AVI, MPG
Jeff Ustin: Wet Scheduling Synchronous Computation AVI, MPG

Presentation of the class projects is scheduled for the 11th of May, 2001, 2-5pm, in 299 Cory Hall.


  • Hermann Kopetz, Real-Time Systems: Design Principles for Distributed Embedded Applications, 1997.
  • Giorgio C. Buttazzo, Hard Real-Time Computing Systems: Predictable Scheduling Algorithms & Applications, 1997.
  • Gérard Berry, The Foundations of Esterel, in Proof, Language and Interaction: Essays in Honour of Robin Milner, G. Plotkin, C. Stirling and M. Tofte, editors, MIT Press, 2000.
  • Papers on special topics.
  • Web: Giotto, Esterel.

    Prerequisites: C programming experience, basic knowledge of operating system concepts.

    Homework: Each student prepares a one and a half hour discussion on a special topic. An Esterel and a Giotto program running on Lego Mindstorms is due at the end of the course.

    Grading: Grades will be based on the discussion and the programs.

    Restrictions: 12 Lego Mindstorm robots available.

    Mailing list: eecs290o@eecs.berkeley.edu

    Instructor: Christoph Kirsch