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

TAs: Nusrat Mehajabin
        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 programming assignments 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 (at most 3 students per group) to complete the projects. Only one submission per group is expected. We will be using Gitlab as the source control platform, so make sure you setup a Gitlab account as soon as possible. You will be assigned to a Gitlab group, which will contain your private project repositories. You will use Gitlab Wiki pages to write some required documentation and answer project-related questions (in addition to the code-level Doxygen documentation that you will generate for every project).

Many projects will involve embedded programming and require knowledge of material that we will not discuss in class. You are given all the resources you need, and, as an engineer in a senior year course, you are expected to go through hardware manuals, processor specs, etc, and figure things out on your own. The teaching staff will do their best to provide help and guidance.


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%


You will use the tutorial time to work on the projects and ask any questions. Tutorials should serve as project checkpoints, during which we will discuss your progress. We will also use the time to present some additional material relating to embedded programming, as well as hold some problem solving sessions related to real-time system design (class material).


  • 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.