Skip to main content

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

  1. Oz language syntax

Lesson 1: Introduction

  1. Course motivation and overview
  2. Course organization
  3. Our first paradigm: functional programming
  4. Mozart as a calculator; identifiers and variables
  5. Single assignment in the functional paradigm
  6. Static scope and identifier redeclaration
  7. Tips on Oz syntax
  8. Functions and numbers
  9. Functions that call other functions: composition and recursion

Lesson 2: Recursion, loops, and invariant programming

  1. Overview of invariant programming
  2. Factorial with communicating vases
  3. Sum of digits with communicating vases
  4. The golden rule of tail recursion
  5. Invariant programming to calculate powers

Lesson 3: Lists and pattern matching

  1. Defining lists with grammar rules
  2. Useful representations for lists
  3. Pattern matching
  4. List functions and the kernel language

Lesson 4: Higher-order programming and records

  1. Contextual environment
  2. Procedure values
  3. Examples of higher-order programming
  4. Records
  5. Full Kernel Language

Lesson 5: Trees and computational complexity

  1. Introduction to trees
  2. Ordered Binary Trees
  3. Search Trees and Lookup
  4. Insert function
  5. Balanced trees
  6. Delete function
  7. Goal-oriented programming
  8. Execution speed and big-O notation
  9. Temporal complexity of the Pascal function
  10. Best case, average case, worst case
  11. Upper and lower bounds
  12. Spatial complexity
  13. Moore's Law and program optimization
  14. Intractable problems and the class NP
  15. Conclusions on performance

Lesson 6: Correctness and semantics

  1. Overview of correctness and semantics
  2. Proving a program is correct using the semantics
  3. The abstract machine
  4. An example execution in the abstract machine
  5. Supplementary slides (not used in a video): Calculations with environments
  6. Semantic rule for each instruction
  7. Procedure definition and call semantics
  8. Semantics: the ultimate programming tool
  9. Conclusions for Louv1.1x