CS 6390 / CS 4392
Programming Language Design

Course Information

Name: Programming Language Design
Numbers: CS 6390; CS 4392
Meeting Times: Tuesday and Thursday, 3:05 pm - 4:25 pm
Location: ES&T L1105
Catalog Description

Contact Information

Professor: Spencer Rugaber; Teaching Philosophy
E-mail:
Office: Klaus 2336
Phone: 404.894.8450
Office Hours: Tu&Th 1:30-3:00

TA: Ogechi Nnadi
E-mail:
Office: SPARC Lab, Klaus 2337
Phone: 404.539.2365
Office Hours: Monday and Wednesday, 3:00 - 4:00pm

Resources

Class news group: git.cc.class.cs6390
Class Swiki:  http://swiki.cc.gatech.edu/cs6390-fa07

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 Texts

Papers

Project

One of the course requirements is for you to participate in a project. The project takes the form of a group language design project. The requirements for the group project are given in the Project Description. 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/21 Introduction  
 
8/23 Algol 60 (PDF) Naur (Sections 1; 4.1; 4.7; 
Examples of Procedure Declarations; 
Suggestions on the Algol 60 (Rome) Issues)
Project
8/28 Syntax and Parsing (PDF)   BNF (solution)
8/30
Algol68 (PDF) Branquart Project Proposals due
9/4 Attribute Grammars (PDF)
Paakki (Intro., Section 1) BNF due 
Attribute Grammars (solution)
9/6 Data Structures (PDF)
Metaprogramming (PDF)
   
9/11 Ada (PDF)   Ada (solution)
Attribute Grammars due
9/13 Packages (PDF)
Ada
 
9/18 Ada QSort (PDF)
Ada Examples (PDF)
 
9/20 Axiomatic Semantics (PDF) Slonneger and Kurtz, Chapter 11 
(skip exercises and 11.5-6)
Ada due
Axiomatic Semantics
(solution)
9/25 Lisp (PDF) McCarthy Lisp (solution)
9/27 Lisp

Axiomatic Semantics due
10/2 Mid-term Exam    
10/4 FP (PDF) Backus  (Sections 1-11, 15, 16; skim 12-14)  
10/9 Mid-term break - no class   Lisp due
10/11 Lambda Calculus
(PDF)
  Lambda calculus (solution)
10/16 Lambda Calculus
   
10/18 Haskell (PDF)
  Haskell (solution)
Lambda Calculus due 
10/23 SML (PDF)    
10/25 SML    
10/30 Denotational Semantics 
(PDF)
Tennent Denotational Semantics (solution);
Haskell due
11/1 Denotational Semantics    
11/6 Prolog (PDF)
  Prolog (solution)
Denotational Semantics due
11/8 Prolog
Datalog (PDF)
   
11/13 Object Orientation  (PDF) Wegner OO (solution); Prolog due
11/15 Type Systems (PDF) Cardelli and Wegner
 
11/20 C/ANSI C/C++/Java Evolution
(PDF);

HW Bonus opportunity
11/22 Thanksgiving - no class  
11/27 C++ (PDF)
Ada-95 (PDF)
Smalltalk (PDF)

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

Garcia et al.
 
12/4 Concurrent Languages:
CSP/Linda  (PDF)
Ada Tasking (PDF)
Carriero; Hoare; Andrews&Schneider Project Report
12/6 Project Presentations    

Resources

Ada

Lisp

Prolog

Functional Languages

Object-Oriented Languages

Miscellaneous