ECE454, Fall 2025
University of Toronto
Instructors:
Ashvin Goel,
Ding Yuan
This course goes beyond prior programming courses and provides students a better understanding of computer hardware, compilers and operating systems from a programmer's perspective. With this improved understanding, students learn 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. For course prerequistes and credits, please check the course description in the academic calendar.
The learning outcomes of the course are:
The course material will primarily be lecture slides and some research papers. All this material will be available in the lectures page. Please visit this page regularly for updates.
The suggested (optional) 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. The UofT bookstore has an online version.
Course discussion will be on the Piazza website. You should post any questions about the course on Piazza before sending mails to the teaching staff.
Course announcements will be made on Piazza or the Quercus website. The Quercus site will also provide course grades and evaluations.
The instructors will not be recording lectures.
There will be a set of programming assignments in the course. All the assignments are to be done individually. Please visit the labs page for all lab-related information.
The course meeting times are shown below. The lab sessions provide one-on-one help with TAs regarding questions about the programming assignments (attendence is not mandatory). There will be one mid-term exam in the course. There are no tutorials in this course. The final exam schedule will be announced once it is available.
Lectures (Goel): | Mon 3-5pm (GB220) | Fri 9-10am (BA1220) | |
Lectures (Yuan): | Mon 9-11am (BA1200) | Thu 2-3pm (MC102) | |
Labs: | Tue 9-12pm (GB243) | Tue 12-3pm (GB243) | Thu 3-6pm (GB243) |
Mid-term exam: | Oct 21, Tue 7-8:30pm (FE114) | ||
Final exam: | Time not available yet | ||
Office hour (Goel): | Tue 10-11am (SF2001B) | ||
Office hour (Yuan): | TBA |
The composition of the final mark is as follows:
The mid-term and the final exam will be held in person.
Students will have a week to contest any grade after the grade is made available. Please submit a short explanation justifying the reasons for resubmission.
The list of the topics and the corresponding reference in the suggested Bryant and O'Hallaron book is shown below. Please keep in mind that this list of topics is tentative and is intended to serve as only a general guide.
Weeks | Topic | Reference |
---|---|---|
1 | Introduction to computer systems | Chapter 1,4 |
2, 3 | Compilers and optimizing programs | Chapter 5 |
4, 5 | Memory hierarchy and performance | Chapter 6 |
6, 7 | Dynamic memory | Chapter 9 |
8 | Threads and synchronization | Chapter 12 |
9, 10, 11 | Parallel architectures | Instructor slides |
12 | Data analytics and cloud storage | Instructor slides |
Students are encouraged to discuss with one another issues and problems that arise in the course of solving the programming assignments. However, plagiarism and cheating will not be tolerated under any circumstances. Cheating includes, but is not limited to, looking at prior solutions or other student's code, copying code from the web, sharing code on Piazza, and generating expected output in an attempt to fool automated marking scripts. 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. If you make your code publicly available, even after the term ends, it will be treated as an academic offense.
Repositories such as github.com
are public by default, so please don't put your code there unless you make the repository private.
All submitted code will be checked for potential plagiarism.
A reasonable rule of thumb to follow during a discussion is that nobody should leave the discussion with written notes of your discussion. 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.
Students may use artificial intelligence tools, including generative AI, in this course as learning aids.
However, students may not use artificial intelligence tools for their lab code or during the exams. The knowing use of artificial intelligence tools, including ChatGPT and other AI and writing coding assistants, for the completion of, or to support the completion of, an examination, lab assignment, or any other form of academic assessment, may be considered an academic offense in this course. We suggest turning off any code completion features in IDEs while writing your lab code.
I wish to acknowledge this land on which the University of Toronto operates. For thousands of years, it has been the traditional land of the Huron-Wendat, the Seneca, and the Mississaugas of the Credit. Today, this meeting place is still the home to many Indigenous people from across Turtle Island and we are grateful to have the opportunity to work on this land.
Learn more about Canada's relationship with Indigenous Peoples.
Your personal wellness and mental health are important. The University of Toronto and the Faculty of Applied Science & Engineering offer a wide range of free and confidential services that can support your well-being.
As a U of T Engineering student, you have a Departmental Undergraduate Advisor who can support you by advising on personal matters that impact your academics. Other resources that you may find helpful are listed on the U of T Engineering Mental Health & Wellness webpage.
If you have a learning need requiring an accommodation, the University of Toronto recommends that students register with Accessibility Services as soon as possible.
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 exams. 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:
If you have questions or concerns regarding these policies, please contact the instructors.