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
֍ 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
֍ Advanced Functional Programming ֍
Th, Feb 2 04 Recursion, nested definitions
Tu, Feb 7 05 Activation frames, modules, structs, first-class funcs
Th, Feb 9 06 Implementing AST's, currying, exists
֍ Optimized Functional Programming ֍
Tu, Feb 14 07 Filter, append, foldr
Th, Feb 16 08 Reverse, join-strings, foldl, performance
Tu, Feb 21 09 Exercises
֍ Lazy evaluation ֍
Th, Feb 23 10 Delayed evaluation
Tu, Feb 28 11 Streams / Evaluating expressions
֍ Formal methods; Lambda calculus ֍
Th, Mar 2 12 Language λS: slow function calls
Tu, Mar 7 13 Lexical/dynamic scoping, function closures
Th, Mar 9 14 Language λE: fast function calls
Tu, Mar 14 (School closure)
Th, Mar 16 (School closure)
֍ Mutable lambda calculus ֍
Tu, Mar 21 15 Language λF: adding definitions incorrectly
Th, Mar 23 16 Implementing λF
Tu, Mar 28 17 Language λD: adding definitions correctly
֍ Monads and side effects ֍
Th, Mar 30 18 Garbage collection
Tu, Apr 4 19 Effectful operations
Th, Apr 6 20 Monadic error/list; generics; parameters
Tu, Apr 11 21 Monadic continuations
֍ Abstraction ֍
Th, Apr 13 22 Pattern-matching
Tu, Apr 18 23 Generic methods
Th, Apr 20 24 Macros
֍ Object Oriented Programming ֍
Tu, Apr 25 25 LambdaJS
Th, Apr 27 26 JavaScript method and class inheritance
Tu, May 2 27 Translating SimpleJS to LambdaJS
Th, May 4 28 QA
Tu, May 9 29 QA