PL: Resources

Class Notes

These are the class notes files. They are not a substitute for taking your own notes in class, and they certainly cannot compensate for not coming in.

Lecture #1
    Tuesday, January 8th
Intro to CS4400/CS5400
Intro to Programming Languages
Lecture #2
    Tuesday, January 8th
Intro to Racket
Side-note: “Goto Statement Considered Harmful”
Quick Intro to Racket
Lists & Recursion
Some Style
Tail calls
Lecture #3
    Tuesday, January 15th
Note on Types
Side-note: Names are important
BNF, Grammars, the AE Language
Lecture #4
    Tuesday, January 15th
Simple Parsing
The match Form
Semantics (= Evaluation)
Side-note: Compositionality
Implementing an Evaluator
Implementing The AE Language
Lecture Notes, single file
    Tuesday, January 15th
If you find a single file format more convenient.
(Also, as a plain text file.)
The rest of the notes
    Friday, January 18th
Note that this can change once we go over it in class.

Handouts

Interpreters

Software

We will use the Racket environment extensively. DrRacket, the major component of Racket, will be used to develop code, debug, and submit homework. CCS computers have an updated version installed (available on both Unix and Windows). To use it on your own machine, get it from the Racket website. Binary installers exist for all major operating systems, and the course work will be platform independent.

Racket has a system for distributing software bundles that will be used to get a course-specific plugin. This packages both specific functionality for each homework, and an integrated tool for homework submissions. Once you have Racket installed, start DrRacket, use the “Install .plt File” in the File menu and enter http://pl.barzilay.org/pl.plt — and restart DrRacket after it is installed. You can also use the “Setup PLT” application to install it if you want to do an off-line installation.

Note: The handin server uses a dedicated port for communication. You need to work from a network that does not restrict this port — for example, if you use Northeastern’s ‘NUwave-guest’ network, then you will not be able to connect to the server. ‘NUwave’ (which requires you to authenticate through myNEU) does not have this restriction.

To set-up your account:

Additional software may be used later in the course.

Piazza Group

There is a piazza group for this course at Piazza.com. The piazza group is the main medium for discussions, questions, announcements etc. You should use it if you have any questions, so others can benefit from the discussion as well. If you want to ask a question that involves showing your solution code, make sure that you choose the “private” option. Do not to post any homework code on the piazza group without using the “private” option. Direct emails to the course staff should be your last resort. Consult the Email and Piazza Group Policies handout for further details about piazza group posts and emails.

Feel free to post questions privately if you have any concerns about them, and if your question is useful for the rest of the class and we think that it is fine to do so, we will make it public.

Note that you do not need to request to be subscribed to the mailing list — you will get added after you register with the submission server.

On-line books and other materials

There are lots of Racket and Scheme books on-line, a few good ones are:

You can also find some good on-line courses:

In addition, there are lots of additional Scheme-related references at Schemers.org.