Computer Systems Programming

ECE454, Fall 2025
University of Toronto
Instructors: Ashvin Goel, Ding Yuan

    Computer Systems Programming

ECE454 Course FAQ

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.

  1. Processes and Threads

  2. Thread Synchronization

  3. 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.

  1. Computer Architecture [ECE552]: Dive deeper into instruction-level parallelism, data-level prallelism and thread-level parallelism, memory hierachy.

  2. Distributed Systems [ECE419]: Design and develop distributed applications. Understand the complexities due to concurrency and failures in distributed systems.

  3. Computer Security [ECE568]: Learn the principles of building secure systems, including identifying security vulnerabilities and defending against exploits.

  4. Computer Internetworking [ECE461]: Learn about the architectures and protocols of the Internet. Learn to configure Internet-based network environments. Note that the ECE361 is no longer a prerequisite for this course.

  5. Compiler optimization [CSCD70]: Learn about the theoretical and practical aspects of building optimizing compilers that effectively exploit modern architectures.

  6. Advanced Operating Systems [CSC469]: Explore the design of modern operating systems and large concurrent systems. Has some overlap with this course.