CSU660 Resources |
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 |
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.
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.
Many Scheme books etc are available on-line, a few good ones are: