CS 450: Structure of Higher Level Languages

Spring 2021

Past editions: Spring ‘20, Spring ‘19

Course information

  • Schedule: 3:00pm to 3:50pm, Monday, Wednesday, Friday

Instructor contact

Teaching assistants contact

  • Dennis Liew
  • Office hours: 2:00pm to 3:00pm, Tuesday, Thursday

Class Schedule

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

Date # Lecture
☙ Module 1: Basic Functional Programming ❧
Mo, Jan 25 01 Course overview; arithmetic operations
We, Jan 27 02 Function calls; boolean logic
Fr, Jan 29 03 Function declarations; function definitions
Mo, Feb 1 04 Pairs; lists
We, Feb 3 05 Lists; quoting
☙ Module 2: Advanced Functional Programming ❧
Fr, Feb 5 06 Nested definitions; caching
Mo, Feb 8 07 Tail-call optimization; structs
We, Feb 10 08 Functions as values (closures)
Fr, Feb 12 09 Dynamically-created funcs, storing funcs in lists, currying
Mo, Feb 15 (School closure)
We, Feb 17 10 Function evaluation, abstract syntactic trees
Fr, Feb 19 11 Currying, exists, map
Mo, Feb 22 12 Tail-call optimization,filter
We, Feb 24 13 Reduction
☙ Module 3: Lazy evaluation ❧
Fr, Feb 26 14 Thunks and promises
Mo, Mar 1 15 Streams
We, Mar 3 16 Evaluating expressions; Variable argument functions
☙ Module 4: Formal methods; Lambda calculus ❧
Fr, Mar 5 17 Language λS: slow function calls
Mo, Mar 8 18 Lexical/dynamic scoping
We, Mar 10 19 Language λE: fast function calls
Fr, Mar 12 20 Homework 4 prep
Mo, Mar 15 (School closure)
We, Mar 17 (School closure)
Fr, Mar 19 (School closure)
☙ Module 5: Mutable lambda calculus ❧
Mo, Mar 22 21 Language λF: adding definitions incorrectly
We, Mar 24 22 Implementing λF
Fr, Mar 26 23 Language λD: adding definitions correctly
Mo, Mar 29 24 Implementing λD
We, Mar 31 25 Implementing λD / Why study programming languages?
☙ Module 6: Monads and side effects ❧
Fr, Apr 2 26 Garbage collection
Mo, Apr 5 27 Mark and sweep; sets; refactoring evaluation
We, Apr 7 28 Effectful operations
Fr, Apr 9 29 Refactoring errors; monads
Mo, Apr 12 30 Dynamic dispatching
We, Apr 14 31 Dynamic binding
Fr, Apr 16 32 Monadic continuations
Mo, Apr 19 (School closure)
We, Apr 21 QA Session / "The Lean Researcher" by Alastair Donaldson
☙ Module 7: Abstraction ❧
Fr, Apr 23 33 PhD in CS/Pattern-matching
Mo, Apr 26 34 Generic methods
We, Apr 28 35 Macros
Homework 7 recap (S20)
☙ Module 8: Object Oriented Programming ❧
Fr, Apr 30 36 LambdaJS
Mo, May 3 37 JavaScript method and class inheritance
We, May 5 38 Translating SimpleJS to LambdaJS
Fri, May 7 39 The essence of JavaScript
Mo, May 10 40 QA Session
We, May 12 41 QA Session