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. |
We will use the program Petite Scheme, a freely available version of Chez Scheme. We will also use a new version of Scheme, called Pyjama Scheme, and C#. These are all available on the Computer Science Linux machines. You will get an account if you don't have one already.
emacs
To work on 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 | Topic | Assignment |
1 | 09/02/2008, 09/04/2008 | Why Programming Languages? | Scheme Syntax |
2 | 09/09/2008, 09/11/2008 | Introduction to Scheme | TSPL Chapters 1, 2. Assignment #1, Scheme Semantics |
3 | 09/16/2008, 09/18/2008 | More Scheme: Recursion, Continuations, and Procedures | TSPL Chapters 3, 4. Assignment #2 |
4 | 09/23/2008, 09/25/2008 | Inductive Sets of Data | EOPL Chapter 1 |
5 | 09/30/2008, 10/02/2008 | Data Abstraction | EOPL Chapter 2 |
6 | 10/07/2008, 10/09/2008 | Review and Practice | Review and Exam 1. |
Friday, September 19 Final day to drop HC or BMC class without penalty. | |||
7 | 10/14/2008, 10/16/2008 | Fall Break | No classes |
8 | 10/21/2008, 10/23/2008 | Expressions; our first language, LET; EXPLICIT-REFS; a second language | petite-init.ss and define-datatype.ss lang0.ss Assignment #3 |
9 | 10/28/2008, 10/30/2008 | Scanner/Parsers and constructing Creating your own language | EOPL Chapter 3 Assignment #4. sllgen.ss, and test-parser.ss |
10 | 11/04/2008, 11/06/2008 | Adding let and proc to your language | Adding Procedures to your Language |
11 | 11/11/2008, 11/13/2008 | Continuation-Passing Style, Data Structures, and Register Machines. Discuss Project ideas. | Lecture on CPS, Pyjama Scheme |
12 | 11/18/2008, 11/20/2008 | Doug in Korea: no classes this week | Explore Pyjama Scheme and develop project plan. |
13 | 11/25/2008, 11/27/2008 | Projects and Thanksgiving! | Tuesday: Project discussion, Thursday: Thanksgiving |
14 | 12/02/2008, 12/04/2008 | Projects | Tuesday and Thursday: Work on Project |
15 | 12/09/2008, 12/11/2008 | Projects | Tuesday: Work on Project, Thursday: Doug in D.C. Thursday: last day of classes--All written work due 5:00 pm (including papers and lab notes). Exam 2. |
16 | 12/15/2008 | Projects Presentations, noon to 1:30pm | Presentations and Pizza! |
Other dates of interest:
Final grades will be calculated as a weighted average of all grades according to the following weights:
Midterm Exam: 25%