Keith J. O'Hara

teaching

CMSC 305

Design of Programming Languages (F2020)

overview | logistics | schedule | assignments | presentations | resources

Tentative Schedule (changes frequently)

week date topics readings work assigned language presentation
1 8/31/2020 History of Lisp; introduction; metaprograms syllabus; LISP 1.5 Programmer's Manual pg 1--14 (hello 'scheme)
9/02/2020 expressions sicp 1.1 substitution model scheme*
9/04/2020 recursion; grammars sicp 1.2 lab 0: generating expressions
2 9/7/2020 higher order functions sicp 1.3 compose/curry/tap fortran/cobol
9/09/2020 closures lua 6; "Taste of Functional Programming" (lua 9.4); "An Experiment in Software Prototyping Productivity" Sec. 6.1; Evolution of Lua lua*
9/11/2020 functional geometry sicp 2.2.4; pict lab 1: functional geometry IPL/Piet
3 9/14/2020 lists sicp 2–2.1.3; 2.2–2.2.3 map/reduce algol/apl
9/16/2020 symbolic data 2.3.1 sym-diff perl/awk
9/18/2020 prefix evaluation sicp 2.1.1 & 2.3.2 lab 2: auto-diff
4 9/21/2020 environments sicp 3.1 & 3.2 basic/logo
9/23/2020 mutable data structures sicp 3--3.3.3 assoc/tables simula/smalltalk
9/25/2020 lexing; postfix sicp 2.4 & 2.5 lab 3: postfix interpreter forth*
5 9/28/2020 eval/apply sicp 4.1.1–4.1.3 scheme in scheme pascal/ada
9/30/2020 environments sicp 4.1.3–4.1.6 GP/sql
10/02/2020 scheme interpreter "(How to Write a (Lisp) Interpreter (in Python))" by Norvig lab 4: scheming python*
6 10/05/2020 lambda calculus "A small (yet Turing-equivalent) language" by Might; eopl 1 matlab/postscript/mathematica
10/07/2020 macros; church encoding "Church Encoding in Scheme" by Might; dybvig 3.1; Making Data Out Of Functions" from "JavaScript Allongé" by Braithwaite
10/09/2020 Exam 1
7 10/12/2020 representation; environments eopl 2 C++/bash
10/14/2020 LET expressions eopl 3–3.2 sml/ocaml
10/16/2020 scanning & parsing eopl appendix B lab 5: json tcl/ruby
8 10/19/2020 scanning CI 1–4 eiffel/hypertalk
10/21/2020 AST; visitor pattern CI 5 C#/F#
10/23/2020 parsing CI 6 & "Top Down Operator Precedence" by Crockford lab 5b: json II javascript*
9 10/26/2020 statements CI 7 & 8 project erlang/coq
10/28/2020 control flow & functions CI 9–11 go/r
10/30/2020 "Built to Last" by Mar Hicks lab 6: jLisp 1 scala/dart
10 11/02/2020 PROCedures; scope eopl 3.3–3.7 agda/factor
11/04/2020 streams sicp 3.5 idris/julia
11/06/2020 lab 7: jLisp 2 kotlin/rust
11 11/09/2020 state eopl 4–4.4 clojure/nim
11/11/2020 call by name, need & reference eopl 4.5 haskell/D
11/13/2020 laziness sicp 4.2; laziness
12 11/16/2020 nondeterminism sicp 4.3 elixir; web assembly
11/18/2020 logic programming sicp 4.4 Exam 2 prolog/befunge
11/20/2020 A unified approach to solving seven programming problems by Byrd et al.; Norvig on Unification lab 8: logic programming minikanren
13 11/23/2020 THANKSGIVING
11/25/2020
11/27/2020
14 11/30/2020 trampolining eopl 5–5.3 befunge/swift
12/02/2020 exceptions & threads eopl 5.4–5.5 terra/hallide
12/04/2020 continuations "Continuations by Example" by Might; lab 9: continuations php
15 12/07/2020 content-addressed code SPECIAL VISITOR unison
12/09/2020 ADVISING DAY
12/11/2020 PROJECT DAY
16 12/14/2020 COMPLETION WEEK
12/16/2020
12/18/2020 Final Project Presentations