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