Computer Systems Programming

ECE454, Fall 2022
University of Toronto

Instructor: Ashvin Goel

Quick Links

HomeLecture MaterialLab AssignmentsPiazza DiscussionQuercus Website

Course Objectives

This course goes beyond prior programming courses to teach students to better understand computer hardware, compilers and operating systems 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 to exploit caches and the memory hierarchy, and how memory is allocated and managed.

Furthermore, students will learn about how to exploit parallelism in their programs. They will learn to write complex, multi-threaded programs that can efficiently utilize multicore processors. They will also be introduced to distributed programming frameworks for cluster-scale data analytics and global-scale storage systems.

Students will get hands-on experience with most topics through programming assignments. You can also check the course description in the academic calendar.

Learning Outcomes

The learning outcomes of the course include:

The graduate attributes of the course are:

4. Design D: Demonstrate ability to advance an engineering design to a defined end state
5. Use of Engineering Tools B: Demonstrate ability to use discipline specific techniques, resources and engineering tools

Course Overview

This site provides all lecture and lab-related information.

Course announcements and course discussion will be on the Piazza web site. You should post any questions about the course on Piazza before sending individual mails to the TAs or the instructors. You can provide course feedback by posting private notes on Piazza. These notes are only visible to instructors. Note that we do not allow posting anonymous notes.

Course grades, quizzes and course evaluations will be available at the UofT Quercus website.

When possible, we will record lectures and make them available at the UofT Quercus website. You can access the recordings using the OCCS Student App on Quercus.

The suggested text book for this course is: Computer Systems: A Programmer's Perspective, Randal E. Bryant and David R. O'Hallaron, 3rd Edition, Prentice Hall, 2015

Course Schedule

The course schedule is shown below. The lab sessions provide one-on-one help with TAs regarding lab-related questions (attendence is not mandatory). There will be two quizzes in the course. There are no tutorials in this course. The final exam schedule will be announced once it is available.

Lectures: Mon 9-10am (BA1190), Wed 3-5pm (BA1130)
Office hour: Mon 1-2pm (SF2001B)
Labs: Mon 3-6pm (GB243, GB251), Wed 9-12pm (GB243, GB251)
Quizzes: 8-9 pm on Oct 10Oct 11, Nov 21
Final Exam: Dec 13, 9:30am-12:00pm

Marking and Evaluation

There will be several labs during the term. There will also be two quizzes during the course. A final exam will be given during the final exam period. The details of the quizzes and final exam time will be provided in class and on the course web site. The composition of the final mark is as follows:

The quizzes will be held online on Quercus. The final exam format will be decided later.

Students will have a week to contest a grade. Please submit a short explanation justifying the reasons for resubmission.

Course Outline

The following is a list of the topics, and the corresponding reference in the suggested Bryant and O'Hallaron book. Please keep in mind that this list of topics is tentative and is intended to serve as only a general guide.

Topic Week Reference
1. Introduction to Computer Systems Week 1 Textbook Chapter 1
2. Compilers and Optimizing Programs Weeks 2, 3 Textbook Chapter 5
3. Memory Hierarchy and Performance Weeks 4, 5 Textbook Chapter 6
4. Dynamic Memory Weeks 6, 7 Textbook Chapter 9
5. Threads and Synchronization Weeks 8, 9 Textbook Chapter 12
6. Parallel Architectures and Implications Weeks 10, 11 Instructor's slides
7. Big Data Analytics and Cloud Storage Week 12 Instructor's slides

Independent Work

Students are encouraged to discuss with one another issues and problems that arise in the course of solving the lab assignments. However, plagiarism and cheating will not be tolerated under any circumstances. Cheating includes, but is not limited to, generating expected output in an attempt to fool the automated marking script. It is also an offense to allow others to copy and submit your work for credit, whether with or without your knowledge. So, it is your responsibility to protect your work from being copied by others.

We will check all submitted code to ensure that it is not similar to others.

A reasonable rule of thumb to follow during a discussion is that nobody should leave the discussion with written notes of what was said. It is unlikely that two individuals that have discussed various approaches to a problem will write highly similar programs unless one or both have a written record of what was said.

For more details, please refer to the Academic Integrity web site at the university.

Accommodations and Mental Health Support

If you have a learning need requiring an accommodation, the University of Toronto recommends that students register as soon as possible with Accessibility Services.

The University of Toronto and the Faculty of Applied Science & Engineering offer a wide range of free and confidential services that can assist you with health and mental health challenges. If you find yourself feeling distressed and in need of more immediate support resources, consider reaching out to the counsellors at My Student Support Program (MySSP) or visiting the Feeling Distressed webpage.

Term-Work Petitions

During the course you may encounter circumstances beyond your control, such as illness or a personal/family crisis. These circumstances may force you to miss course work, such as the lab assignments or the quizzes. In such cases, you may submit a term-work petition through the Engineering portal and accommodations for the missed work will be provided as follows:

  1. If you miss a quiz, the weight of the quiz will be transferred to the final exam.
  2. There will be no further accommodation for additional missed quizzes.
  3. If you miss one lab, the weight of the lab will be transferred to the rest of the labs.
  4. If you miss more than one lab, the weight of all the missed labs will be transferred to the final exam.
  5. Minimum term work requirements: you need to complete labs with a combined weight of at least 25% (out of the 40% allocated to the lab assignments) to get credit for the course.

If you have questions or concerns regarding this policy, please contact the instructor.