-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Jacques Carette edited this page Nov 16, 2023
·
18 revisions
Welcome to the COMPSCI3MI3-F2023 wiki!
Note that most of the material from September 26th onwards is based on Types and Programming Languages; there are PDFs available on the internet of this book.
On top of the various files, there is some extra material available:
- Syllabus which was covered in the first lecture
- Next two lectures (Sept. 7-8) revolved around history of PLs, with the aid of the simplified graph of language genealogy and the full graph too. The material is from Pixel's PL study page where more is available. I scanned my notes of what to cover. Additional material has been added as well.
- Sept. 12 and 14 were live-coding of Haskell. See repo for files produced in class.
- Sept. 15 was on esoteric languages, first by diving in to Wikipedia's links and then then the esolangs web site. Also touched on were quines, ourobouros programs (same page) and polyglots.
- Sept. 19, 21, 22: Introduction to Prolog; we'll be using slide set 03 and 05 from this course at York as well as swi-prolog. The rest of the material was live-coded - some Prolog, some Haskell, see repo for details.
- Sept 26, 28, 29: towards the lambda-calculus. We'll be loosely following the book usually called 'TAPL' (i.e. Types and Programming Languages; there are PDFs available on the internet). Prof. Nick Moore covered this material in his 2021 version of the course, and the videos are on this YouTube playlist. A more modern take is Harper's Practical Foundations of Programming Languages (also has available PDF) but this text would likely be considered 'too hard' for a third year course (at Mac). The material is in the background informed by the Curry-Howard Correspondance and its vast generalization of the Computational Trilogy. The slides that I used are available under Lecture/towardslambda.pdf.
- Oct. 3. 5. 6: Domain Specific Languages and how to embed them in Haskell. There were 3 sets of Haskell code done in class to illustrate the ideas.
- next week was reading week
- Oct. 17 Introduction to the lambda calculus, slides Lecture/lambda.pdf and code Oct17.hs
- Oct. 19 more lambda calculus, slides Lecture/lc2.pdf and code Oct19.hs
- Oct. 20 start on types, Lecture/types.pdf
- Oct. 24 midterm
- Oct. 26 redo Oct. 20th lecture
- Oct. 27 take up midterm in class, and observation visit
- Oct. 31 more types. slides Lecture/types2.pdf slides 1-11
- Nov. 2 more types, slides Lecture/types2.pdf slides 12-18, Lecture/types3.pdf slides 1-5
- Nov. 3 type system in Prolog, Lecture/typing.pl
- Nov. 7 intro to statements, Unit type, sequencing, new vs derived, ascription, let bindings, Lecture/types3.pdf slides 6-15
- Nov. 9 references, memory / store semantics. Lecture/types4.pdf
- Nov. 10 types for references and memory / store, start on pairs
- Nov. 14 mechanized help again: Agda instead of Prolog, Nov4.agda
- Nov. 16 more extensions: pairs, tuples, records, pattern matching, list type, Lecture/features.agda
- Nov. 17 subtyping (on the way to FJ)
The following is a rough prediction of the future and is subject to change; all the material is from TAPL (except for Agda)
- Nov. 21 featherweight Java
- Nov. 23 inductive types
- Nov. 24 polymorphism
- three slack lectures to give room for things to slip or more topics to be added
- Dec. 5 review for final exam