Class Lectures and Reading Assignments
CS 51530
Programming Languages, Interpreters and Compilers
Spring, 2020

This page documents what we do in class. It contains code that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), links to other sources of information, etc.

Here is a link to today's video lecture. It took me a while to recover the video after my computer died near the end of the class.

Here is a link to today's video lecture.

Here are the updated sorting examples.

Here is a link to today's video lecture.

Here is some code from today's lecture.

Here is a link to today's video lecture.

Here are the notes and code from today's lecture.

Today we will look at these applications of closures.

Here is a link to today's video lecture.

Here are the notes and code from today's lecture. I've expanded a lot on the Java versions of makeAdder and makeCounter.

Here is a link to today's video lecture.

Here are the notes and code from today's lecture.

The following zip file defines a language that adds Lisp/Scheme style lists to Language 8.

Here is a link to today's video lecture.

Here are the notes and code from today's lecture.

Here is a link to today's video lecture.

Here are the notes and code from today's lecture.

Here is a link to today's video lecture.

See the homework page for your fifth homework assignment.

Read the first two chapters of the book The Scheme Programming Language.

Do Exercises 2.2.3, 2.2.4, 2.2.7, 2.3.1, 2.4.1 and 2.4.2 from Chapter 2.

Download and install a small version of the Scheme interpreter.

Download and install a small JavaScript interpreter.

Here is a link to today's video lecture.

Here are the code examples that I wrote during the lecture.

The following zip file defines a language with anonymous, nested, first class functions (that is, closures).

Here are links to the video lectures from this week.

Today we will look at the parsers in the "6. infix-arithmetic (recursive descent)" sub-folder of the following zip file.

Here is a nice explanation of what we have been doing in this course. This reference uses Python (instead of Java) as its implementation language.

Here are the explanations of grammars and recursive descent parsing (to an AST) from Crafting Interpreters.

Our class will meet at 2:00 using the Zoom application. Here is an invite link to the class meeting.

Today we will continue to look at the parsers in the "4. baby-expressions" sub-folder of the following zip file.

Here are the notes from today's class. I am trying to get the video from the class up on YouTube. I will put a link here when I can.

Spring Break - No class today.

Spring Break - No class today.

Today we will continue to look at the parsers in the "4. baby-expressions" sub-folder of the following zip file.

The following zip file contains an improved version of Language 7. This version has a real tokenizer and also a repl.

See the homework page for your fourth homework assignment.

Here are some example grammars that we will go over in class next week.

Read Sections 2.1 - 2.6, 2.8, and 2.9 from Chapter 2 in the following book (you need to be on campus to be able to download this chapter).

Read Sections 2.1 - 2.6 from Chapter 2 in the following book (you need to be on campus to be able to download this chapter).

Read Chapter 3 in the following book (you need to be on campus to be able to download this chapter).

Read Chapter 4 and Section 5.1 from Chapter 5 in the following book (you need to be on campus to be able to download this chapter). This is a pretty good explanation of "recursive descent parsing".

Read the following summaries of syntax, semantics, grammars, and parse trees.

The following zip file contains files that define a langauge that adds global first class functions to Language 6.

See the homework assignment page for your third programming assignment.

The following zip file contains files that define a langauge that adds conditional and loop expressions to Language 5.

The following zip file contains files that define a language that modifies the scoping rules for local variables from Language 4.

The following zip file contains files that define a language of arithmetic and boolean expressions with local and golbal variables.

The following zip file contains files that define a language of arithmetic and boolean expressions with golbal variables.

Here is a brief outline of what we are doing.

See the homework assignment page for your second programming assignment.

The following zip file contains files that define a language of arithmetic and boolean expressions.

The following zip file contains files that define a language of arithmetic expressions.

No class today, Martin Luther King Jr. Day.

See the homework assignment page for your first programming assignment.

Read the following references about the tree data structure.

Read the following references about grammars.

The following zip file contains files that define a "language of binary trees" and a "language of arbitrary trees". The first homework assignment is based on these examples.