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

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


  • 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