EEL 6897 - Software Development for Real-Time Engineering Systems

Fall 2007

Class description: Issues associated with developing software for real-time systems, including parallel processing, task synchronization, and task scheduling.
Instructor: Dr. Lotzi Bölöni
Office: ENGR 3 - 319
Phone: 407-823-2320
Web Site:
The assignments and the other announcements will be posted on the course web site
Classroom: Business Administration 216
Class Hours: Tuesday, Thursday 6:00 - 7:30
Office Hours: Tuesday 4:00-6:00
Pre-requisites: Java programming.
Recommended readings: Concurrent and Real-Time Programming in Java by Andrew Wellings
FEEDS/Tegrity video stream:
Projects: The class requires the students to prepare a major research project in one of the topics explored in the class.
Grading: Homework: 20%
Class presentation: 20%
Project: 60 %
Standard 90/80/70/60 scale will be used for final grades (curved if necessary)

Class project

The class requires the completion of a significant programming project. I recommend students to work in pairs to allow for the implementation of a larger project than what it is possible with a single person project, but I would accept groups of size 1-3 students, provided it is justified. As this is a research class, I expect the project writeups to be of "publication quality". You should see this class as an exercise in learning the techniques necessary to successfully perform a research project. Research project submission requirements:

Project assignments

Name: Project type, topic
Ilhan Akbas, Zubair Ahmad
Project: Mote project
Project using a set of Crossbow Mica2 motes (hardware available). The project requires programming using the TinyOs operating system and the NesC programming language.
Kit 1: James Roberts
Kit 2: Tim St.John
Kit 3: Michele Gaetani
Project: Stiquito
Project using the Stiquito robotics toolkit (3 hardware kits available).
The expectation is to build a working robot, with a pulse width modulation control, and implement one or two "gaits". The kit I have is the one coming with the book "stiquito controlled". It would be interesting to push a bit the behavior, for instance implement some sort of dance movements, etc.
Feras Batarseh, Nestor Rivera and Kalpana Nallavolu
Project: Real-time, peer-to-peer traffic information system
A system which can be integrated in vehicles. It integrates information about the traffic from various sources in real time, distributes data to places which will use it. It should perform a distributed processing and reconciliation of the data.
Team 1: Ehsan Ghaneie, Ken Waller and Sorosh Olamaei Project: Real-time, peer-to-peer disaster management system
A distributed system which coordinates and organizes the work of volunteers in a disaster rescue scenario. The system needs to guide the volunteers to tasks with the highest priority, which are compatible with their skills and preferences. Tasks and volunteers can come dynamically.
Johua Mahaz and Gloria Law
Project: Control software for a basic motion detection and tracking device
We are interested in using a 180 degree servo and ultrasonic sensor paired with a basic stamp micro-controller to build a basic motion detection and tracking device. The idea being that with the sweeping ultrasonic sensor the device could detect any variations in its surrounding and react by illuminating the target with a laser pointer or flash light. This would be the project at its most basic, time permitting, we would like to add on a passive infrared to give the device further range and a lcd display panel to give more detailed information abosut the current status. I already own a basic stamp development kit that includes much of what we would need for the project and many of the sensors, hardware wise, are plug and play. So are main concern would only be to develop the software for the device.
Jason Beck
Project: Small, obstacle avoiding robot, using range finder, AVR microcontroller
I would like to use an Basic-2 stamp micro controller (one that is pre-installed on a development board) to build a small robot which uses a range finder to avoid obstacles. The micro controller will be in charge of motor control, reading in information from the range finder, as well as making decisions on what movements are required to avoid the obstacles.
Team 1: Loren Stroup, Megan Hefferman
Team 2: Rashad Oreifej, Ghaith Haddad
Project: Distributed, shared whiteboard
Create a shared whiteboard, where multiple people can draw on the same canvas and you can see their drawing in real time, preferably without having a centralized server - you can, for instance use some JavaSpaces implementation for that.
Christopher Stricklan Project: Distributed matrix modeler with JavaSpaces
I am going to create a distributed matrix divider with javaspaces. This project could be extended to create numerical modeling tools that could have large volumetric size. I will attempt to compare my results with MatLabs Distributed Engine to see which tool can outperform the other.
David Benjamin and Phouc Nguyen Project: Computer farm for running distributed genetic algorithms
We would like to create a compute-farm that will implement a genetic algorithm that will evolve an eight bit adder circuit. The circuit will be comprised of AND, NAND, OR, and NOR gates. This project will demonstrate our understanding for concurrency programming in a distributed software environment. The project will have four main components: - Communication layer - Worker clients that implements Genetic algorithm - Server that distribute work orders and manages the resultset - Global view which can connect to the server from anywhere and graph the evolved circuit
Bennie Lewis Project: Peer-to-peer baby monitoring system
I am planning on the system to stream live media from one PC to another and have different functions that the receiving PC can send to PC on the other end. for example playing a song to make the baby fall back to sleep.
Kerey Howard Project: Improvements to a real-time water rendering system
I would like to extend the Thesis work done by Claes Johanson from Lund University on "Real-time water rendering: Introducing the projected grid concept" I would like to extend the CPU vetex shader implementation to a GPU Shader hbased implementation. This will include recoding the depricated functions used with prior DirectX releases. After this stage is complete I will determine what botlenecks have been produced and manipulate the code for optimum threaded performance. Using the current ATI High end Graphics card HD 2900 XT and a High end Processor AMD 6400 it will be interesting to compare performance results with the CPU based shader approach. References:
Jeffrey Schwentner Project: Boss Detector
A device that will detect and warn a user of an approaching individual in a designated blind spot. The goal is to provide me with a chance to look busy before my boss shows up unannounced at my work cubical. As such, the device will provide the user with an Estimated Time of Arrival (ETA) and/or range of the approaching individual. The device will employ the use of an ultrasonic range finder to approximate distance, calculate ETA, and feed the information to the user via an LED display. The application software will be designed for the Salvo RTOS (from Pumpkin, Inc.), and hosted on a simple 8-bit Microcontroller.


