An introduction to a wide range of topics relating to programming languages with an emphasis on abstraction and design. Design issues relevant to the implementation of programming languages are discussed, including a review and in-depth treatment of mechanisms for sequence control, the run-time structure of programming languages and programming in the large. The course has a strong lab component where students get to construct large programs in at least three different imperative programming languages.
The Scheme Programming Language, R. Kent Dybvig. Third Edition, 2003. MIT Press. | |
Essentials of Programming Languages, Daniel P. Friedman and Mitch Wand. Third Edition, 2008. MIT Press. | |
The Little Schemer, Daniel P. Friedman and Matthias Felleisen. Fourth Edition, 1995. MIT Press. |
We will use two versions of Scheme: Petite Scheme, a freely available version of Chez Scheme; Calico Scheme, also freely available. These are all available on the Computer Science Linux machines and available for download. You will get a CS account if you don't have one already.
emacs
To work on Petite Scheme code in emacs:(add-to-list 'load-path "~/.emacs.d") (autoload 'scheme-mode "iuscheme" "Major mode for Scheme." t) (autoload 'run-scheme "iuscheme" "Switch to interactive Scheme buffer." t) (setq auto-mode-alist (cons '("\\.ss" . scheme-mode) auto-mode-alist)) (custom-set-variables '(scheme-program-name "petite"))
Week | Dates (Tue, Thu) | Topics | Readings | Assignment |
---|---|---|---|---|
1 | 09/04/2012, 09/06/2012 |
|
For next week:
|
Assignment #1: Review of Python, Introduction to Calico, Using Python and Scheme (due Tuesday 09/11/2012) |
2 | 09/11/2012, 09/13/2012 |
|
For next week:
|
Assignment #2: Learning Scheme (due Tuesday 09/18/2012) |
3 | 09/18/2012, 09/20/2012 | Simple Programming Languages | For next week: Read about the history of your language and relatives; Calico language development | Assignment #3: Create/Refine a Language (due Tuesday 09/25/2012) |
4 | 09/25/2012, 09/27/2012 | Present your Language; Scheme and Interpreters | For next week: Read EOPL, chapter 1 | Assignment #4: EOPL Chapter 1(due Tuesday 10/02/2012) |
5 | 10/02/2012, 10/04/2012 | Slides: Interpretering a Language | For next week: Study for midterm | Assignment #5: EOPL Chapter 2: parse, unparse, and occurs-free? (due Tuesday 10/09/2012). Video: Calico Scheme Debugging Hints |
6 | 10/09/2012, 10/11/2012 | Tuesday Review. Thursday: Midterm | For next meeting (two weeks): Read Project Proposal ideas | Assignment #6: Project Proposals ideas |
7 | 10/16/2012, 10/18/2012 | Fall Break! | Eat, rest, relax. | |
8 | 10/23/2012, 10/25/2012 | Calculator Language: Expressions, Parsing, Evaluator, Functions, and Variables | For next week: Read EOPL Chapter 3.3 | Assignment #7: Calculator Language (due Tuesday 10/30/2012) |
9 | 10/30/2012, 11/01/2012 | Parsing and Evaluating, Calculator Language, Part 2 | For next week: Read EOPL Chapter 3.4 - 3.7 | Assignment #8: Calculator Language, Part 2(due Tuesday 11/13/2012) |
10 | 11/06/2012, 11/08/2012 | Lexical Scope, and Recursion, and Continuations | For next week: Read EOPL 5.1, and 6.1 | |
11 | 11/13/2012, 11/15/2012 | Continuations, continued. Discussions | Discuss EOPL 5.1 and 6.1 | Assignment #9: Continuations |
12 | 11/20/2012, No Class on Thursday | Thanksgiving Break! | Read The Role of the Study of Programming Languages in the Education of a Programmer, by Dan Friedman | |
13 | 11/27/2012, 11/29/2012 | Scope and Functional Programming | Pair Programming Challenge | Work on Project |
14 | 12/04/2012, 12/06/2012 | Scheme Streams, and Review | Work on Project | |
15 | 12/11/2012, 12/13/2012 | Presentations |
|
Work on Project |
Other dates of interest:
Final grades will be calculated as a weighted average of all grades according to the following weights:
Midterm Exam: 25%