CSU660 Resources




Class Notes

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.

• Lecture #01  Tuesday, January 8th  Introduction to CSU660
• Lecture #02  Friday, January 11th  Quick Introduction to (PLT) Scheme
• Lecture #03  Tuesday, January 15th  More Scheme: Lists
• Lecture #04  Friday, January 18th  Function values, BNF, Grammars, Simple Parsing
• Lecture #05  Tuesday, January 22nd  Semantics, Implementing an Evaluator, Introduction to Typed Scheme
• Lecture #06  Friday, January 25th  Bindings & Substitution
• Lecture #07  Tuesday, January 29th  Formal Specs, Lazy vs Eager, de Bruijn Indices
• Lecture #08  Friday, February 1st  First Class Functions, Implementing Function Values
• Lecture #09  Tuesday, February 5th  Introducing `lambda', Functions as Objects, Currying
• Lecture #10  Friday, February 8th  Substitution Caches, Evaluating with Caches
• Lecture #11  Tuesday, February 12th  Dynamic vs Lexical Scope
• Lecture #12  Friday, February 15th  Closures, Implementing Lexical Scope, Using Scheme Closures
• Lecture #13  Tuesday, February 19th  Types of Evaluators, Feature Embedding
• Lecture #14  Friday, February 22nd  Recursion, The Y Combinator
• Lecture #15  Tuesday, February 26th  Typing the Y Combinator
• Lecture #16  Friday, February 29th  Lambda Calculus, Church Numerals and other Encoding
• Lecture #17  Monday, February 11th  Recursive Environments, Implementing Recursion using `letrec'
• Lecture #18  Tuesday, April 1st  Everything else



Handouts



Interpreters



Software

We will use the PLT Scheme environment extensively. DrScheme, the major component of PLT Scheme, 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 PLT download server. Binary installers exist for all major operating systems, and the course work will be platform independent.

PLT Scheme 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 PLT Scheme 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 two ports for communication, one for the submission protocol, and one for the embedded (secure) web server. You need to work from a network that does not restrict these ports — 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.



Mailing List

There is a mailing list for this course at http://groups.google.com/group/csu660/ (send mail to csu660@googlegroups.com). It is hosted on Google Groups, but you don't need a Google account to use it. The mailing list is the main medium for discussions, questions, announcements etc. You should try to use if you have questions, so others can benefit from the discussion as well. Do not to post any assignment code on the mailing list. It is also a good idea to consult the Mailing List Policies handout for mailing list posts.



On-line books and other materials

Many Scheme books etc are available on-line, a few good ones are:

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