Real-Time and Embedded Systems Course Sequence

This project was funded by the National Science Foundation Division of Undergraduate Education. The CCLI grant was DUE-0311269. The two-year grant began in July 2003. We received a one-year extension so the grant terminated in June 2006. This website has information about the three courses that we developed for the grant. Information is available on the courses syllabi and assignments. For faculty and other instructors who would like access to the full assignment information and sample exams please contact J.Vallino _at_ se _dot_ rit _dot_ edu for information on how to get access to that additional information. Please send a link to your personal and/or department website so we can confirm your faculty status and e-mail address.


Synopsis of Project

Small electronic products for the mass market are increasing in complexity with the incorporation of programmable components. The software in these devices has constraints that are markedly different from software designed for a desktop application running on a general-purpose computer. Most computing curricula deal almost exclusively with developing software for that general-purpose class. Real-time and embedded systems have increased in complexity to the point that their development is no longer within the expertise of a single discipline. Developers now must be cognizant of software engineering design methodologies and underlying hardware constraints. This project addressed this by developing a three-course sequence of cross-disciplinary real-time and embedded systems courses. We teach these courses in a studio-lab environment teaming computer engineering and software engineering students. Students work on course projects in pairs comprised of a software engineering student and a computer engineering student. The courses will introduce students to programming both microcontrollers and more sophisticated targets, use of a commercial realtime operating system and development environment, modeling and performance engineering of these systems, and their interactions with physical systems.

Our published papers provide a good overview of what we accomplished with this project.


Course Information

We provide general information about the three courses below. All of these courses are upper-dvision technical elective courses co-listed in both software engineering and computer engineering. In the software engineering program the Embedded Systems application domain is composed of these three courses.


Real-Time and Embedded Systems

Catalog Description:

This course provides a general introduction to real-time and embedded systems. It will introduce a representative family of microcontrollers and require students to program on these devices.  Fundamental material on real-time operating systems, such as requirements specification, scheduling algorithms and priority inversion avoidance will be presented.  The features of a commercial real-time operating system will be discussed and used for course assignments.

Prerequisite(s):  Operating Systems or Principles of Concurrent Software Systems

Textbook(s) and/or Required Materials:  Real-Time Systems and Software, Alan Shaw, Wiley.

Course Objectives:

  • Knowledge

  • List the scheduling algorithms commonly used in real-time systems.
  • Describe the steps required to build, install and run a software system on an embedded processor.
  • Comprehension

  • Discuss the event sequence for responding to an interrupt.
  • Application

  • Apply software engineering practices to the development of several small real-time systems.
  • Demonstrate the use of a micro-controller as an event timer.
  • Design and implement measurement tools to collect system performance data.
  • Design and implement a concurrent system on a real-time operating system.
  • Analysis

  • Measure the performance of a real-time operating system.
  • Synthesis

  • Design and implement a small-scale real-time application on a real-time operating system.

Topics Covered:

Typical Assignments:

Class/Lab Schedule:  4 hours studio classroom


Modeling of Real-Time Systems

Catalog Description:

This course introduces the modeling of real-time software systems.  It takes an engineering approach to the design of these systems by analyzing a model of the system before beginning implementation.  UML will be the primary modeling methodology.  Non-UML methodologies will also be discussed.  Implementations of real-time systems will be developed manually from the models and using automated tools to generate the code.

Prerequisite(s):  Operating Systems or Engineering of Software Subsystems

Textbook(s) and/or Required Materials:  Doing Hard Time, Bruce Powel Douglass, Addison-Wesley

Course Objectives:

  • Knowledge

  • Specify the characteristics of real-time and safety critical systems.
  • Comprehension

  • Discuss the software process for the development of real-time systems and contrast it with development for a standard application.
  • Identify architectural and design patterns for real-time and safety critical systems.
  • Application

  • Apply architectural and design patterns in the analysis and design of real-time systems.
  • Analysis

  • Model the dynamic behavior of a real-time system using statecharts.
  • Describe the requirements for simple real-time systems using use cases.
  • Model the structure of a real-time system using UML class diagrams.
  • Synthesis

  • Implement a simple system on a real-time operating system.

Topics Covered:

Typical Assignments:

Class/Lab Schedule:  4 hours studio classroom


Performance Engineering of Real-Time and Embedded Systems

Catalog Description:

This course discusses issues of performance in real-time and embedded systems.  Techniques for profiling the resource usage of a system and for measuring the effect of increasing system requirements will be covered.  The control of physical systems will motivate the need for performance tuning of a real-time system.  Students will write programs running under a real-time operating system that can maintain control of a physical system.  The course will discuss and experiment with performance trade-offs that can be made using hardware-software co-design. 

Prerequisite(s):  Real-Time and Embedded Systems

Textbook(s) and/or Required Materials:  None

Course Objectives:

  • Knowledge

  • Identify different PID control modes
  • Comprehension

  • Contrast effects of system parameters on control of a physical system.
  • Application

  • Demonstrate the effects of moving the hardware/software boundary in a design
  • Design a test and measurement plan to collect system performance data.
  • Compare performance of systems based on performance data.
  • Profile the execution of an embedded system
  • Analysis

  • Describe hardware/software tradeoffs in the design of an embedded system.
  • Analyze the profiling data to determine which areas of the program would benefit most from performance tuning.
  • Synthesis

  • Implement a system to control for a simple physical system.
  • Implement an FPGA solution of a software program

Topics Covered:

Typical Assignments:

Class/Lab Schedule:  4 hours studio classroom


There is also information here about a fourth course that a computer engineering faculty member not assoicated with the original grant created. The grant provided facilities that enabled him to create this fourth course. Similar to the original three courses it ran as a cross-listed software engineering and computer engineering course.

Real-Time Operating System Design

Catalog Description:

An exploration into the design of a real-time operating system (RTOS) kernel.  This course covers all aspects of RTOS design including system initialization of peripheral devices, data structure design for process management, inter-process communication primitive design and implementation and scheduling algorithm fundamentals.  The course is project-based, that is, a single project (the design and development of an RTOS kernel) will be used throughout the course.  The C programming language will be used to implement the RTOS kernel.

Prerequisite(s):  Operating Systems, Real-Time and Embedded Systems, C Programming experience

Textbook(s) and/or Required Materials:  None

Topics Covered:

Class/Lab Schedule:  4 hours studio classroom


This material is based upon work supported by the National Science Foundation under Grant No. DUE-0311269. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.