This course is not about programming. However, you will become a
significantly better programmer for having completed it. The course
introduces the issues surrounding the design and implementation of
programming languages.
Mostly, we will use Scheme to implement interpreters for a variety of
languages (including various subsets of Scheme itself). Because you
will be writing interpreters that support the various features, you
will intimately understand issues such as scope, lazy and eager
evaluation, recursion, mutation, continuations, types, polymorphism,
and much more.
The course will require a significant commitment from you. Plan for it.
Start your readings and assignments early. You will be required to read
the text. If you work the examples as you go through the text, your
assignments will be manageable. You will typically be completing one
assignment each week.
Acknowledgments:
I may
be borrowing extensively from courses Shriram has taught at Brown
University. I encourage you to make a link to his pages and use
them as additional resources.