CS 450: Structure of Higher Level Languages

Fall 2023

Past editions: Spring ‘23, Fall ‘22, Spring ‘21, Spring ‘20, Spring ‘19

Course information

  • Location: University Hall, Y02-2120
  • Schedule: Monday/Wednesday 5:30PM - 6:45PM

Instructor contact

Class Schedule

Note: Any lecture titles in future dates are considered tentative.

Date # Lecture Download
🙙 1. Basic Functional Programming 🙚
We, Sept 6 01 Course info, arithmetic in Racket, evaluation
Mo, Sept 11 02 Branching and function definitions
We, Sept 13 03 Lists and code serialization
🙙 2. Advanced Functional Programming 🙚
Mo, Sept 18 04 Recursion, nested definitions
We, Sept 20 05 Modules, structs, (map) updating lists
Mo, Sept 25 06 Functions as data-structures, currying
🙙 3. Optimized Functional Programming 🙚
We, Sept 27 07 foldr, looping first-to-last
Mo, Oct 2 08 foldl, looping last-to-first
We, Oct 4 09 Homework help; tail-recursion
Mo, Oct 9 (no class)
🙙 4. Lazy evaluation 🙚
We, Oct 11 10 TypedRacket, thunks, and promises
Mo, Oct 16 11 Infinite streams
We, Oct 18 12 Finite streams, evaluating expressions
🙙 5. Implementing function calls 🙚
Mo, Oct 23 13 Language λS: slow function calls
We, Oct 25 14 Language λE: fast function calls
Mo, Oct 30 15 Exercises
🙙 6. Implementing Racket's define 🙚
We, Nov 1 16 Specifying λD
Mo, Nov 6 17 Implementing λD
We, Nov 8 18 Exercises
🙙 7. Monads and side effects 🙚
Mo, Nov 13 19 Garbage collection
We, Nov 15 20 The state monad
Mo, Nov 20 21 Loops and error monad
We, Nov 22 (no class)
🙙 8. Abstraction 🙚
Mo, Nov 27 22 Monadic error; Monadic continuations
We, Nov 29 23 What is a PhD / Parameters
Mo, Dec 4 24 Generic methods, Macros
🙙 9. Object Oriented Programming 🙚
We, Dec 6 25 LambdaJS
Mo, Dec 11 26 JavaScript method and class inheritance
We, Dec 13 27 Conclusion