Computer Systems Programming

ECE454, Fall 2020
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, and current trends in multicore, multithreaded, and data parallel hardware, and in distributed data analytics (e.g., big data analytics). Students will get hands-on experience with most topics through programming assignments. You can also check the course description in the academic calendar.

The objectives of the course include:

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.

We will be using Zoom for lectures and lab sessions. The Zoom URLs will be provided on the Quercus site.

The suggested text book for this course is: Computer Systems: A Programmer's Perspective (3rd Edition), Randal E. Bryant and David R. O'Hallaron, 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 three quizzes during class hours. There are no tutorials in this course. The final exam schedule will be announced once it is available.

Lecture Times: Thu 10-11 am, Mon 10-11 am, Tue 11-12 pm
Lab Session Times: Tue 12-3pm, Thu 3-6pm
Quizzes: Thu 10-11 pm (during class) on Oct 8, Oct 29, Nov 26
Final Exam: TBD

Marking and Evaluation

There will be several labs during the term. There will also be three 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:

This year, you will be doing all the lab assignments, quizzes and the final exam online.

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 Week 2 Textbook Chapter 5
Week 3
3. Memory Hierarchy and Performance Week 4 Textbook Chapter 6
Week 5
4. Dynamic Memory Week 6 Textbook Chapter 9
Week 7
5. Threads and Synchronization Week 8 Textbook Chapter 12
Week 9
6. Parallel Architectures and Implications Week 10 Instructor's slides
Week 11
7. Big Data Analytics 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.