The chapters from Michael Scott's Programming Language Pragmatics (5th ed.) corresponding to the topics covered in class, are also mentioned (wherever applicable).
The slides are uploaded on a per-topic basis, and one set may be covered in multiple lectures.
Stony Brook University single sign-on (i.e., SBU NetID) is needed to access the slides
The likely topics covered in this course are listed here.
Aug.25. Introduction to the course and an overview of a few programming paradigms (Scott: Ch. 1) [ slides | slides ]
Aug.27. Introduction to Lambda calculus (Scott: Ch. 3, Ch. 11) [ slides (1-8) ]
Sep.01. Labor Day (Holiday)
Sep.03. Introduction to Lambda calculus (Scott: Ch. 3, Ch. 11) [ slides (10-27) ]
Sep.08. Scopes, bindings, and shadowing (Scott: Ch. 3, Ch. 11) [ slides (28-40) | OCaml Installation Guide ]
Sep 10. Introduction to OCaml: Bindings, simple functions, and operators (Scott: Ch. 11) [ slides (41-51) ]
Sep 15. Introduction to OCaml: pattern matching (Scott: Ch. 11) [ slides (52-58) ]
Sep 17. Introduction to OCaml: pattern matching, bindings, and higher-order functions (Scott: Ch. 11) [ slides (59-70) ]
Sep 22. Data Types and Type Systems: invariants, denotational and structural semantics, duck typing (Scott: Ch. 7) [ slides (1-11) ]
Sep 22. Data Types and Type Systems: type safety, type checking, and type equivalence (Scott: Ch. 7) [ slides (12-25) | Python 101: self-study ]
Sep 29. Midterm I (11:15 am - 12:15 pm)
Oct 01. Type conversions, compatibility, and coercion. Composite and recursive data types (Scott: Ch. 7, Ch. 8) [ slides (25-30) | slides (1-25) ]
Oct 05. Algebraic data types (Scott: Ch. 8) [ slides (26-44) ]
Oct 08. Introduction to subtype and parametric polymorphism: the type hierarchy, inheritance, static and dynamic dispatch (Scott: Ch. 7, Ch. 10) [ slides (1-12) ]
Oct 15. Subtype polymorphism, multiple inheritance, and the diamond problem; interfaces, i.e., declarative polymorphism (Scott: Ch. 7, Ch. 10) [ slides (13-24) ]