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
  • CSCI 334: Principles of Programming Languages, Fall 2023

CSCI 334 website repository, Fall 2022

Powered by Bootstrap 4 Github Pages