Welcome to the CS 241 Resources Page! For now, this site is a quick one stop access to videos and content I have made for CS 241 at the University of Waterloo. This course is an introductory compilers course called the Foundations of Sequential Programs. If you are a fellow instructor (at this or another institution) and would like a copy of the notes please let me know (these notes were made in LaTeX). These notes were inspired by the course framework as given to me by Kevin Lanctot, Brad Lushman and Troy Vasiga. I also have a set of clicker questions that I used in this course which I am also happy to share. Please email me at cbruni@uwaterloo.ca.

All the best and happy learning!

** Carmen Bruni **

- Lecture 1: Introduction and Binary
- Lecture 2: Machine Language and MIPS
- Lecture 3: More Machine Language and MIPS
- Lecture 4: Procedures
- Lecture 5: Assembler and Formal Languages
- Lecture 6: Deterministic Finite Automata
- Lecture 7: Non-Deterministic Finite Automata
- Lecture 8: Non-Deterministic Finite Automata with Epsilon Transitions
- Lecture 9: Maximal Munch and Context Free Grammars
- Lecture 10: Context Free Grammars, Parse Trees and Parsing
- Lecture 11: Top-Down Parsing, LL(1), First and Follow
- Lecture 12: More on Top-Down Parsing, LL(1), First and Follow
- Lecture 13: Bottom Up Parsing
- Lecture 14: SLR(1) and LR(1) Parsers
- Lecture 15: Type Checking
- Lecture 16: Type Checking Continued and Code Generation
- Lecture 17: Code Generation Continued
- Lecture 18: Code Generation Continued Again
- Lecture 19: Code Generation Continued Again Again (Pointers)
- Lecture 20: Code Generation: Procedures
- Lecture 21: Heap Management
- Lecture 22: Loaders
- Lecture 23: Linkers