CS 450: Structure of Higher Level Languages

Fall 2022

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

Course information

  • Location: (Y02-2300) Room 2300, 2nd floor, University Hall
  • Schedule: Monday, Wednesday / 5:30PM - 6:45PM

Instructor contact

TA office hours (IN PERSON)

  • Dakai Tzou, office hours: 7:00PM - 7:45PM, Monday and Wednesday @ Y02-2300 (where we have classes)
  • Paul Maynard, office hours: Monday, Wednesday at 3:00PM-4:00PM; Tuesday 11:00AM-12:00noon @ M03-0201-33 (SVL office)

Class Schedule

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

Date # Lecture Download
Mo, Sep 5 (School closure)
֍ Basic Functional Programming ֍
We, Sep 7 01 Course info, arithmetic in Racket, evaluation
Mo, Sep 12 02 Branching and function definitions
We, Sep 14 03 Pairs, lists, user structures, and quoting
֍ Advanced Functional Programming ֍
Mo, Sep 19 04 Nested definitions, tail calls
We, Sep 21 05 Activation frames, modules, structs, first-class funcs
Mo, Sep 26 06 Implementing AST's, currying, exists
We, Sep 28 07 Filter, append, foldr
Mo, Oct 3 08 Exercises to prepare for HW2
֍ Lazy evaluation ֍
We, Oct 5 09 Delayed evaluation
Mo, Oct 10 (School closure)
We, Oct 12 10 Streams / Evaluating expressions
֍ Formal methods; Lambda calculus ֍
Mo, Oct 17 11 Language λS: slow function calls
We, Oct 19 12 Lexical/dynamic scoping, function closures
Mo, Oct 24 13 Language λE: fast function calls
֍ Mutable lambda calculus ֍
We, Oct 26 14 Language λF: adding definitions incorrectly
Mo, Oct 31 15 Implementing λF
We, Nov 2 16 Language λD: adding definitions correctly
֍ Monads and side effects ֍
Mo, Nov 7 17 Garbage collection
We, Nov 9 18 Effectful operations
Mo, Nov 14 19 Exceptions
We, Nov 16 20 Monadic continuations
֍ Abstraction ֍
Mo, Nov 21 21 Pattern-matching
We, Nov 23 22 Generic methods
Mo, Nov 28 23 Macros
֍ Object Oriented Programming ֍
We, Nov 30 24 LambdaJS
Mo, Dec 5 25 JavaScript method and class inheritance
We, Dec 7 26 Translating SimpleJS to LambdaJS
Mo, Dec 12 27 The essence of JavaScript
We, Dec 14 28 QA