Every student needs to make a presentation on a topic relevant to the class. The objective of this exercise is to learn how to read and extract information from research papers as well as to make a presentation which is interesting and informative for your fellow students.
Name: Proposed presentation topic
Loren Stroup POSIX threads
Steve Roberts Real-Time Schedulers or Executives
What a scheduler is, what it is for, some of the underlying concepts of a scheduler such as a sync board and interrupts, and then give some practical discussion on MACCE and possibly another scheduler.
Ken Waller CORBA Applications Using ACE/TAO
Tentative Outline:
-- What is CORBA? A brief introduction
-- CORBA Basics
   -- Clients, Servers, and Servants
   -- ORBs and POAs
   -- IDL and the role of IDL Compilers
   -- IORs ("Distributed Pointers")
-- Overview of ACE/TAO
-- Application 1: Simple Client-Server
-- CORBA Services
   -- Naming Service
   -- Event Service
-- Example 2: Using the Naming Service
-- Multi-Threaded Issues Using CORBA
-- Example 3: A Multi-Threaded Server
Ghaith Haddad JavaSpaces / Linda language
Rashad Oreifej and Christopher Stricklan Jini / Apache River
Sorosh Olamaei Performance of multithreaded programs
Nestor Rivera, Feras Batarseh and Nallavolu Kalpana Concurrency design patterns
from the book Real-Time Design Patterns by Bruce Powel Douglas.
Kerey Howard Multiprocessor Pipelining and Parallel Processing with regard to graphic rendering
The main focus will be on the latency produced with different techniques, and an introduction to the graphic pipeline. References include: Real-Time Rendering by T. Akenie-Moller and E. Haines GPU Gems 2 by Various Authors
Jeffrey Schwentner Watchdog timers
Introduction to Watchdog Timers and a practical application in an RTOS with multiple threads of execution.
Joshua Mahaz and Gloria Law Developing AJAX applications
Developing Asynchronous Javascript and XML (AJAX) based web applications
Bennie Lewis Remote Method Invocation in Java
Jason Beck and Megan Hefferman Esterel programming language
Michele Gaetani VxWorks operating system
David Benjamin RTOS vs. the traditional interrupt driven approach to system design using microcontrollers.
Phuoc Nguyen The High Level Architecture (HLA) for distributed simulations. HLA > is a model widely used in distributed simulation. HLA covers variety of > topics inluding data distributing, recovering and also time synchronization.
Ilhan Akbas, Zubair Ahmad Real Time Application Interface for Linux. RTAI is a real-time extension for the Linux Kernel which lets you write applications with strict timing constraints for Linux..
Ehsan Ghaneie Presentation on the following papers. Krishna Raman, Yue Zhang, Mark Panahi, Juan A. Colmenares and Raymond Klefstad. Patterns and tools for achieving predictability and performance with real-time Java. In Proc. 11th IEEE Int'l Conference on Real-Time and Embedded Computing Systems and Applications (RTCSA 2005). Hong Kong, China. August 2005.
Krishna Raman, Yue Zhang, Mark Panahi, Juan A. Colmenares, Raymond Klefstad, and Trevor Harmon. RTZen: highly predictable, real-time Java middleware for distributed and embedded systems. In Proc. ACM/IFIP/USENIX 6th Int'l Middleware Conference (Middleware 2005). Grenoble, France. December 2005.


