Lecture Time: Tuesday Thursday, 8:00am-9:30am
Lecture Room: Hugh Dempster Pavilion 301

Tutorial Time: Friday, 10:00am-12:00pm
Tutorial Room: Hugh Dempster Pavilion 301

Instructor: Bader Alahmad, ICCS 188, bader@ece.ubc.ca
        Office hours: TBD
* Mehdi Karimi, mkarimib@ece.ubc.ca
        Office hours: TBD

Course Description

In this course we will be studying the theoretical underpinnings of real-time compute systems, as well as practical aspects related to embedded systems. The course covers a wide range of topics, including scheduling theory (analysis and design of task scheduling algorithms and schedulability analysis), resource sharing protocols, real-time operating system principles, hardware/software co-design, real-time communication, Cyber-Physical Systems (CPS) and the Internet Of Things (IoT), fault-tolerance and reliability, among other topics. Stundents can expect to get a hands-on experience programming state-of-the-art embedded systems and working with real-time operating systems and industry-strength development tools.


Required: Giorgio C. Buttazzo, Hard Real-Time Computing Systems, 3rd edition. The electronic version of the text is available for full download to UBC students at UBC Library’s webpage.

Optional: Jane W. S. W. Liu. 2000. Real-Time Systems.

Additional readings and material not covered in the text will be posted in readings


There will be 4-5 projects that collectively count towards 50% of your raw final grade. The majority of the projects will involve writing bare-metal and system (kernel) code for the Raspberry Pi Computing Platform, using the C programming language. Students should work in groups (typically 3 students per group) to complete the projects. Only one submission per group is expected.


There will be 4-5 theoretical assignments, roughly every two weeks. The assignments will count towards 30% of your raw final grade. The assignments should be completed individually, and a submission per student is expected.


There will be only a final exam (written) that counts towards 20% of your raw final grade. The instructor reserves the right to assign a take-home exam for partial or full credit towards the final exam. There is no midterm exam.

Grading Scheme

  • Assignments: 30%
  • Projects : 50%
  • Final exam : 20%


  • A certain level of proficiency in the C programming language is expected;
  • Operating systems at the level of CPEN 331 will be assumed (both concepts and implementation);
  • Background in algorithms and complexity of computation, typically at the level of CPSC 320. Some knowledge of the theory of NP-Completeness is desirable;
  • It is preferable to have some background in probability theory at the level of UBC’s MATH 318. I might present some of the probability that we will need, depending on the class.

Academic Integrity

You should familiarize yourself with UBC’s policy on student conduct and discipline. Thee penalties for cheating are serious: you can fail a class, receive a letter of reprimand that will also appear on your university record, be suspended or be expelled. If you are feeling stressed, come talk to the instructor or the TAs to get help – at the posted office hours, or make an appointment. Do not be afraid to come in and say you’re confused, we are here to help you get “unconfused.” Of course, it is good to come talk to us before you are completely overwhelmed. You should also read Tamara Munzner’s writeup on Cheating: The List of Things I Never Want To Hear Again.