50.036 Foundations of Distributed Autonomous Systems

Home / Education / Undergraduate / Courses / 50.036 Foundations of Distributed Autonomous Syste...

Course Description

The course  introduces fundamental principles that underlie  the design and validation of complex autonomous systems. The usage of such systems is gaining popularity at a rapid pace, including but not limited to their usage in robotics, smart home, and autonomous vehicles. The course  delves into the theoretical and practical aspects of designing mixed hardware-software systems – criteria shared by most autonomous systems envisioned in a smart nation. Topics include the essence of hardware-software systems via appropriate abstractions, models and tools; use of  Simulink/Stateflow paradigm to design distributed hardware-software systems; understanding key principles for programming in resource constrained environments; performance optimization and performance tuning tailored to such environments; and programming hardware-software systems using custom hardware module such as mobile GPGPUs (general-purpose graphics processing units) for enhanced performance.


Learning Objectives

  1. Design a distributed and networked embedded system from scratch (required tools, devices and hardware will be provided). This includes formulation of the problem, capturing the design using formal models, such as via Simulink/Stateflow and implementations of the system running on custom embedded platform.
  2. Apply key ideas on performance tuning and performance optimization for resource-constrained embedded systems.
  3. Learning techniques to validate the systems beyond their functionality, such as for real-time performance.
  4. Apply key ideas on hardware/software partitioning for designing distributed embedded systems.
  5. Apply key ideas to maintain correctness in a distributed and resource-constrained environment.

Measurable Outcomes

  1. Design models of hybrid (discrete + continuous) systems [LO 1]
  2. Develop distributed embedded systems [LO 1,2,3,4]
  3. Develop autonomous decision making systems in embedded platform [LO 1,2]
  4. Develop optimization techniques for resource-constrained environment [LO 4,5]
  5. Analyze the design of a distributed embedded system to reason about correctness [LO 5]
  6. Analyze the design of a distributed embedded system to reason about performance [LO 3]
  7. Analyze the requirement of a system to find the hardware/software partitioning [LO 4]
  8. Develop high-performance and distributed embedded system via custom platform [LO 2]
  9. Develop and analyze Simulink Stateflow models at earlier stage of the design [LO 1]