CS245: Principles of Programming Languages, Bryn Mawr College

Douglas Blank
Fall 2008

Overview

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.

General Information

Instructor: Douglas Blank, 248 Park Science Building, 526-6501
Email: dblank (at) cs (dot) brynmawr (dot) edu
Web: cs.brynmawr.edu/~dblank
Office hours: TBA
Lectures: Tues and Thursdays
Lab: Park Science Building, room 231
Lab Assistants: TBA

Texts

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.

Software

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:
  1. mkdir .emacs.d
  2. cd .emacs.d
  3. emacs init.el
  4. Add the lines to init.el:
    (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"))
    
  5. Save the file iuscheme.el to the .emacs.d directory.
  6. Now you will have the commands "M-x run-scheme" and .ss files will envoke scheme mode.

Schedule

WeekDatesTopicAssignment
1 09/02/2008, 09/04/2008Why Programming Languages?Scheme Syntax
2 09/09/2008, 09/11/2008Introduction to SchemeTSPL Chapters 1, 2. Assignment #1, Scheme Semantics
3 09/16/2008, 09/18/2008More Scheme: Recursion, Continuations, and ProceduresTSPL Chapters 3, 4. Assignment #2
4 09/23/2008, 09/25/2008Inductive Sets of DataEOPL Chapter 1
5 09/30/2008, 10/02/2008Data AbstractionEOPL Chapter 2
6 10/07/2008, 10/09/2008Review and PracticeReview and Exam 1.
Friday, September 19 Final day to drop HC or BMC class without penalty.
7 10/14/2008, 10/16/2008Fall BreakNo classes
8 10/21/2008, 10/23/2008Expressions; our first language, LET; EXPLICIT-REFS; a second languagepetite-init.ss and define-datatype.ss lang0.ss Assignment #3
9 10/28/2008, 10/30/2008Scanner/Parsers and constructing Creating your own languageEOPL Chapter 3 Assignment #4. sllgen.ss, and test-parser.ss
10 11/04/2008, 11/06/2008Adding let and proc to your languageAdding Procedures to your Language
11 11/11/2008, 11/13/2008Continuation-Passing Style, Data Structures, and Register Machines. Discuss Project ideas.Lecture on CPS, Pyjama Scheme
12 11/18/2008, 11/20/2008Doug in Korea: no classes this weekExplore Pyjama Scheme and develop project plan.
13 11/25/2008, 11/27/2008Projects and Thanksgiving!Tuesday: Project discussion, Thursday: Thanksgiving
14 12/02/2008, 12/04/2008ProjectsTuesday and Thursday: Work on Project
15 12/09/2008, 12/11/2008ProjectsTuesday: 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/2008Projects Presentations, noon to 1:30pmPresentations and Pizza!

Other dates of interest:

Grading

Final grades will be calculated as a weighted average of all grades according to the following weights:

Midterm Exam: 25%
Final Exam: 25%
Labs: 25%
Project: 25%

dblank (at) cs (dot) brynmawr (dot) edu