ECE350 Real-time Operating System (Spring 2022)

 

Overview

This course is an introduction to the fundamentals of operating systems design and implementation. Topics include process and thread management, multiprocessing, real-time kernel development, scheduling, queue management, memory and caching, permanent storage management, file systems, I/O device management, and security. Prereq: ECE 252; Antireq: CS 350, ECE 254, SE 350

 

Instructor

Ziqiang Patrick Huang (ziqiang.huang AT uwaterloo.ca)

 

Lab Instructor

Irene Huang (yqhuang AT uwaterloo.ca)

 

Graduate Teaching Assistants

Karim W. A. Elhammady (kwamelha AT uwaterloo.ca)

Sulav Shrestha (slshrestha AT uwaterloo.ca)

Khilav Divyang Soni (k7soni AT uwaterloo.ca)

 

Lectures, Tutorials, Labs

For lecture, tutorial and lab schedules, see the Undergraduate Schedule of Classes. Labs are used as help sessions for projects. Tutorials are used to 1) introduce lab projects, and 2) review & practice lecture materials

 

Discussion Forum

We will use Piazza for class discussions. The system is highly catered to getting you help fast and efficiently from classmates, the TAs, the lab instructor and myself. Rather than emailing questions to the teaching staff, you should post your questions on Piazza. The Piazza course site is here

 

Office Hours

Patrick's: Please send an email to schedule an appointment

Irene and TAs' office hours will be located with the lab schedule.  

 

Textbooks

Operating Systems: Principles and Design (2nd Edition) (Will be posting relevant chapters below with schedules)

Operating Systems: Three Easy Pieces (freely available online); Operating System Concepts (10th Edition) (Optional, recommended as supplementary readings)

 

Gradings

Quizzes (20%)

Lab projects (40%)

Final (40%)

 

*No need to pass individual components to pass the course.

 

Quizzes

There will be a total of 5 quizzes, each covering roughly 2 weeks of lecture materials. The quizzes are NOT meant to be exams, their purpose is to help you stay on top of the lecture materials and not fall behind. Quizzes are done on Learn. Each quiz will have ~20 questions, selected randomly among a question pool, usually true/false or multiple-choice questions. Each quiz are given 2 hours (more than enough) and must be compeleted in one seating. Quizzes are open book in the sense that students may consult their textbook, course notes, and materials posted on the course webpage. Use of any other resource (including online services such as stackexchange.com) is prohibited. During each quiz, students are allowed to ask private questions on Piazza if they have any question or need any clarification. While taking quizzes, students may not communicate directly or indirectly with any person except the course instructors. Students may not discuss nor disclose quiz questions with anyone. Any suspected plagiarism or infractions of this honor code will be reported to the appropriate Associate Dean. Quiz schedule(tentative) can be found below:

 

(Every quiz is released 4pm on release date, and due 11pm on due date, you can take it in any 2-hour window in between) 

Q1: release on May 16, due on May 19

Q2: release on May 30, due on June 2

Q3: release on June 20, due on June 23

Q4: release on July 11, due on July 14

Q5: release on July 25, due on July 28

 

 

Lab Projects

There will be a total of 4 lab projects(not including L0), each covering an important aspect of RTOS. There is a project demo for the last one (LP4). The project is done in groups of four. Five is not allowed and three is not recommended. The workload is fixed regardless of the size of the group. All group members receive the same grade for each project. LEARN is used for group sign-up. You are allowed to form groups with students in a different lab sections but in the same class, provided that it does cause conflicts with other courses/labs for any of the group members. After the deadline, any student without a group will be randomly assigned to a group. Explaining concepts to someone in another group, discussing algorithms/testing strategies with other groups, and searching online for generic algorithms (e.g., hash table) are allowed. Sharing code and test cases with another group, open-sourcing code (e.g., hosting code publicly on GitHub) even after this term, copying/reading another group's code and test cases, and copying/reading online code and test cases from prior years are not allowed. Any suspected plagiarism or infractions of this honor code will be reported to the appropriate Associate Dean. Lab projects schedule(tentative) can be found below:

 

LP0: release on May 4, due on May 10 (Group signup, environment setup)

LP1: release on May 11, due on May 24

LP2: release on May 25, due on June 7

LP3: release on June 8, due on July 1

LP4: release on July 1, due on July 19 (Final Project Demo: July 19 - 22)

 

 

Exams

There will be one final exam for this course. The final exam takes place from 9am to 11:30am on Aug 5, 2022 at STC 1012. There is no midterm exam for this course.

 

 

Late Policy

There are three grace days (including weekends) that can be used for late submissions without incurring any penalty. When all grace days are used, a 15% penalty is applied per day for late submissions. Please be advised that to simplify the book-keeping, late submissions are rounded up. A ten-minute-late submission receives the same penalty as a fifteen-hour-late submission. Submissions after three days are not accepted.

 

 

Academic Policy

The discussion of ideas and problem-solving strategies is an integral part of the learning experience, but cheating and plagiarism are not. Practically, you violate academic integrity when (1) you obtain solutions and code from others, or (2) you provide solutions and code to others. A student is expected to know what constitutes academic integrity to avoid committing an academic offence and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline. For typical penalties check Guidelines for the Assessment of Penalties.

 

 

Lecture Schedules(tentative), Topics, Reading Assignments

 

Week of

Topics

Reading Assignments

Tutorials (LP: Lab Project,

R&P: Review & Practice)

May 2

Introduction 

OSPP 1 LP 0 

May 9

OS concepts 

OSPP 2 (and 3 to refresh your memory) LP 1

May 16

May 23 

Multithreaded kernels

OSPP 4.5-4.8, 5.7-5.8

(and 5.2 - 5.6 to refresh your memory)

R&P 1

LP 2

May 30

Uniprocessor scheduling 

OSPP 7.1 R&P 2

June 6

Multiprocessor scheduling 

OSPP 6.1-6.3, 7.2-7.3  LP 3

June 13

Midterm Week

   

June 20

June 27

Real-time systems OSPP 7.4

R&P 3

July 4

Address translation OSPP 8.1-8.2 LP 4

July 11

Caching OSPP 8.3 and 9.1-9.4 R&P 5

July 18

July 25

File Systems

OSPP 11.1-11.2 and 13 R&P 6

Aug 5

Final Exam