Lecture Notes, Readings, Homeworks
Aug. 21
-class organization and requirements
-characteristics of concurrent and real time systems
[slides] Introduction
Aug. 23
-real time (hard/soft/firm)
Concurrent programming in Java
-the Thread and Runnable objects
[reading] Short introduction to Java for C++ programmers
[slides] Concurrent programming in Java
Aug. 28
-application example
-the need for synchronization; critical sections
-synchronized functions and code fragments
[slides] Synchronization
Aug. 30
-wait and notify.
-experiments with creating threads.

Sep. 4
-implementing a bounded buffer with the Java synchronization primitives
-implementing Dijsktra's semaphores with Java synchronization primitives
[Reading] Deadlock in Java
[Reading] Dijkstra's semaphores - an implementation

Sep. 6
-the readers/writers problem
[slides] Synchronization2
Three different solutions for the readers/writers problem
Sep. 11 -Java memory model -priorities, thread groups, interrupts
[slides] Completing The Java Model

Sep. 13
-discussion on the Java memory model
Sep. 18
Real-time Java -Memory, garbage collecting
-NIST requirements for real-time systems
[slides] Real time Java - 1
Sep. 20
-Memory classes in RTSJ
-Time classes in RTSJ

Sep. 25
-real time Java (cont'd) [slides] Real time Java - 2
Sep. 27
-real time Java (cont'd)
Oct. 2
Memory management in RTSJ [slides] Memory management

Oct. 4

Homework - due Oct 31
Lustre programming language - necessary for the alternative question on problem 2.
Oct. 9
Scheduling issues in real time systems

Oct. 11

Oct. 16
Steve Roberts: Real-Time Schedulers or Executives
Jeffrey Schwentner: Watch dog timers
[slides] JeffreySchwentner-WatchdogTimers.ppt
[slides] SteveRoberts-Schedulers.ppt
Oct. 18
Class cancelled.

Oct. 23
Zubair Ahmad and Ilhan Akbas: Real time application interface for Linux
Loren Stroup: POSIX threads.
David Benjamin: RTOS vs. the traditional interrupt driven approach to system design using microcontrollers.
[slides] LorenStroup-POSIXThreads.ppt
[slides] ZubairIlhan_RTAI.ppt
[slides] DavidBenjamin-RTOS.ppt
Oct. 25
Michele Gaetani: VxWorks operating system
Ghaith Haddad: JavaSpaces / Linda language
[slides] Gaetani-VxWorks-with-audio.ppt
[slides] Haddad-Javaspaces-Linda.ppt
Oct. 30
Jason Beck and Megan Hefferman: Esterel programming language
Phuoc Nguyen: HLA for distributed simulations
[slides] PhuocNguyen-HLA.ppt
Nov. 1
Bennie Lewis: Remote Method Invocation in Java
Howard Kerey: Multiprocessor Pipelining for Graphic Rendering
Homework due
[slides] BernieLewis-RMI.ppt
[slides] Howard-Graphics.pdf
Nov. 6
Nestor Rivera, Feras Batarseh and Nallavolu Kalpana: Concurrency design patterns
Ehsan Ghaneie: Patterns and tools for achieving predictability and performance with real-time Java.
[slides] EhsanGhaneie-RTSJ.ppt
[slides] RealTimeDesignPatterns.ppt
Nov. 8
Rashad Oreifej and Christopher Stricklan: Jini / Apache River
Tim St. John: Real-time Java garbage collectors.
[slides] Oreifej-Stricklan-Jini.ppt
[slides] TimStJohn-RealTimeGarbageCollection-1.ppt
[slides] TimStJohn-RealTimeGarbageCollection-2.ppt
Nov. 13
Joshua Mahaz and Gloria Law: Developing Asynchronous Javascript and XML (AJAX) based web applications
Ken Waller: CORBA Applications using ACE/TAO
[slides] Law-Mahaz-AJAX.ppt
[slides] Waller-CORBA.ppt
Nov. 15
Final project presentations: Mohammed Zubair, Mustafa Akbas, Ghaith Haddad, Rashad Oreifej, Cristopher Stricklan
Homework 2 - Dec 1st, 2007

Nov. 20
Final project presentations: Kerey Howard, Nguyen Phuoc, Dave Benjamin, Ken Waller, Ehsan Ghaneie, Sorosh Olamaei, Michelle Gaetani

Nov. 22

Nov. 27
Final project presentations: Steve Roberts, Tim St.John, Loren Stroup, Megan Hefferman, Jason Beck, Bennie Lewis, Jeffrey Schwentner

Nov. 29
Final project presentations: Gloria Law, Joshua Mahaz, Feras Batarseh, Nestor Rivera, Kalpana Nallavolu

How to install the real time Java specification

Links and readings with reference to the class

Instructive readings, reflections on research and graduate studies etc