This page gives highlights of past lectures and provides lecture notes, reading assignments, and exercises.
Chapters and sections in the readings are from the textbook, unless specified otherwise.
Dates | Topics | Exercises |
---|---|---|
Mar 02 Mar 04 |
Course introduction.
Overview of course topics.
Factors in programming language design.
Programming language paradigms.
Compilation vs. interpretation.
An introduction to SML. Basic types and operators. Basic expressions and type checking. Tuple and list types. Functions. Readings:
|
|
Mar 09 Mar 11 |
Pattern matching. Meaning and common
uses.
Algebraic datatypes (ADT), or discriminated unions, in SML. Basic uses. Pattern matching with ADTs. Functions accessing and manipulating ADTs. Readings:
|
|
|
||
Aug 03 Aug 05 |
Overview of Ensino Remoto Emergencial Polymorphism. Parametric types in SML. Motivation and uses. Parametric algebraic datatypes. Basic features and examples. Overloading and parameter coercion. Examples in C++. Readings:
Higher-order functions in SML. Currying and partial evaluation. Higher-order combinators. Readings:
|
|
Aug 10 Aug 12 |
Languages. Syntax and Semantics. Abstract syntax trees. Interpretation. Readings:
Q&A |
|
Aug 17 Aug 19 |
Binding and scopes. Extending the basic expression language with let binders. Evaluating expressions with let binders. Examples. Implementing finite sets in SML using lists. Free and bound variables. Closed expressions. Readings:
Closures and binding of functional values. Extending the basic expression language with let binders for funcions. Evaluating expressions with let binders for functions and function calls. Examples. Readings:
Q&A |
|
Aug 26 |
Q&A |
|
Sep 02 |
Exam 1 |
|
Sep 09 |
Introduction to the Python programming language. Readings:
|
|
Sep 21 Sep 23 |
Memory management. Static and dynamic memory management. Stack and heap. Memory management for the heap. Placement, splitting, coalescing. Errors from wrong memory use. Memory leaks and dangling pointers. Garbage collection. Mark and sweep. Copying collector. Reference counting. Readings:
|
|
Sep 28 Sep 30 |
Abstraction. Abstract data types. How to use them in C, SML, Python. Readings:
Object orientation. Principles and their implementation in the wild (Python, C++). Readings: |
|
Oct 05 Oct 07 |
Error handling. Different kinds of error handling and examples. Exceptions. Exceptions in the wild (C++, SML, Python). Readings:
Q&A |
|
Oct 12 Oct 14 |
Paremeters. Formal and actual parameters. Positional and keyword correspondences. Optional parameters. Types of paremeter passing. Eager and lazy evaluation. Readings:
Q&A |