Final Exam: May 13, 11:15 am @ Library W4550
Slides only provide an outline of the details presented in lectures. They are not a replacement for class notes or readings from the textbook or other sources.
Stony Brook University single sign-on (i.e., SBU NetID) is needed to access the slides.
Unit 1: Foundations and Language Design: language paradigms; compilation pipeline; language design principles; syntax specification; lexical analysis
Unit 2: Parsing and Semantic Analysis: top-down and bottom-up parsing; parser generators; attribute grammars; symbol tables; scopes and name resolution; type checking overview
Unit 3: Names, Bindings, and Scopes: names and bindings; scope and visibility; closures; referencing environments; dynamic scoping; modules and namespaces
Unit 4: Data Types and Type Systems: type safety, type checking, type inference; polymorphism and generics; type compatibility; algebraic data types; pattern matching; dependent types
Unit 5: Control Flow and Expressions: evaluation order; l-values and r-value; referential transparency; iteration vs. recursion; exception handling; continuation
Unit 6: Subprograms and Parameter Passing: procedures and functions; parameter passing mechanisms; nested subprograms; currying
Unit 7: Object-Oriented Programming: dynamic dispatch and virtual method tables; inheritance and mixins; variance; Liskov substitution principle
Unit 8: Functional Programming: pure functions; list processing; lazy evaluation; infinite data structures; monads; type classes; algebraic effects
Unit 9: Logic Programming and Memory Management: Prolog basics; stack vs heap allocation; garbage collection; RAII and smart pointers
Unit 10: Code Generation: intermediate representations; basic concepts of code generation and optimization
Jan 26. Monday. Class cancelled due to snowstorm
Jan 28. Wednesday.
Feb 02. Monday.
Principles of Language Design [ slides ]
Feb 04. Wednesday.
Syntax: grammars, abstract trees, and ambiguity [ slides ]
Feb 09. Monday.
Syntax and Lexical Analysis: regular expressions, tokenization, and finite automata [ slides ]
Feb 11. Wednesday.
Syntax and Lexical Analysis: regular expressions, tokenization, and finite automata (ctd.) [ slides ]
Feb 16. Monday.
Finite automata (ctd.) [ slides ]
Feb 25. Wednesday.
Top-down Parsing [ slides ]
Mar 02. Monday.
Top-down Parsing (ctd.) [ slides ]
Mar 04. Wednesday.
Mar 09. Monday.
EXAM 1
Mar 11. Wednesday.
Names, Scopes, and Bindings [ slides ]
!! SPRING BREAK !!
Mar 23. Monday.
Names, Scopes, and Bindings (ctd.) [ slides ]
Mar 25. Wednesday.
Type Systems: invariants, type safety, and type equivalence [ slides ]
Mar 30. Monday.
Type Systems: invariants, type safety, and type equivalence (ctd.) [ slides ]
Apr 01. Wednesday.
Type Systems: static and dynamic typing, parameters and parametric polymorphism [ slides ]
Apr 06. Monday.
Type Systems: type inference, first-class functions [ slides (1 - 24) ]
Apr 08. Wednesday.
Type Systems: nested functions, higher-order functions, currying, and function types [ slides (25 - 35) ]
Apr 13. Monday.
Pattern Matching [ slides (36 - 44) ]
Apr 15. Wednesday.
Algebraic Data Types [ slides (45 - 58) ]
Apr 20. Monday.
Apr 22. Wednesday.
Parameter Passing (ctd.) [ slides ]
Apr 27. Monday.
EXAM 2
Apr 29. Wednesday.
Strict and Lazy Evaluation [ slides (1 - 14) ]
May 04. Monday.
Lazy Evaluation and Infinite Data Structures [ slides (14 - 29) ]
May 06. Wednesday.
Monads, Type Classes, and Ad-Hoc Polymorphism: Connections to Object-Oriented Programming [ slides (30 - 42) ]