MAP |

Software Design for Cyber-Physical Systems

Topics

  • Cyber-Physical Systems (CPS)
  • Introduction to Lingua Franca
  • Software Engineering Principles for CPS
  • Concurrent and Timed Models of Computation
  • The Role of Determinism
  • Parallel Execution on Multicore
  • Coordination of Distributed Software
  • The Tradeoff Between Consistency and Availability
  • Introduction to Semantics

Teaching Methods

This will be a lecture with discussions. Students will be assigned some programming exercises of varying difficulty.

Examination Modalities

There will not be an exam. Instead, students will turn in well-commented code on assigned exercises and participate actively in discussion.

Reading and Programming Assignments

Software

The above assignments include (open access) reading and require (open source) software. You will need to install at least one Lingua Franca tool. I recommend the Eclipse-based IDE called Epoch, but if you familiar with Microsoft Visual Studio Code, that also works well. If you prefer old-fashioned command-line tools, those are available as well.

If you are using a Windows laptop, then you will need to install a Linux virtual machine or otherwise get access to a Linux or Mac machine to do the third assignment. The distributed version of Lingua Franca is not supported on Windows.

Previous Knowledge

Some programming experience in any of C, C++, Python, JavaScript, or Rust.

Outline

A playlist of videos is available for all but the first lecture.
  1. Introduction to CPS
  2. Motivation for Lingua Franca (Video)
  3. Determinism (video)
  4. Time in Lingua Franca
  5. Limits of Determinism (video)
  6. Parallel Execution (video)
  7. Concurrent Models of Computation (video of the Deterministic Concurrency portion)
  8. Distributed Systems (video)
  9. The CAL Theorem (tradeoffs video and CAL theorem video)
  10. Reactor Semantics (Part 1 video, partial-order semantics and Part 2 video, metric-space semantics).
  11. Models Revisited (a href="https://youtu.be/o5l6FdQvn20">video)