CS 452/652 - Real-time Programming
I hear the train a comin'
It's rollin' 'round the bend
And I ain't seen the sunshine
Since I don't know when...
|Photo courtesy of y3285wan (W23)||
Important Note for Students Not Enrolled Yet
Official Course Outline
Registrar's Schedule of Classes
Piazza is used as the primary communication channel for announcements, clarifications, questions, discussions, etc. It is expected that all students are familiar with all material posted and discussed on Piazza. There are different Q&A folders for (more might be added as needed):
- questions, and
- reporting hardware problems.
For any personal matters, please email the instructor.
If a student needs to self-isolate due to COVID protocols, individual adjustments will be made to assignment deadlines and/or weighting depending on the particular circumstances.
Lecture notes will be posted here after class. They are telegraphic, so they are not a substitute for the lectures. But if you attend the lectures they will most likely be a good memory prosthetic.
- Jan 10, 2023 - Introduction and Overview
- Jan 12, 2023 - Devices and Trains
- Jan 17, 2023 - Polling Loops, Kernel, Tasks
- Jan 19, 2023 - ARM Processor, Context Switch
- Jan 24, 2023 - Context Switch (cont'd), Coding
- Jan 26, 2023 - Send-Receive-Reply, Name Resolution
- Jan 31, 2023 - Optimization, Measurements, Caches
- Feb 2, 2023 - Interrupts
- Feb 7, 2023 - Timer Interrupt, Clock Server, Idle
- Feb 9, 2023 - Software Design, Debugging
- Feb 14, 2023 - UART Interrupt Handling
- Feb 16, 2023 - Train Velocity, Design Approach
- Feb 20-24, 2023 - Model Train Week (aka Reading Week)
- Feb 28, 2023 - Student Presentations: Kernel Design
- Mar 2, 2023 - Student Presentations: Kernel Design
- Mar 7, 2023 - Train Modelling
- Mar 9, 2023 - Train Modelling (cont'd), Latency
- Mar 14, 2023 - Demo Preparations, Q&A
- Mar 16, 2023 - TC1 Demos - no class
- Mar 21, 2023 - Train Control
- Mar 23, 2023 - Software Design, Priorities
- Mar 28, 2023 - Real-Time Scheduling / Theory and Practice
- Mar 30, 2023 - TC2 Demos - no class
- Apr 4, 2023 - Multi-Core Programming / Overview
- Apr 6, 2023 - Final Demo Preparations, Q&A
Assignment A0 is to be completed independently by each student. Afterwards, groups of 2 students (or 3 in exceptional circumstances) work on the remaining assignments.
IMPORTANT: Late assignment submissions will not be accepted. Plagiarism detection software will be used. Students might be asked to meet with TAs and explain their code. See below for further information about academic integrity and appeals. Also see Notes on Assignments.
Due dates below are tentative until the assignment is published.
|Assignment||Link to Assignment||Due Date||Notes
|A0||Polling Loop||Tue, Jan 17, 9:00am||Communication with Trains and Terminal
|K1||Kernel (Part 1)||Tue, Jan 31, 9:00am||Context-Switch, Task Scheduling
|K2||Kernel (Part 2)||Tue, Feb 7, 9:00am||Message Passing, Name Server
|K3||Kernel (Part 3)||Thu, Feb 16, 9:00am||Event Notification, Clock Server
|KD||Kernel Design||Tue, Feb 28, 9:00am||In-Class Presentations on Feb 28, Mar 2
|K4||Kernel (Part 4)||Thu, Mar 2, 9:00am||UART Server(s)
|TC1||Train Control (Part 1)||Thu, Mar 16, 9:00am||Demo: control one train
|Final Project - Proposal||Thu, Mar 23, 9:00am||submitted for feedback, but not graded
|TC2||Train Control (Part 2)||Thu, Mar 30, 9:00am||Demo: control multiple trains
|Final Project||Mon, Apr 10, 9:00am||Demo
The final exam is scheduled by the Registrar. It will cover material from the entire course. The final exam will be given as take-home exam. 24 hours before the registrar-scheduled start time. Exam answers have to be submitted by email to the instructor at the scheduled end time (i.e., after 26.5 hours).
Since the final exam slot is on a Monday, the final exam will already be made available on Learn on Saturday, Apr 15, 9am.
Previous exams are available on Learn.
UW Final Exam Regulations
Math Faculty INC Rules
The lab room is MC 3018 and is for the exclusive use of CS 452/652 students. The access code is announced in class. Do not give the code to other students!
The usual rules apply, such as no food. Please see CSCF Teaching Lab Policies for details.
Most workstations in the main room run Ubuntu Linux with access to the regular linux.student.cs environment. The workstations connected to the Raspberry Pi computers run a slightly different Linux setup with a default login. Two of those are connected to train tracks. You can use the gtkterm terminal emulator to communicate with the Raspberry Pi via serial interface.
The track and trains are controlled by sending commands via the serial interface.