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.

Readings:


An introduction to SML. Basic types and operators. Basic expressions and type checking. Tuple and list types. Functions.

Readings:

SML exercise

Mar 09
Mar 11

Pattern matching. Meaning and common uses.

Readings:


Algebraic datatypes (ADT), or discriminated unions, in SML. Basic uses. Pattern matching with ADTs. Functions accessing and manipulating ADTs.

Readings:

ENSINO REMOTO EMERGENCIAL starts here
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