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%