Course description |
Course documents |
Principles of Programming Languages (2007)
Vrije Universiteit, Dept. of Computer Science, Amsterdam
The course teaches the underlying principles and the anatomy of programming languages by studying 4 very different languages: ML, Java, Prolog and Python.
Prerequisites: a previous course in Data Structures. Programming proficiency in at least one high-level programming languages.
The course is taught in English.
- Instructor: dr. Natalia Silvis-Cividjian (nsilvisATfew.vu.nl)
- Credit points: 4 ECTS (FEW 400166)
- Duration: 13 weeks; starts September, 3, 2007
- Structure: 11 lectures and 2 presentation sessions
- Time and place: Fridays, 11:00-12:45, in C121
- Textbook: Modern Programming
Languages: A Practical Introduction, by Adam Brooks
Webber. Franklin, Beedle & Associates. (2003), available at STORM
- Assesment: A compulsory assignment and a written exam. As assignment the students have to evaluate a less familiar programming language. A written report and an in-class presentation are required.
A passed exam is only valid in combination with a passed assignment. The deadline for the written report is Dec 1, 2007. The presentation is scheduled for Friday 30 Nov 2007.
The exam is scheduled on 19th December 2007 8:45-11:30.
Sep 7: Introduction. History of programming languages
Readings: Weber Ch. 1, 24, Sebesta Ch.2 [opt]
Programming languages diagram [bmp] A nice coloured poster from O'Reilly can be found in bookshops (Computer Collectief Amsterdam for example)
The history of Programming Languages
Lecture 1 slides [pdf]
On Sep 21 no lecture
Sep 14: Syntax and semantics
Readings: Weber Ch. 2, 3
Lecture 2 slides [pdf]
Sep 28: Language systems. Functional programming: ML 1
Readings:Weber Ch. 4, 5
Lecture 3 slides [pdf]
Lecture 4 slides [pdf]
Oct 5: Types. Functional programming: ML 2
Readings:Weber Ch. 6,7
Lecture 5 slides [pdf]
Oct 12: Polymorphism. Functional programming: ML 3
Readings: Weber Ch. 8,9
Oct 19: Scope. Memory management
Readings: Weber Ch. 10, 12, 14
Lecture 6 slides: [pdf]
Nov. 2: Control abstraction. Parameters. Exceptions.
Reading: Weber Ch. 17,18
Lecture 7 slides : [pdf]
Nov. 9: Logic programming: Prolog
Reading: Weber Ch. 19,20
Lecture 8 slides : [pdf]
Some Prolog examples
More Prolog examples
Nov. 16: Object orientation. Scripting languages: Python 1
Readings: Weber Ch. 15,16. Scott Ch.13 [opt]
11:00-11:45 in C121
12:00-13:00 in S345 computer lab
Lecture 9 slides : [pdf]
Nov. 23: Scripting languages: Python 2. Exam guidelines.
Lecture 10 slides : [pdf]
Nov. 30: Student presentations
Dec. 7: Student presentations
Dec 14: Guest lectures. Haskell: Russell O'Connor, Radboud University Nijmegen, Python: Dick Kniep, Lindix BV, C#: Wouter Mooij, Basket Builders
The assignment text can be found here .
Here is the list with the languages currently assigned .
Please mail me your language choice. No more than 3 persons can work on one language. So the first-come-first-served algorithm is applied.
Some links and articles that might help:
- VU machine access
Some compilers are already installed on the FEW Linux machines. More .
If in order to accomplish your assignment you need to install other compilers please mail me.
- For ML, Java and Prolog resources see Adam Weber's book website:
- For Python resources see the Python homepage .
- To run the examples in C++, please read the C/C++ practical guide
- Other languages implementations:
Suplemmentary references (available in the FEW library):
- H. Bal, D. Grune, Programming languages essentials, Addison-Wesley, 1994
- R. Sebesta, Concepts of Programming languages, Pearson Education/Addison Wesley, 2005
- M. Scott, Programming Language pragmatics, Morgan Kaufmann, 2005
- R.G. Clarck, Comparative programming languages, Addison-Wesley, 2001
Different programming languages
- J.D. Ullman, Elements of ML programming, Prentice Hall, 1994
- S. Thompson, Haskell, The craft of functional programming, Addison Wesley (Pearson Education), 1999
- R.K. Dybvig, The Scheme programming language, MIT Press, 2003 (available on-line)
- M. Lutz and D. Ascher, Learning Python, O'Reilly, 2004
- M. Pilgrim, Dive into Python, (free book download)
- D. Thomas, Programming Ruby, The Pragmatic Bookshelf, 2005
- The Plankalkul of Konrad Zuse: A Forerunner of Today's Programming Languages
- An empirical comparison of C, C++, Java, Perl, Phyton, Rexx and Tcl
- Strong vs. Weak typing, an interview with Guido van Rossum
- A conversation with Guido van Rossum about Python
- James Gosling on Java, an interview with James Gosling
- On Understanding Types, Data abstraction, and Polymorphism by L. Cardelli and P. Wagner
- Scripting : Higher Level Programming for the 21st Century, by J.K. Ousterhout
- Growing a language, by Guy Steele
- Performance of Java versus C++
The language design trade-offs list
After each lecture we will update the list of trade-offs in language design and implementation.