CS 450: Structure of Higher Level Languages

Spring 2020

Course information

  • Location: (M01-0409) Room 0409, 1st floor, McCormack
  • Schedule: 3:00pm to 3:50pm, Monday, Wednesday, Friday

Instructor contact

  • Email: Tiago.Cogumbreiro@umb.edu
  • Office: (M03-0201-16) Room 0201-16, 3rd floor, McCormack #cs450 (Discord)
  • Office hours: 3:00pm to 4:00pm Wednesday, Thursday, Friday

Teaching assistants contact

  • Abdelrahman Obyat, Dennis Liew
  • Office: (M03-0201-33) Room 0201-33, 3rd floor, McCormack #cs450 (Discord)
  • Office hours: 2:00pm to 4:00pm and 5:15pm to 7:00pm, Tuesday, Thursday

Class Schedule

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

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