These are the class notes files. In some places they are in pretty
raw form, intended mainly for reference, code examples etc. They are
not a substitute for taking notes in class, and they certainly cannot
compensate for not coming in. Also, they are not guaranteed to cover
all of the material that was presented in class.
Semantics (= Evaluation) Implementing an Evaluator Implementing The AE Language Introduction to Typed Racket Bindings & Substitution Adding Bindings to AE: The WAE Language
We will use the Racket environment extensively. DrRacket, the major
component of Racket, will be used to develop code, debug, and submit
homeworks. 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, download the
plugin package, and use the “Setup PLT” application to
install it. You can also use “Install .plt File” in the File
menu, and enter the URL for the plugin.
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:
Restart DrRacket (you should see a NEU icon on startup, and a
“PL Handin” in DrRacket’s toolbar).
Menu: File > Manage PL Handin Account... (Your
computer will establish a secure connection to the handin server at
this point.)
Make sure the “New User” tab is selected, and fill in the
form:
‘Username’ should be a lowercase alphanumeric string
‘Full Name’ should be your full name (as you want to be
known in class, not necessarily your ‘formal’ name: “Bob
Smith” is better than “Robert William Junior of the New
England Smiths”).
‘Email’ should be your active email — this address
will be used to contact you, so make sure you enter the email
address you use most frequently (for example, enter your Gmail
address if you use Gmail every day, even if you have a
@ccs.neu.edu address).
‘ID#’ is the last 4 digits of your NEU ID.
Enter a password, twice. (Make sure you remember your
password.)
Click the “Add User” button — if everything went fine,
you should see a “Success” message at the top of the dialog.
If you had a mistake in the information for your account,
open up the “Manage...” dialog, and choose the “Change Info”
tab; enter your password in the “Old Password” field and
re-fill any fields you want to change and/or a new password.
(Once you fill your current password you can click the “Get
Current Info” button to retrieve the current values.) If you
forgot your password, mail us and we will re-set it.
To submit a file, open it in DrRacket, and hit the “PL
Handin” button, choose the homework you’re submitting to, enter
your password and hit the big Handin button.
To verify the file you sent, you can click the “PL Handin”
button, choose the homework, check the “Retrieve” checkbox,
enter your password and click the big button. You can even use
this method if you want to work on different machines: retrieve
your file, edit, and submit to save.
Each time DrRacket starts, the plugin will check for updates,
and will ask you if it found that a newer version is available.
The plugin will be updated frequently, follow the web page and the
piazza group (see below) for announcements.
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.
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.
IRC
IRC, or “Internet Relay Chat” is a text-based chat protocol where
people can join channels on IRC servers and communicate. IRC
is sometimes refered to as “interactive notepad”. The major benefit
of using IRC is real-time conversations with fellow class members as
well as course staff.
If you have a CCIS account, you are almost ready to start using IRC.
The following will describe a basic configuration, as described by
jmendel (aka John Mendelewski). Feel free to set up your client as
you wish.
Choose your favorite CCIS Linux machine.
SSH into this machine. Many Linux distributions have OpenSSH
installed by default, so just type
ssh 〈CCIS-username〉@〈machine〉.ccs.neu.edu
Note that login is the preferred machine for such things
(specifically, it’s a machine that cannot be rebooted by random
students).
If you are using Windows or Mac, please look into a SSH client for
that OS. For Windows, putty is a popular free ssh client that works
well. Mac OS X comes with an ssh command that you can run in
the Terminal.
Once presented with a prompt, similar to
[〈username〉@〈machine〉] ~ % use the command
screen
The screen command allows you to run programs that will live on
this machine even after you log off — think of it as a kind of a
virtual text session manager. This is useful, since it makes it
possible to continuously run the IRC client so that you can
reconnect to it and see everything that was said while you were
away.
Important: You should use screen with no arguments
only once since this will create a new session. Later you will
use screen -rd to reconnect to an existing session.
The screen should flash, possibly displaying a welcome message.
Press enter until you are given a prompt again. From here,execute
the command
irssi
This is a console based IRC client. This is good because you can
run it from screen, and as said, keep the program running even after
you leave.
To connect to the CCIS IRC server (called “irc”), type in
the irssi prompt:
/connect irc
Text should scroll down the screen now.
Once it stops, you should identify yourself with the server.
First, if you haven’t already, register by entering:
/msg nickserv register 〈some-password〉
This will secure the nickname you chose to you, and only you.
If you’re registered, then you need to identify yourself using your
password:
/msg nickserv identify 〈some-password〉
Please read up on google about how to use irssi.
Here’s a link
that seems useful.
(Note: while doing the above, a number may show up at the bottom of
your window. This means there is activity in a window that is not
currently shown. To show this window, press Esc and that
number.)
Once you are identified, join the PL channels:
/join #pl
/join #pl-talk
#pl-talk is the student-only channel (no instructor here), and
#pl is the main course channel and Eli is usually there too.
The content you post to these channels is up to you, but should
follow the common guidelines of the mailing list.
Now that you are running irssi inside screen, press
Ctrl-A and then Ctrl-D (or just D). This will be caught
by screen and make it “detach” your session. This means
everything you are doing goes into a background process, waiting for
you you to return. You should be back at the original prompt that
you started with when you first connected into 〈machine〉. Feel
free to log out of this machine with Ctrl-D or by typing
exit.
To get back to IRC later, ssh back into 〈machine〉 and
issue the following command:
screen -rd
You should be back where you left off, with irssi still running.
Repeat the Ctrl-A Ctrl-D to detach again.
Read up on these commands before you start experimenting. Google is
your friend.
Finally, IRC is a valuable resource: don’t abuse it! Specifically,
you should not post any source code, and you should try to read homework
texts thoroughly before you ask questions. This applies for both
channels.
On-line books and other materials
Many Scheme books etc are available on-line, a few good ones are:
How to Design Programs: A good introductory book that uses Racket. We use
this book in the introductory part of the course. (You should be
familiar with it.)