uwloo

ECE 351Compilers

Units
0.50
Faculty
Engineering
Subject
Electrical and Computer Engineering

When it runs

  1. F24
  2. W25
  3. S25
  4. F25
  5. W26
  6. S26
  7. F26
  8. W27
  9. S27

Ran in 4 of the last 7 terms. Winter 2027: not on the schedule. Spring 2027: schedule not out yet.

Programming paradigms, compilation, interpretation, virtual machines. Lexical analysis, regular expressions, and finite automata. Parsing, context-free grammars, and push-down automata. Semantic analysis, scope and name analysis, type checking. Intermediate representations. Control flow. Data types and storage management. Code generation.

Prerequisites

  • Complete all of the following
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • BME122 - Data Structures and Algorithms (0.50)
        • ECE250 - Algorithms and Data Structures (0.50)
        • MSE240 - Algorithms and Data Structures (0.50)
        • MTE140 - Algorithms and Data Structures (0.50)
        • SYDE223 - Data Structures and Algorithms (0.50)
      • Must have completed the following:
    • Must have completed at least 1 of the following:
      • CS245 - Logic and Computation (0.50)
      • CS245E - Logic and Computation (Enriched) (0.50)
      • ECE208 - Discrete Mathematics and Logic 2 (0.50)
      • SE212 - Logic and Computation (0.50)

Antirequisites

None listed.

Notes

  • Electrical Engineering students with at least 80% in ECE 108 will be granted an override for ECE 208 prerequisite on the understanding that they will need to make up missed material from ECE 208 on their own.

Leads to

No course lists it as a requisite.

Fall 2026 sections

Enrolment from UW Open Data, which can trail Quest by up to two days. Instructors and rooms: Schedule of Classes.
SectionClassEnrolledMeets
LEC 0015099134 / 134WTh 13:00–14:20
Sep 28 16:00–17:20
Oct 26 16:00–17:20
Nov 16 16:00–17:20
Dec 7 16:00–17:20
LEC 002515859 / 134W 10:00–11:20
Th 08:30–09:50
Sep 23 16:00–17:20
Oct 21 16:00–17:20
Nov 11 16:00–17:20
Dec 2 16:00–17:20
LAB 2015246193 / 268Online or by arrangement
TUT 101510098 / 134T 19:00–19:50
TUT 102515995 / 134T 20:00–20:50

Resources

Around the web

Found by uwloo’s link finder, which checks that each page names ECE 351.

Suggest a resource.

Reviewed on UW Flow

76% liked it77% easy80% useful

From 93 ratings and 16 comments on UW Flow. The most helpful comments, quoted as written, without names. Read them all on UW Flow.

  • Labs are not fun. You are not really building a compiler that compiles something executable. The lecture material is boring (Parsing, grammar design, dataflow analysis). The only fun part is garbage collection, which is the last lecture.

    Dec 2025 · didn’t like it · 2 found this helpfulOn UW FlowRemove this

  • Not sure if it was the prof or the course, but this wasn't that good

    Oct 2025 · didn’t like it · 1 found this helpfulOn UW FlowRemove this

  • I hated the labs tbh

    Jan 2026 · didn’t like itOn UW FlowRemove this

  • As other review have said this isn't the most practical course and you aren't making a compiler that creates an executable. Some of the concepts are interesting. The labs are a lot of work and strangely not worth that much (but for me you had to pass them to pass the course). Be very careful not to fall behind on the labs because they are mostly cumulative and falling behind will kill you.

    Dec 2025 · didn’t like itOn UW FlowRemove this

  • Labs are of pretty poor quality, as others have states, feels juts like fillig parts of code someone deleted. The course focuses on parsing theory for over 75% of the course, with only two modules at the end of the class for optimization and codegen.

    Nov 2025 · didn’t like itOn UW FlowRemove this

Discussed on r/uwaterloo

48 posts and comments in 41 threads mention ECE 351, December 2014 to December 2024. Quoted word for word, newest first; each reply sits under the post and the comment that started its branch. Search r/uwaterloo for newer posts.

Spring 2024

CE 3B Elective Advice 3 points, 3 comments

