CS 450: Structure of Higher Level Languages

Fall 2024

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

Course information

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