Lectures
Number | Date | Topic | Slides |
---|---|---|---|
1 | Wednesday, January 31 | Course intro |
334-01-lecture_2024-01-31.pdf |
2 | Tuesday, February 6 | What is a Language? |
334-02-lecture_2024-02-06.pdf |
3 | Thursday, February 8 | F# Intro |
334-03-lecture_2024-02-08.pdf Truncated lecture due to fire alarm. Note that the reading in the course packet has everything you need to know for Lab 1. |
4 | Tuesday, February 13 | Pattern matching |
334-04-lecture_2024-02-13.pdf |
5 | Thursday, February 16 | Algebraic Data Types |
334-05-lecture_2024-02-15.pdf Quiz 2 solutions: solution1.fs (basic use of pattern) solution2.fs (pattern with when )solution3.fs (pattern with option ) |
6 | Tuesday, February 20 | BNF, lambda calculus syntax |
334-06-lecture_2024-02-20.pdf If you missed the lecture because you were out sick, you can watch this video. |
7 | Thursday, February 22 | Alpha and beta reduction |
334-07-lecture_2024-02-22.pdf If you missed class because of recent events, you can watch this video. We had a class activity instead of a quiz. You can find the solution here. |
8 | Tuesday, February 27 | Abstract syntax trees and more reductions |
334-08-lecture_2024-02-27.pdf There is a practice problem at the end of the slide deck and the (unnecessarily detailed) solution is here. |
9 | Thursday, February 29 | Higher-order functions |
334-09-lecture_2024-02-29.pdf Quiz solution. |
10 | Tuesday, March 5 | Mo HOFs, mo computability |
334-10-lecture_2024-03-05.pdf Quiz solution. |
11 | Thursday, March 7 | Decidability |
334-11-lecture_2024-03-07.pdf Quiz solution. Lambda-o-Matic. |
12 | Tuesday, April 2 | Proof by reduction |
334-12-lecture_2024-04-02.pdf |
13 | Thursday, April 4 | Language architecture |
334-13-lecture_2024-04-04.pdf Quiz solution. |
14 | Tuesday, April 9 | Growing a language |
No slides. Instead, we started watching Guy Steele's lecture, Growing a Language. We watched the first 23 minutes of the talk. Please finish watching before Thursday's class. |
15 | Thursday, April 11 | Designing a language |
No slides. Instead, we went to WCMA and did a language design exercise. |
16 | Tuesday, April 16 | Parsing |
334-16-lecture_2024-04-16.pdf Our bracelang implementation:bracelang.fsproj Combinator.fs (combinator library) Library.fs (our parser definition) Program.fs (main program and REPL loop) |
17 | Thursday, April 18 | Program interpretation |
334-17-lecture_2024-04-18.pdf Quiz solution. Our pluslang implementation:pluslang.fsproj Combinator.fs (combinator library) Library.fs (parser and evaluator definitions) Program.fs (main program) |
18 | Tuesday, April 23 | An evaluator that produces graphics |
334-18-lecture_2024-04-23.pdf Here's a live coding video from a couple years ago where I build the same language. Our linelang implementation:linelang.fsproj Combinator.fs AST.fs Parser.fs Evaluator.fs Program.fs Some linelang programs:simple.line complex.line |
19 | Thursday, April 25 | Variables |
334-19-lecture_2024-04-25.pdf Quiz solution. The complete source code for blub :blub.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 |
20 | Tuesday, April 30 | Testing / Midterm exam review |
334-20-lecture_2024-04-30.pdf Note that I updated the solution handout with a fix for my mistake in the function graph for gcd and I included the clever alternative reduction that Amir came up with.\ |
21 | Tuesday, May 2 | Packages / Object-oriented programming |
334-21-lecture_2024-05-07.pdf Here's a link to Dan Ingalls' talk on OOP at Apple Computer. Here's a live demonstration of the Smalltalk-76 system so that you can see what it was like to work on the Xerox Alto. Keep in mind that this was the first computer that had what we think of as a modern graphical user interface. You can see why the folks at Apple Computer were blown away! A program that uses a NuGet package: image-program-with-package.fsproj Program.fs I added this package to my project by running dotnet add package SixLabors.ImageSharp.Drawing --version 2.1.3 You can find the appropriate dotnet add string to use at nuget.org. |
22 | Tuesday, May 2 | Object-oriented inheritance / How to give a good talk |
334-22-lecture_2024-05-09.pdf A program that demonstrates that Java passes the Ingalls test for extensibility (aka the "rectangle test"): RectangleTest.java If you would like to meet about your final project, schedule a project one-on-one meeting with me. Please limit yourself to one meeting to give everyone a chance to meet. |