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.
| Class Participation | 10% |
| Homeworks (Best 7 0f 10) | 35% |
| Exams | 30% |
| Project | 25% |
| 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 |