CS 450: Structure of Higher Level Languages

Spring 2023

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

Course information

  • Location: (W01-0004) Room 0004, 1st floor, Wheatley
  • Schedule: Tuesday/Thursday 11:00AM - 12:15PM

Instructor contact

Class Schedule

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

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