Lectures
Number | Date | Topic | Slides |
---|---|---|---|
1 | Thursday, September 7 | Course intro |
334-01-lecture_2023-09-07.pdf |
2 | Monday, September 11 | WCMA |
334-02-lecture_2023-09-11.pdf |
3 | Thursday, September 14 | ML |
334-03-lecture_2023-09-14.pdf |
4 | Monday, September 18 | ML, part 2 |
334-04-lecture_2023-09-18.pdf |
5 | Thursday, September 21 | Error Handling, Higher Order Functions |
334-05-lecture_2023-09-21.pdf |
6 | Monday, September 25 | The Dream of Computation |
334-06-lecture_2023-09-25.pdf |
7 | Thursday, September 28 | Evaluation by Rewriting |
334-07-lecture_2023-09-28.pdf lecture video |
8 | Monday, October 2 | Surviving the Lambda Calculus |
334-08-lecture_2023-10-02.pdf |
9 | Thursday, October 5 | Computability |
334-09-lecture_2023-10-05.pdf lecture video |
10 | Thursday, October 12 | Computability, part 2 |
334-10-lecture_2023-10-12.pdf |
11 | Monday, October 16 | Midterm Exam Review |
334-11-lecture_2023-10-16.pdf |
Thursday, October 19 | Midterm Exam | no lecture | |
12 | Monday, October 23 | Type Inference |
334-12-lecture_2023-10-23.pdf |
13 | Thursday, October 26 | Language architecture overview; Parsing |
334-13-lecture_2023-10-26.pdf |
14 | Monday, October 30 | Building a parser using combinators |
334-14-lecture_2023-10-30.pdf lecture video The complete source code for the silly language we built: assets/code/334-14-lecture_2023-10-30/bracelang.fsproj assets/code/334-14-lecture_2023-10-30/Combinator.fs assets/code/334-14-lecture_2023-10-30/Library.fs assets/code/334-14-lecture_2023-10-30/Program.fs 💩 Also, with all the rain we've had lately, you can see a working example of the cool irrigation system the College provides with my office 💩 |
15 | Thursday, November 2 | WCMA | No slides, just a handout. |
16 | Monday, November 6 | Building an interpreter |
334-16-lecture_2023-11-06.pdf The complete source code for pluslang: pluslang.fsproj Combinator.fs Program.fs |
17 | Thursday, November 9 | Building a language that produces graphics |
No slides, but there is a video from last year where I build the same language. (Warning: I'm kind of a spaz in this video... but maybe I'm always a spaz.) The complete source code for linelang: linelang.fsproj Combinator.fs AST.fs Parser.fs Evaluator.fs Program.fs Some linelang programs: simple.line complex.line |
18 | Thursday, November 16 | Variables |
334-17-lecture_2023-11-16.pdf lecture video The complete source code for blub: pluslang.fsproj Combinator.fs AST.fs Parser.fs Evaluator.fs Program.fs Sample blub programs: helloworld.blub simplemath.blub simplemath2.blub math.blub hellovariable.blub weird_but_actually_ok.blub |
19 | Monday, November 20 | Packages / Testing |
334-18-lecture_2023-11-20.pdf A simple image manipulation program that uses the ImageSharp library from NuGet: imagetest.zip A slightly more complicated program that adds some helper functions and tests whether some of those functions work correctly: imagestuff-solution.zip Also, as promised, here are some sample final project presentations: Arpeggify, Jared Berger, Spring 2020. PixelPunk, Max Kan and Rijul Jain, Spring 2022. CardX, Ruby Teklemariam and Levi Borevitz, Spring 2022. Muse, Aiden Pham and Sabiha Imran, Fall 2022. Da Word Bot, Caleb Dittmar, Fall 2022. |
20 | Monday, November 27 | Scope |
334-20-lecture_2023-11-27.pdf lecture video |
21 | Thursday, November 30 | Object-Oriented Programming, part 1 |
334-21-lecture_2023-11-30.pdf |
22 | Monday, December 4 | Object-Oriented Programming, part 2 / How to give a good talk |
334-22-lecture_2023-12-04.pdf Dan Ingalls' lecture on Object-Oriented Programming, if you want to watch the rest of the video. Highly recommended! RectangleTest.java |
23 | Thursday, December 7 | Wild Models of Programming | 334-23-lecture_2023-12-07.pdf |