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 completely platform
independent.
Important: Racket tends to be well-behaved in keeping newer
versions backward-compatible, but it is still highly recommended to use
the same version that the handin server is using: 8.14. It is
especially important to install an updated version if you have an
existing older version that you’ve used in Fundies.
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 — 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:
- Restart DrRacket if you haven’t (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.
(it’s specific for the class and ***does not*** have to match your CCS/NEU/whatever accounts) - ‘Full Name’ should be your name as you want to be known by us.
(it does not have to be your formal name: “Bob Smith” is better than “Robert William Junior of the New England Smiths”) - ‘Email’ should be your preferred email — this address will be used to contact you, so make sure you enter the email address you use most frequently (for example, if you read your personal Gmail emails every day but not your @northeastern.edu email, then use the former).
- ‘ID#’ is the last 4 digits of your NEU ID.
- Enter a password, twice. (Make sure you remember your password. Really.)
- ‘Username’ should be a lowercase alphanumeric string.
- 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 click the “Get Current Info” button to retrieve the current values, make your changes (including a new password if you want to change it) and submit the changes. If you forgot your password, mail us a phone number and we will call you to re-set it (we’ll need to use a temporary password, hence the call).
- 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 piazza (see below) for announcements.
Additional software may be used later in the course.
Piazza
There is a piazza page for this course at Piazza.com. Piazza 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 piazza without using the “private” option. Direct emails to the course staff should be your last resort. Consult the Email and Piazza Policies handout for further details about piazza 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:
- How to Design Programs (2nd Edition): A good introductory book that uses Racket. We use this book in the introductory part of the course. (You should be familiar with it, possibly in its first edition form.)
- Programming Languages: Application and Interpretation: This is the main textbook that we use. (See also the book website.)
- Structure and Interpretation of Computer Programs: A book written for a course at MIT, which has made the language popular early on. Widely known as the “Wizard Book”. It’s fun to go over it though it shows its age in several places.
- The Scheme Programming Language, 3rd ed: Another advanced book, and a version using the newer R6RS standard: The Scheme Programming Language, 4th ed.
- Racket Documentation: The Racket manuals have guides that introduce the language and demonstrate real-world uses. Specifically, see the Systems Programming Guide guide for a quick tutorial that gets you to implement a web server from scratch.
- Teach Yourself Racket is a quick crash course that will introduce you to Racket programming.
- Learn Racket in Y Minutes is an even quicker intro to Racket.
You can also find some good on-line courses:
- Introduction to Programming Languages is a course at Brown, taught by Shriram Krishnamurthi who is the author of PLAI, with on-line videos of the lectures.
In addition, there are lots of additional Scheme-related references at Schemers.org.