Sprog og Oversættere (SPO) – Spring 2008

(Programming Languages and Compilers)

 

Welcome to the home page of the SPO course given to DAT2, SW4 and F6S students at the Department of Computer Science, Aalborg University, Denmark.

 

Purpose:

The purpose of the course is for the student to gain knowledge of important principles in programming languages and for the student to gain an understanding of techniques for describing and compiling programming languages.

Course Schedule:

 

Follow the links to further information about topics and exercises for each lecture.

 

 

Lecture date and time

Lecture Room

Exercise date and time

Lecture 1

7.2.2008, 12.30 -14.00 !!OBS

0.1.95

14.2.2008, 12.30 -14.15

Lecture 2

14.2.2008, 14.30 -16.15

0.1.95

21.2.2008, 12.30 -14.15

Lecture 3

21.2.2008, 14.30 -16.15

0.1.95

25.2.2008, 8.15-10.00

Lecture 4

25.2.2008, 10.15-12.00

0.1.95

28.2.2008, 12.30 - 14.15

Lecture 5

28.2.2008, 14.30 - 16.15

0.1.95

3.3.2008, 8.15-10.00

Lecture 6

3.3.2008, 10.15-12.00

0.1.95

6.3.2008, 12.30 - 14.15

Lecture 7

6.3.2008, 14.30 - 16.15

0.1.95

27.3.2008, 12.30 - 14.15

Lecture 8

27.3.2008, 14.30 - 16.15

0.1.95

3.4.2008, 12.30 - 14.15

Lecture 9

3.4.2008, 14.30 - 16.15

0.1.95

7.4.2008, 8.15-10.00

Lecture 10

7.4.2008, 10.15-12.00

0.1.95

10.4.2008, 12.30 - 14.15

Lecture 11

10.4.2008, 14.30 - 16.15

0.1.95

14.4.2008, 8.15-10.00

Lecture 12

14.4.2008, 10.15-12.00

0.1.95

17.4.2008, 12.30 - 14.15

Lecture 13

17.4.2008, 14.30 - 16.15

0.1.95

21.4.2008, 8.15-10.00

Lecture 14

21.4.2008, 10.15-12.00

0.1.95

24.4.2008, 12.30 - 14.15

Lecture 15

24.4.2008, 14.30 - 16.15

0.1.95

28.4.2008, 10.15-12.00 !!OBS

 

Exam:

 

As everybody this year has chosen SPO as PE course, the course will be evaluated through your projects.

If you would like a guideline for exam syllabus to prepare yourself for the project exam, you can see the course syllabus from 2007 on this link.  

Instructors:

The course is given by Bent Thomsen

The teaching assistant is Kostas Tzoumas

Literature:

We will us the following two books:

 

Concepts of Programming Languages (Seventh Edition), Robert W. Sebesta, Prentice Hall, ISBN 0 321 312511

 

Programming Language Processors in Java – Compilers and Interpreters, David A Watt and Deryck F Brown, Prentice Hall, ISBN 0-13-025786-9

 

An errata for this book has been published on http://www.dcs.gla.ac.uk/~daw/books/PLPJ/errata.html

 

Why do we need two books for this course?

 

Well – you could use a lot more books, but these two books cover the two main topics of Design and Implementation of Programming Languages.

 

For further motivation why you would need more than one book for this course, follow the link to Amazon.com: So You'd Like to... Write or Create a Compiler

Additional Literature:

 

For those of you who would like additional reading I can recommend the following books:

 

Programming Languages – Design and Implementation (Fourth Edition), Terrence W. Pratt and Marvin V. Zelkowitz, Prentice Hall, ISBN 0-13-027678-2

 

Concepts in Programming Languages, John C. Mitchell, Cambridge University Press, ISBN 0 521 78098 5.

 

Compiling for the .NET Common Language Runtime (CLR), John Gough, Prentice Hall, ISBN 0 13 062296 6

 

Modern compiler implementation in Java (second edition), Andrew W. Appel, Cambridge University Press, ISBN 0-521-82060-X.

 

Be sure you get the second edition, as it is much improved over first and the preliminary editions!

However the first edition comes in three variants:

Modern compiler implementation in Java

Modern compiler implementation in C

Modern compiler implementation in ML

 

If you are using ML as your implementation language I will recommend that you read the ML variant of Appel’s book

The above books are often referred to as the Tiger books, although it is left unspecified which version of the book is the Tiger book.

 

If you are implementing ML, an extension to ML or an ML like language you should read the book:

 

Compiling with Continuations, Andrew W. Appel, Cambridge University Press, ISBN 0521416957

 

A classic compiler book, often referred to as the Dragon book, is:

 

Compilers: Principles, Techniques and Tools, Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman, Addison-Wesley, ISBN 0201100886

 

This book is now out in a new and improved version:

 

Compilers: Principles, Techniques, and Tools (2nd Edition) by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, Addison-Wesley, ISBN   0-321-21091-3

 

Some links to information about Java 

 

For those of you who just need a head to head comparison of Java and C# I can recommend looking at

C# and Java: Comparing Programming Languages

 

For those of you who would like to learn more about Java, I can highly recommend following the various trails of The Java Tutorial online material from SUN.

 

I can recommend two books for those of you interested in thorough descriptions of Java, respectively C#:

 

P. Sestoft, Java Precisely, Second Edition, The MIT Press August 2005. ISBN 0-262-69325-9.

For more information, see the link: Java Precisely - concise Java quick reference

 

P. Sestoft and Henrik I. Hansen, C# Precisely, The MIT Press 2004; second updated printing 2006. ISBN 0-262-69317-8.

For more information, see the link: C# Precisely - concise C# quick reference

 

Last updated 30.1.2008