ECE454, Fall 2026
University of Toronto
Instructor:
Ashvin Goel
Q: I am currently taking ECE454, but I have not taken ECE344 (Operating Systems). I know that ECE344 is not a prerequisite for ECE454, but I am concerned that I might not have the background necessary to perform well in ECE454. Is it recommended that I take 344 instead to avoid struggling with the knowledge gap? I don't have any background in operating systems.
A: There is indeed some overlap between this course and ECE344. However, you do not need to take ECE344 to take this course. We suggest you should go over the following ECE344 topics when you have time.
Processes and Threads
Thread Synchronization
Virtual Memory and Paging
These topics will be covered in ECE454 but not in as much detail as in ECE344.
Q: I am wondering whether the lectures cover material not found in the reference chapters of the CSAPP textbook. Also, when a chapter is listed as a reference (for example, Chapter 6 for memory hierarchy), should we assume that the entire chapter is relevant for the exams?
A: The course schedule shows the topics covered in the class and the corresponding chapters in the textbook. For Weeks 1-8, most of the lecture material is from the CSAPP textbook. However, for dynamic memory, we will cover a modern memory allocator that is not in the textbook. Weeks 9-12 cover topics that are not in the CSAPP textbook.
If the book has material that is not covered in the class, then we will not use this material for the exams.
Q: I really like this course. What are other software/hardware courses that complement this course?
A: Here are some related ECE and CS courses. Feel free to let us know if you think other courses are related.
Computer Architecture [ECE552]: Dive deeper into instruction-level parallelism, data-level parallelism, thread-level parallelism, and memory hierarchy.
Distributed Systems [ECE419]: Design and develop distributed applications. Understand the complexities due to concurrency and failures in distributed systems.
Computer Security [ECE568]: Describes the principles of building secure systems, including identifying security vulnerabilities and defending against exploits.
Computer Internetworking [ECE461]: Explains the architectures and protocols of the Internet. Shows how to configure Internet-based network environments. Note that ECE361 is no longer a prerequisite for this course.
Compilers & Interpreters [ECE467H1]: Focuses on the front-end of compiler design, including lexical analysis, parsing, semantic analysis, and intermediate code generation.
Compiler optimization [CSCD70]: Discusses the theoretical and practical aspects of building optimizing compilers that effectively exploit modern architectures.
Advanced Operating Systems [CSC469]: Explores the design of modern operating systems and large concurrent systems.
Parallel Programming [CSC367]: Similar to ECE454, includes vector processing and parallel computing architectures.
Database System Technology [CSC443]: Discuses database systems in depth, including the transaction processing aspects of distributed systems.