Giorgio C. Buttazzo, Hard Real-Time Computing Systems, 3rd edition.
The electronic version is accessible via UBC Library.
Additional readings and material not covered in the text will be posted below.

Additional Readings


Sanjoy Baruah, Marko Bertogna, and Giorgio Buttazzo. “Multiprocessor Scheduling for Real-Time Systems.” Springer (2015). UBC Library

Edward Ashford Lee and Sanjit Arunkumar Seshia. “Introduction to Embedded Systems: A Cyber-Physical Systems Approach.” Mit Press (2016). PDF

Research Papers

Chung Laung Liu and James W. Layland. “Scheduling algorithms for multiprogramming in a hard-real-time environment.” Journal of the ACM (JACM) 20, no. 1 (1973): 46-61. PDF

Robert I. Davis, Alan Burns, Reinder J. Bril, and Johan J. Lukkien. “Controller Area Network (CAN) schedulability analysis: Refuted, revisited and revised.” Real-Time Systems 35, no. 3 (2007): 239-272. PDF

Marko Bertogna, and Michele Cirinei. “Response-Time Analysis for globally scheduled Symmetric Multiprocessor Platforms” Proceedings of the 28th IEEE International Real-Time Systems Symposium (RTSS 2007), pp. 149-160. PDF

Rafik Henia, Arne Hamann, Marek Jersak, Razvan Racu, Kai Richter, and Rolf Ernst. “System level performance analysis–the SymTA/S approach.” IEE Proceedings - Computers and Digital Techniques 152, no. 2 (2005): 148-166. PDF

Jonas Diemer, Philip Axer, and Rolf Ernst. “Compositional performance analysis in python with pycpa.” Procdeeings of the 3rd International Workshop on Analysis Tools and Methodologies for Embedded and Real-time Systems (WATERS 2012), 46. PDF


  • The C Programming Language - Brian Kernighan and Dennis Ritchie (classic)
  • The C Book - Mike Banahan, Declan Brady and Mark Doran. Available for free online and as a pdf. This book is well-written, with more emphasis on embedded system aspects.

Embedded Software Enigneering

In completing the projects, you will observe and apply best software engineering practices for embedded software development. The material in Philip Koopman’s course 18-642: Embedded Software Engineering (available as both slides and Youtube videos) is an excellent resource on code quality, safety, and security considerations and practices pertaining to embedded software.

Raspberry Pi: ARM and Peripherals

Lecture notes on embedded systems, Raspberry Pi, and the ARM processor (courtesy of Anthony Rowe of CMU)

  1. Intro
  2. ARM Architecture
  3. ARM Assembly
  4. ARM Assembly continued + MMIO
  5. Serial Buses
  6. Timers and Interrupts
  7. Code Optimization and Profiling