Lectures

Number Date Topic Slides
1 Thursday, September 8 Course intro Slides
2 Tuesday, September 13 Language models Slides
3 Thursday, September 15 ML Slides
Audio recording
4 Tuesday, September 20 ML, part 2 Slides
Video recording
5 Thursday, September 22 Higher order functions Slides
Sorry, I flubbed the recording. I forgot to press the "record" button.
6 Tuesday, September 27 What can computers do? / Lambda calculus syntax Slides
Video recording
n/a Thursday, September 29 (no class) No class; giving a talk at NEPLS.
If you're curious, you can watch a version of the same talk by my coauthor.
Totally optional, but Charlie is an awesome speaker, and you'll get a sense of why I think PL is exciting.
7 Tuesday, October 4 Lambda calculus semantics Slides
Solution to problem discussed in class
8 Tuesday, October 6 Computability, part 1 Slides
Function graph activity
Function graph activity solution
9 Thursday, October 13 Computability, part 2 Slides
10 Tuesday, October 18 Designing a language (at WCMA) No slides, just this activity.
11 Thursday, October 20 C, part 1 Slides
A helloworld program:
    helloworld.c
A program that explores pointer operations:
    address_of.c
A program with three source files and a Makefile to stitch them together:
    a.c
    a.h
    b.c
    b.h
    c.c
    Makefile (the one we wrote in class)
    Makefile (an even better one, using variables to factor out common parts)
12 Tuesday, October 25 C, part 2 Slides
A simple string manipulation program that already (!!!) has a bug:
    string_mistake.c
A program that fails... mysteriously:
    what_went_wrong.c
13 Thursday, October 27 C, part 3 Slides
Using a dynamically-allocated struct:
    person.c
A C# program that demonstrates the difference between call-by-value and call-by-reference:
    Program.cs
    call-by-reference.csproj (run with 'dotnet run')
13 Tuesday, November 1 midterm exam review
n/a Thursday, November 4 midterm exam
14 Tuesday, November 8 Compilers vs interpreters, parsing part 1 Slides
15 Thursday, November 10 Parsing part 2 Slides
Also, here's a video from last semester where I build bracelang from start to finish. Fast-forward to 22:20 to see the bracelang parts.
16 Tuesday, November 15 Building an interpreter from start to finish Slides
The "pluslang" interpreter:
    pluslang.zip
17 Thursday, November 17 Building an interpreter that produces graphics (no slides, just a video)
An SVG file that you can open in your browser:
    test.svg
The "linelang" interpreter:
    linelang.zip
Some "linelang" programs:
    simple.line
    complex.line
18 Tuesday, November 22 Variables Slides and video.
The "blub" interpreter:
    blub.tgz
19 Tuesday, November 29 Scope and unit testing Slides and video.
The "blub" interpreter, now with unit tests:
    blub-with-tests.zip
20 Thursday, December 1 Type inference Slides and video.
21 Tuesday, December 6 Object-oriented programming systems Slides.
You can watch the rest of Dan Ingalls' talk here if you want (optional).
Also, Dan did a live coding demo in Smalltalk at the Computer History Museum a few years ago, so if you're curious for what the real system looked like, have a look (optional).
Finally, here's my demonstration of the Ingalls extensibility test for Java that we did in class:
    Demo.java
22 Thursday, December 8 Wrap-up Slides and video.
  • CSCI 334: Principles of Programming Languages, Fall 2022

CSCI 334 website repository, Fall 2022

Powered by Bootstrap 4 Github Pages