Instructors: Michael Stumm and Ding Yuan
Course Number: ECE454

Discussion (piazza)
Lab Assignments
Schedule and Lecture Notes
Grades (UofT Quercus)

Computer Systems Programming

ECE454, Fall 2018
University of Toronto


∗ [Oct/13] Homework 3 released. Due: Nov. 7th, 11:59PM

∗ [Sep/28] Homework 2 released. Due: Oct 12th, 11:59PM

∗ [Sep/14] Homework 1 released. Due: Sept 28th, 11:59PM

∗ [Sep/7] Welcome to ECE 454, class website online.

Course Description

This course goes beyond prior programming courses to teach students to better understand computer hardware, operating systems, and compilers from a programmer's perspective. In particular this course leverages this improved understanding to allow students to program for good performance. Students will learn how to measure and understand program execution and behavior, how to get the most out of an optimizing compiler, how memory is allocated and managed, and how to exploit caches and the memory hierarchy. Furthermore, students will learn about current trends in multicore, multithreaded, and data parallel hardware, how to exploit parallelism in their programs, the fundamentals of parallel architectures and synchronization techniques, and the recent trend of distributed data analytics (e.g., big data analytics) ---these latter topics are relatively new to undergraduate curricula and in increasing demand in industry. Students will get hands-on experience with most topics through programming assignments.

This site provides instructor's lecture notes and all lab-related information.

Course announcements and the course discussion is on the Piazza web site.

Course grades are available at the Quercus.


There is no required textbook for this course.

Optional reading: Computer Systems: A Programmer's Perspective (3rd Edition), Randal E. Bryant and David R. O'Hallaron, Prentice Hall, 2015

Course Information

The lecture and lab times and office hours are shown below:

Lecture Times: 5-6PM Fri (MS2170), 3-5PM Wed (MS2170)

Lab Times: Tue 12-3pm, Mon 3-6pm (GB251 and GB243). TA will be available to answer questions.

Midterm exam: October 26, 2018, Friday, 5-6PM, Location: EX 320

Course Policies

Final exam: 40%
Midterm exam: 25%
Lab assignment: 35% (5%, 7%, 9%, 7%, 7% respectively for each lab assignment)

Missed Labs: Missed labs will be made up on a case-by-case basis. Please have appropriate documentation (i.e. doctor's note, etc...)

Cheating: Each group should work independently. You may confer with each other, but your work should be your own. You should understand your code well enough to describe it to the TA and make simple changes to it when asked to.

Course Feedback

Please provide anonymous course feedback by posting anonymous notes on Piazza.