SWE 4211 - Real-time Systems

2 lecture hours 2 lab hours 3 credits


Course Description
This course introduces students to software design and development of real time distributed systems. Real-time applications include flight control systems, vehicle control systems, industrial processes, life-support systems, robotic manipulators, and multimedia applications. Special attention is paid to scheduling, latency minimization, bandwidth constraints, and other design issues that impact the design of these systems. Team based laboratory assignments provide experience in the design and implementation of realistic applications using a real-time operating system, cross compilation, and embedded development boards.
Prereq: CSC 2210 , CSC 3210  (quarter system prereq: CS 2711, CS 3840)
Note: None
This course meets the following Raider Core CLO Requirement: None
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Understand concepts of time-critical computing and identify real-time systems
  • Understand real-time kernels and task scheduling
  • Understand concepts of reliability in relation to real-time software
  • Develop software using cross compilation development environments
  • Construct software requiring inter-task communication and synchronization using shared memory, message queues, signals, semaphores, and mutexes
  • Construct distributed real-time applications using a real-time operating system
  • Justify the design of a network protocol based upon requisite performance characteristics.
  • Construct software using UDP and TCP/IP protocols
  • Identify real time constraints for a software system based upon physical behavior
  • Analyze the performance of a real-time system and verify that software is meeting real time constraints
  • Use software configuration management practices to work as a team on a software development project

Prerequisites by Topic
Operating systems concepts

  • Scheduling, including round robin scheduling, priority scheduling, FCFS scheduling
  • Synchronization and concurrent programming concepts (semaphores, mutexes, etc.)
  • Interprocess communications using pipes and sockets
  • Multithreading
  • Linking

C and C++ programming topics:

  • The C/C++ compilation model
  • Structures
  • Memory management
  • Usage of pointers
  • Arrays
  • Enumerations
  • Preprocessor operations
  • Rudimentary file IO
  • Usage of a debugger to debug C/C++ code

 


Course Topics
  • An overview of real time systems
  • Latency and the impact of latency on software design
  • The hardware/software interface for real time systems and IOT devices
  • Basic measurement with an oscilliscope
  • The measurement CPU utilization
  • Review of multithreading
  • The usage of periodic and aperiodic tasks in software design
  • Basic sockets and networking
  • Rudimentary design of a network protocol
  • Rudimentary PWM concepts
  • Sensor types and operation (optical, ultrasonic, analog, digital, etc.)
  • Rate monotonic analysis and design criteria
  • Introduction to OpenCV
  • Image transmission across a network
  • Rudimentary queuing theory 
  • The usage embedded libraries and cross compilation
  • Software failure case studies related to real-time systems
  • Ethical aspects of real-time systems development

Laboratory Topics
  • Getting started with the cross platform development on the Raspberry Pi
  • Measuring latency and basic GPIO operations on the Raspberry Pi 
  • Developing a basic game on the Raspberry PI using GPIO
  • Rudimentary networking and remote interfacing of the Raspberry Pi
  • Basic robot control
  • Designing and performing and experiment on a sensor
  • Designing and implementing a streaming protocol
  • Basic sensor automation on the robot
  • RMA analysis of robot performance
  • Rudimentary image detection
  • Rudimentary autonomous operation of the robot
  • Advanced topics

Coordinator
Dr. Walter Schilling



Print-Friendly Page (opens a new window)