CS 6390 / CS 4392
Programming Language Design

Course Information

Name: Programming Language Design
Numbers: CS 6390; CS 4392
Meeting Times: Mondays and Wednesdays, 4:00 pm - 5:30 pm
Location: Bunger-Henry 311
Catalog Description

Contact Information

Professor: Spencer Rugaber; Teaching Philosophy
E-mail:
Office: Klaus 2406
Phone:
404.894.8450
Office Hours:
Mondays: 2-3; Wednesdays: 3-4

Prerequisites

There are no formal prerequisites, but I expect students to have the programming languages background found in an undergraduate Georgia Tech degree. This includes practical knowledge of a procedural or object-oriented programming language, programming experience, and some familiarity with the language translation process. Here is a pretest by which you can judge your readiness for this course. I have also included the answers for you to check, here.

Objectives

Student Responsibilities

Readings

Optional Text

Papers

Project

One of the course requirements is for you to participate in a team-based language design project. This year, there are two kinds of projects. The traditional project allows you to design (but not implement!) the language of your choice. The requirements for the group project are given in the Project Description.

The second kind of project allows your team to participate in the actual design of new programming language called TMKL2. The purpose of TMKL2 is to support the automatic adaptation of software agents. A TMKL2 program is a model of the agent to be adapted. The particular agents that are being adapted play computer games such as FreeCiv. Upto three teams can participate on this project, one to work on the language itself, one to work on a Domain Specific Language (DSL), built on TMKL2, for modeling games like FreeCiv, and one to work on a model of FreeCiv written in the DSL. Participation in this kind of project requires a one-hour weekly meeting with the course instructor. If you are interested in working on this kind of project, please form a team of four and have one team member send an email to the instructor listing the team members.

Here are some issues which you may wish to consider when designing your concern lexical, syntactic, semantic, and run-time matters.

Grading


Class Participation 10%
Homeworks (Best 7 0f 10)  35%
Exams 30%
Project 25%

Schedule


Date Subjects Readings Assignments
8/17 Introduction  
 
8/19 Algol 60 (PDF) Naur (Sections 1; 4.1; 4.7) Project
8/24 Syntax and Parsing (PDF)   BNF (solution)
8/26
Algol68 (PDF) Branquart
8/31
Attribute Grammars (PDF) Paakki (Intro., Section 1) Project Proposals due
9/2 Data Structures (PDF)
Metaprogramming (PDF)

BNF due 
Attribute Grammars (solution)
9/7 Labor Day - No class  
9/9 Ada (PDF)
Packages (PDF)
  Ada (solution)
Attribute Grammars due
9/14 Ada QSort (PDF)
Ada Examples (PDF)
 
9/16 Axiomatic Semantics (PDF) Slonneger and Kurtz, Chapter 11 
(skip exercises and 11.5-6)
Ada due
Axiomatic Semantics
(solution)
9/21 Axiomatic Semantics
Lisp (solution)
9/23 Lisp (PDF) McCarthy
9/28
Lisp   Axiomatic Semantics due  
9/30
Mid-term Exam
 
10/5 Mid-term break - no class  
10/7 FP (PDF)
Lambda Calculus (PDF)
Backus  (Sections 1-11, 15, 16; skim 12-14)
Lisp due
Lambda calculus (solution)
10/12 Lambda Calculus
   
10/14 SML (PDF)   Lambda calculus interpreter:
Haskell version (Haskell solution)
SML version (SML solution)
Lambda Calculus due 
10/19 SML    
10/21 Haskell (PDF)
   
10/26 Denotational Semantics 
(PDF)
Tennent Denotational Semantics (solution);
Haskell due
10/28
Denotational Semantics    
11/2 Prolog (PDF)
  Prolog (solution)
Denotational Semantics due
11/4 Prolog
Datalog (PDF)
   
11/9 Object Orientation  (PDF) Wegner OO (solution); Prolog due
11/11 Type Systems (PDF) Cardelli and Wegner
 
11/16 C/ANSI C/C++/Java Evolution

HW Bonus opportunity
11/18 C++ (PDF)  
11/23 Ada-95 (PDF)
Smalltalk (PDF)
Eiffel (PDF)
C# (PDF)

OO due
(Java solution; Smalltalk solution; C++ solution)
11/25 Java (PDF)
Java 5 (PDF)
Generics (PDF)

Garcia et al.
 
11/30 Concurrent Languages:
CSP/Linda  (PDF)
Ada Tasking (PDF)
Carriero; Hoare; Andrews&Schneider Project Report
12/2 Project Presentations    HW bonus suggestions due

Resources

Ada

Lisp

Functional Languages

Logic Languages

Object-Oriented Languages

Syntax

Attribute Grammars

Books

Genetic Algorithms

Language Design

Miscellaneous