u/ivythe1st: “I plan to take ECE 351, 356, and 358 (compilers, database systems, and computer networks), along with 307 (stats 2). I was thinking of doing another TE as well so I can free up space in 4A and 4B: I'm really interested in SYDE 522 (Foundations of AI) or MSE 446 (Intro to ML). …”

View on RedditRemove this

Winter 2024

Best Eng Program to get into Machine Learning? 19 points, 32 comments

“I'm applying to Waterloo Engineering this year. What is the best engineering programs besides software eng to get into machine learning?”

u/kawaiiggy: “theres so much to ML. the mathematical architecture behind models? cs/math/co/software if u take a lot of math courses the systems and infrastructure to run ML? …”

u/kawaiiggy: “… courses like ECE254, ECE350, ECE351 i would imagine would be good to know”

View on RedditRemove this

Spring 2023

ECE 3B TEs 9 points, 8 comments

u/NFLYoungGuy: “… I’m locked in on taking ece351 - compilers and ece358 - computer networks, but stuck between 320 and 356. Realistically I’d like database stuff more, but I think Paul Ward could be teaching in the fall and I’ve heard nothing but bad things. …”

View on RedditRemove this

Winter 2023

CE 4A TEs 8 points, 30 comments

u/OkCelery1514: “… Control Systems ECE 493, Special Topics: IOT Signal Processing I took ECE 358, ECE 356, & ECE 351 in 3B and performed at the average in all these courses. I took ECE 380, ECE 318, & ECE 327 in 3A and performed at the average in all these courses. …”

View on RedditRemove this

Spring 2022

ECE 3B advice 8 points, 10 comments

u/OkCelery1514: “I'm taking ECE 307, 351, 356, and 358 next term, and I'm wondering if anyone has any advice in terms of order of difficulty, time consumption, textbook needed, etc.?”

u/IcyProfit03: “… Make sure you can do most of the problems and try to ride the curve (I had him for 318 and that's how that course went) ECE 351 : Didnt take it but heard nothing but good things about it. …”

View on RedditRemove this

ECE 351: Compilers 3 points, 7 comments

u/namomontbleau: “Thoughts and opinions on this course? ECE208 was not my favourite course, barely got through it tbh so I’m a little concerned seeing it as a pre-req. Is this class proof heavy? What’s the general feeling on this course? Thanks! edit: prof will be Arie Gurfinkel for reference”

View on RedditRemove this

CE vs math 20 points, 46 comments

“Iam planning to pursue SWE. I dont like physics, hardware. Iam only interested in software things. Sadly i got rejected from cs and se so i need to choose between math and ce. Iam a math lover”

u/TheRealArjun: “… Don't count on being able to do this but what I did was take interesting CE courses as electives for fun just by asking the course instructor (ECE 252, 350, 351, 454, 459), so maybe thats an option if you take the math offer. …”

View on RedditRemove this

Winter 2022

ECE transfer to Math advise 0 points, 2 comments

“I just finished my 2b term in ECE(CE) and I also applied to BMath, as I feel ECE courses are not very useful or interesting. …”

u/amxnday: “… i’m currently arranging my upcoming terms so that i’m only taking software related courses in 3B 4A 4B which is doable because there are a lot of software TEs like ECE 351, 356, 358, 452, 455, 457, 406, 451 etc.”

View on RedditRemove this

Fall 2021

Study tips for ECE students 2 points, 6 comments

“What are the best study tips you can offer a computer engineering student (going into 3A with a lot of labs). …”

u/AAstar2: “I was in ECE Stream 4 in CE. ECE 316 is hardest and ECE 380 is easiest. The rest are in moderate difficulty. Study post-midterm material first, then brush up on pre-midterm material. …”

u/AAstar2: “I was in the old curriculum. I think we took these in 3A. ECE 300A Electrical and Computer Engineering Practice ECE 316 Probability Theory and Random Processes ECE 380 Analog Control Systems ECE 327 Digital Hardware Systems (computer) ECE 351 Compilers (computer)”

u/uwgooseman: “… The labs for ECE 327 and ECE 351 take a lot of time (ECE 327 has fewer labs but they take longer ECE 351 labs take less time but there’s more of them) I think the 2023s got fucked with 298 being in 3a because ECE 298 is a dog shit course simply because it was poorly run. …”

View on RedditRemove this

Fall 2019

Check it elsewhere for Fall 2026

Calendar versions

Undergraduate Calendar