Programming Languages

Aarne Ranta
Spring Term 2007

Course codes: Chalmers TIN321, GU INN130

Course web page 2006

Changes

30/3 Exam feed-back meeting ("tentagranskning"): 17 April at 10.00-11.00 in room 6103a (EDIT house, floor 6), just outside teachers' corridor.

10/3 Training exam solutions

9/3 Final deadline for all labs: Friday 16/3 at 12.00. This is the last time to submit a correct lab and get it accepted. Returns after this are not possible.

5/3 The lab 3 test suite is now available.

4/3 Updated lab 2 test suite to fix non-ASCII path name issue and the issue where the test suite would hang for some students.

27/2 Training Exam, to be explained in the last lecture 9/3.

25/2 Exam time changed: 8.30-12.30 on 12/3 in V.

25/2 Lab 3 now available.

23/2 Example type checker and interpreter in both Haskell and Java. These can be extended to full Lab2 and Lab3 code.

19/2 Lab 2 test suite now available. Some corrections in the Java code in lecture 8.

12/2 Lab 2 now available.

8/2 New laboration times (in addition to the old ones): Mon 10-12 and Fri 13-15. The times start already on 9 February.

2/2 Fire and test suite for Laboration 1.

25/1 One of Wednesday's exercise classes changed to Thursday 10-12.

25/1 Lab 1 now available.

24/1 There is now a course FAQ: Frequently Asked Questions.

10/1 Times for lectures, exercises, and laborations.

18/12 Some changes in schedule. From 2 to 3 labs.

14/12/2006 First version of this page. Changes expectable.

Schedule

Date Time Place Event material
Tue 23/1 13-15 HB1 Introduction lecture 1
-- - - no exercise 24/1 -
Fri 26/1 10-12 HB2 Abstract and concrete syntax lecture 2
Tue 30/1 13-15 HB1 The BNF converter (by Björn Bringert) lecture 3
Wed 31/1 15-17 ES51-2 Exercise (also 1/2 10-12 in ES61) exercises 1 solutions
Fri 2/2 10-12 HB2 Regular expressions and finite automata lecture 4
Tue 6/2 13-15 HB1 Parsing algorithms lecture 5
Wed 7/2 15-17 ES51-2 Exercise (also 8/2 10-12 in ES61) exercises 2 solutions
Fri 9/2 10-12 HB2 Syntax-directed translation lecture 6
Mon 12/2 23 - LAB 1 deadline PM test suite
Tue 13/2 13-15 HB1 Type systems lecture 7
-- - - no exercise 14/2 (CHARM day) -
Fri 16/2 10-12 HB2 Type checkers lecture 8
Tue 20/2 13-15 HB1 Operational semantics (by Kuchi Prasad) lecture 9
Wed 21/2 15-17 ES51-2 Exercise (also 22/2 10-12 in ES61) exercises 3 solutions
Fri 23/2 10-12 HB2 Interpreters lecture 10
Mon 26/2 23 - LAB 2 deadline PM test suite
Tue 27/2 13-15 HB1 Code generation lecture 11
Wed 28/2 15-17 ES51-2 Exercise (also 1/3 10-12 in ES61) exercises 4 solutions
Fri 2/3 10-12 HB2 Functional vs. imperative languages lecture 12
Tue 6/3 13-15 HB1 Programming language design and development lecture 13
Wed 7/3 15-17 ES51-2 Exercise (also 8/3 10-12 in ES61) exercises 5 solutions
Fri 9/3 10-12 HB2 Advice for exam and further studies on programming languages Training Exam
Mon 12/3 8.30-12.30 V Exam (starts 8.30) Training Exam
Mon 12/3 23 - LAB 3 deadline PM
Fri 16/3 12 - all labs final deadline -

Description

The aim of the course is to give understanding of how programming languages are designed, documented, and implemented. The course covers the basic techniques and tools needed to write interpreters, and gives a summary introduction to compilation as well. Those who have passed the course should be able to

  1. define the lexical structure of programming languages by using regular expressions, explain the functioning of finite automata, and implement lexical analysers by using standard tools;
  2. define the syntax of programming languages by using context-free grammars, explain the principles of LL and LR parsing, and implement parsers by using standard tools;
  3. define and implement abstract syntax;
  4. master the technique of syntax-directed translation and its efficient implementation in their chosen programming language;
  5. formulate typing rules and implement type checkers;
  6. formulate operational semantic rules and implement interpreters;
  7. write simple code generators;
  8. be familiar with the basic implementation issues of both imperative and functional languages;
  9. design and implement special-purpose programming languages.

Teachers

Aarne Ranta, course responsible.

Björn Bringert

Håkan Burden

Kristoffer Hedberg

Daniel Hedin

Kuchi Prasad

Laboration times and supervision

All laborations are in 6225a,b. The labs are booked and supervision is available from the second week of the course (29/1). The times are

Literature

Aho, Lam, Sethi & Ullman: Compilers Principles, Techniques & Tools Second edition, Pearson/Addison Wesley 2007

Make sure to get the second edition! The book is already available at web bookshops and will be sold at Cremona.

Laborations

There will be three laborations, written individually or (preferably) in pairs.

The lab PM will be published before the course starts.

Reporting will be done via Fire. Before reporting, you must run your program through a test suite.

Exercises

There are two classes on Wednesdays - one in Swedish and one in English - and one class on Thursdays, in Swedish. The schedule is as follows:

Exercises give bonus points for the exam: 0.4 points per exercise, the sum rounded to the nearest integer. To claim bonus points, mark the ones you have done in a list in the beginning of the class. Marking an exercise means that you are prepared to present its solution on the blackboard.

Exercises are divided to three parallel classes, one in English and two in Swedish. To make sure that all your bonus points are counted, you should always go to the same teacher's class.

Exam

Written exam, usual grading scales. Extra points will be given for exercises.

Date: Mon 12/3 at 8.30-12.30 in V.

Software

BNF Converter