This page allows you to download the slides that are used in the course. You can get the set of slides that are presented in all the videos of each lesson. It is as simple as clicking on the links below.
Oz Language Syntax
Lesson 1: Introduction
- Course motivation and overview
- Course organization
- Our first paradigm: functional programming
- Mozart as a calculator; identifiers and variables
- Single assignment in the functional paradigm
- Static scope and identifier redeclaration
- Tips on Oz syntax
- Functions and numbers
- Functions that call other functions: composition and recursion
Lesson 2: Recursion, loops, and invariant programming
- Overview of invariant programming
- Factorial with communicating vases
- Sum of digits with communicating vases
- The golden rule of tail recursion
- Invariant programming to calculate powers
Lesson 3: Lists and pattern matching
- Defining lists with grammar rules
- Useful representations for lists
- Pattern matching
- List functions and the kernel language
Lesson 4: Higher-order programming and records
- Contextual environment
- Procedure values
- Examples of higher-order programming
- Records
- Full Kernel Language
Lesson 5: Trees and computational complexity
- Introduction to trees
- Ordered Binary Trees
- Search Trees and Lookup
- Insert function
- Balanced trees
- Delete function
- Goal-oriented programming
- Execution speed and big-O notation
- Temporal complexity of the Pascal function
- Best case, average case, worst case
- Upper and lower bounds
- Spatial complexity
- Moore's Law and program optimization
- Intractable problems and the class NP
- Conclusions on performance
Lesson 6: Correctness and semantics
- Overview of correctness and semantics
- Proving a program is correct using the semantics
- The abstract machine
- An example execution in the abstract machine
- Supplementary slides (not used in a video): Calculations with environments
- Semantic rule for each instruction
- Procedure definition and call semantics
- Semantics: the ultimate programming tool
- Conclusions for Louv1.1x