UofT ECE 467 (2022 Fall) - Home



The website and starter code is being pre-emptively updated!

I don't know if I'll be teaching the course again, but if I wait until next year I'll forget feedback I've received. Note that more test cases have been added (if you pull the new starter code); those are for the (potential) future!


Welcome to the homepage for ECE 467 being offered at UofT in the 2022 Fall semester. Lectures begin on Tuesday, September 13. Tutorials and labs begin on Friday, September 16.

Update (2022 September 27): the labs being every other week starting on September 16 doesn’t match the schedule on Acorn. We will have lab on September 30 and October 7. From October 7, the TAs will be holding lab sessions every other week for the rest of the semester (so after October 7 is October 21).

Pre-recorded lecture videos are available here. They are not necessary to watch for this course. The lecture videos are made as my own practice before the in-person lectures. In general, they should not be considered a replacement for the in-person lectures. If you miss/will be missing a class, you should contact me so we can sync up.

Lecture Schedule

Mark Breakdown and Deadlines

Important dates are also in the Querqus calendar. You can view them under the course syllabus or export them as an iCal feed.

In some sense, labs 2 and 3 are a single lab spanning 5 weeks; it’s just broken up to help you pace yourself. 3 weeks are given for lab 2 so you have more flexibility, but it would be recommended to finish it earlier to start on lab 3.

Tutorial Notes

Discussion Board

Piazza is available for questions and discussions: https://piazza.com/utoronto.ca/fall2022/ece467. Announcements will be made on Querqus.

Textbook

We will be using Compilers: Principles, Techniques, and Tools by Alfred V. Aho (a UofT graduate!), Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman (fondly referred to as the “Dragon Book”).

Contact Information

Please do not hesitate to contact me by email (please include ECE 467 in the subject title). As much as you are comfortable with, you are welcome to share with me any challenges you face with the course, whether it be directly related to the course, or external factors affecting your ability to participate in and complete the course. I am always happy to try to help students who are themselves trying to learn. I also want to make this course as positive as an experience as possible. I am happy to give extensions, but only if students proactively reach out to me.

Prerequisites

While the lectures do not use any specific programming language, familiarity with programming is assumed. In particular, this is an ECE course, so at minimum the knowledge from ECE 244 and ECE 243 is expected. It would be beneficial to have taken at least one 3rd year kernel course in software (e.g. ECE 344 Operating Systems or ECE 345 Algorithms and Data Structures), if you do not have additional programming experience outside of school.

The labs are in C++, but I would not say prior knowledge of C++ is necessary. If you have the required understanding of programming fundamentals, learning a specific language such as C++, even from scratch, should not be a problem, at least for the scope of these labs. I am always happy to help whenever students are ready to learn.

Update: a C++ primer has been added, which hopefully smooths over the process of learning C++ for those without prior experience.

More importantly, I believe it to be an important skill to search for and read documentation for open source software, especially for soon-to-be-graduating 4th year students. In particular, it is a requirement for Lab 4 to read about LLVM on your own. Again, I am always happy to provide guidance as long as students have put in the necessary effort to learn themselves. While not required for Lab 1 and Lab 2, I believe it to be insightful to explore the online documentation for re2c and GNU Bison.

Minimal knowledge of git would also be helpful, for your own version control.

Past Exams

Past versions of the course are not particularly reflective of this iteration of the course (even the most recent time it was offered, in 2020). I do not particularly recommend studying these exams, but I have collected all the past exams I can as someone will inevitably ask for it. I will try to make clear the expectations and prepare students for my exams directly.


Last updated: 2022-12-23 09:56:36 -0500.