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, fault-tolerance and reliability, and software intensive safety critical systems. Students 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.

Course Staff and Logistics

Instructor: Arpan Gujarati (arpanbg@cs.ubc.ca)

Teaching Assistant: Geetika Batta (geetikb@ece.ubc.ca)

Class Information:

  • Lectures will be on Mondays and Wednesdays, from 9:30 AM to 11:00 AM, starting on Tuesday, Jan 10.
    • Starting Monday, Feb 7, lectures will be in-person, in the Neville Scarfe building, room no. 1021.
  • Tutorials will be on Fridays, from 10:00 AM to 12:00 Noon, starting on Friday, Jan 14.
    • Tutorials will be used as office hours, for discussing homework solutions, and for project demos.
    • Tutorials will continue to remain online over Zoom.
  • We will be using Piazza for class discussion. Signup using the access code LIU&LAYLAND.


Projects (40%): There will be 4-5 programming assignments. 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. Many projects will involve embedded programming and require knowledge of material that we will not discuss in class. You will be 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. Students should work in groups (4-5 students per group) to complete the projects. Only one submission per group is expected.

Assignments (30%): There will be 4-5 theoretical assignments, roughly every two weeks. The assignments should be completed individually.

Final Exam (30%): There will be only a final exam (written) and no midterm exam. The final exam will be open book.


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.

A Statement about the University’s Values and Policies

UBC provides resources to support student learning and to maintain healthy lifestyles but recognizes that sometimes crises arise and so there are additional resources to access including those for survivors of sexual violence. UBC values respect for the person and ideas of all members of the academic community. Harassment and discrimination are not tolerated nor is suppression of academic freedom. UBC provides appropriate accommodation for students with disabilities and for religious and cultural observances. UBC values academic honesty and students are expected to acknowledge the ideas generated by others and to uphold the highest academic standards in all of their actions. Details of the policies and how to access support are available here.

Academic Integrity

You should familiarize yourself with UBC’s policy on student conduct and discipline. The 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.