![]() |
csc501 · fall 2005programming language semantics |
| Tue Dec 6, 7:10p | I've posted the extra credit assignment! |
| Fri Dec 2, 6:25p | Assignment #10 is out! |
| Wed Nov 30, 3:30p | Assignment #9 is out! |
| Fri Nov 11, 4:30p | Assignment #8 is out! |
| Mon Sep 19, 3:50p | I've put up a Scheme reference for csc501. |
| Fri Sep 16, 11:25a | See everyone's pictures! |
David Tucker · dbtucker@cs.uri.edu
I won't hold regular office hours, so to arrange a meeting time you can email me or come to my office (Tyler 138).
In this course, we will explore various features of programming languages by writing interpreters for small languages. The first part of the course will focus on features that add expressive power to a programming language, such as functions, recursion, and state. The second part will study type systems, which languages employ to catch certain program errors before execution. We will round out the course by examining Scheme macros as well as memory management.
Our weekly meetings will comprise several modes of learning, including lectures by the instructor, group exercises, programming work in a computer lab, and student presentations.
We meet Thursdays from 3:30pm to 6:15pm in Tyler 126.
| # | date | topics & presentations | plai chapters | assignment |
|---|---|---|---|---|
| 1 | Sep 8 | Scheme | HW #1 | |
| 2 | Sep 15 | Scheme | HW #2 | |
| 3 | Sep 22 | Substitution | 1, 2, 3 | HW #3 |
| 4 | Sep 29 |
First-order functions Adam: quasiquote
|
4 |
HW #4 Essay 1 |
| 5 | Oct 6 |
Environments & first-class functions
David: output
Mayur: list functions
|
5, 6 | |
| 6 | Oct 13 |
Closures
San: let forms
|
6 |
HW #5 |
| 7 | Oct 20 |
Recursion & State
Peter: conditionals
Kristopher: match
|
9, 10, 13 |
HW #6 HW #7 |
| 8 | Oct 27 | Types & type soundness | 25, 28 | |
| 9 | Nov 3 |
Typing control & data
Sherida: assignment & mutation
Andrew: named let
|
26, 27 |
HW #8 |
| 10 | Nov 10 | Explicit polymorphism | 29 | |
| 11 | Nov 17 |
Type inference
Lewis: exceptions
|
30, more 30 |
HW #9 |
| Nov 24 | no class · Thanksgiving | |||
| 12 | Dec 1 |
Implicit polymorphism; Macros
Angel: vectors
|
31, 34, AaM |
HW #10 |
| 13 | Dec 8 |
Memory management
Rajesh: fold
|
Wilson |
See also uri's detailed academic calendar.
Each student will deliver a 5-10 minute presentation on some feature of Scheme beyond the basics we covered in the first few weeks. The speaker will get practice teaching to a small class, and the audience will learn another feature of Scheme to add to their programming arsenals.
Each week we will have either one or two presentations, one at the beginning of class, and possibly one right after lab. The week before your presentation, consult with me for information on your topic and suggestions on how to teach it. After your presentation, provide a short write-up to add to the Scheme reference for csc501.
I will evaluate students based on performance in a variety of exercises:
In the past, some students have asked for the relative value of each component in determining the final grade. The following table is a very approximate breakdown, and is subject to change at my discretion:
| 50% | programming assignments |
| 20% | codewalks |
| 10% | essays |
| 10% | quizzes & student presentations |
| 10% | final exam |
The textbook is Programming Languages: Application and Interpretation, by Shriram Krishnamurthi. It's available for free online.
NOTICE: Don't download and print the book through the link above. The author is revising the book this semester, and I will post links to the updated sections as we cover them.
We will use DrScheme for all of the programming in this course. DrScheme is free; you can download versions for all major platforms, including Unix, Windows, and Mac.
Please upgrade to version 299.400 if you installed 299.200! The old version contains a bug that may corrupt your Scheme files.
To install DrScheme and our course package:
The following policies are in force for this class. Please see me if you are unclear on any of the policies.