University of Waterloo

CS 452/652 - Real-time Programming

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

     Johnny Cash
Photo courtesy of y3285wan (W23)

Fall 2023

Important Note for Students Not Enrolled Yet

Official Course Outline

Registrar's Schedule of Classes

Communication

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 each assignment, as well as: Private posting is disabled. For any personal matters, please email the instructor.

Accommodations

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

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.

Assignments

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.

AssignmentLink to AssignmentDue DateNotes
A0Polling LoopTue, Sep 19, 8:30amCommunication with Trains and Terminal
K1Kernel (Part 1)Thu, Sep 28, 8:30am Fri, Sep 29, noonContext-Switch, Task Scheduling
K2Kernel (Part 2)Thu, Oct 05, 8:30am Tue, Oct 10, 5pmMessage Passing, Name Server
K3Kernel (Part 3)Thu, Oct 19, 8:30amEvent Notification, Clock Server
K4Kernel (Part 4)Thu, Oct 26, 8:30am 11:59pmI/O Server(s)
TC1Train Control (Part 1)Thu, Nov 9, 8:30amDemo: control one train
ProjectProject ProposalThu, Nov 16, 11:59pmsubmitted for feedback, not graded
TC2Train Control (Part 2)Wed, Nov 22, 8:30amDemo: control multiple trains
ProjectFinal ProjectTue, Dec 5Demos

Final Exam

The final exam is scheduled by the Registrar. It will cover material from the entire course. The final exam will be available on Learn 24 hours before the registrar-scheduled start time.

UW Final Exam Regulations
Math Faculty INC Rules

Resources

Lab

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.

Raspberry Pi

Train Set

The track and trains are controlled by sending commands via the serial interface.

Building, Deploying and Running Code on the Raspberry Pi's in the Lab

Other

Curiosities