Principles of Programming languages
The course will loosely follow the text book “Concepts Techniques and Models of Computer Programming” by Peter Van Roy and Seif Haridi. The primary platform used in this book is the Oz language. One of the advantage of oz is that it provides features for all the different styles of programming. However, this is also its weakness. Therefore we will also look at candidate language for each of the paradigm to better appreciate the power/weakness of each of these paradigm.
Assignment submission
- Assignment submission procedure
- Assignment 1 - Due on the midnight of 30 Sep 2013 (Monday).
- Assignment 2 - Due on the midnight of 4th Nov 2014
Note:
The Oz package for 64-bit is buggy. If you have trouble installing it for use you may try the following image file of about 2.3 GB (internal link) created by Satvik with virtual box. The root
user password is toor
and that of the user debian
is reverse
. I have not tested it though.
Course TA
- Satvik C (email id
satvikc
) - Smriti J (email id
smritij
)
Programming Environment
swi-prolog for Prolog
Online reading material
Github repository of some sample code that I showed in the class
Implementation of Functional Programming Language Topics covered in the class include:
- How pattern matching is compiled efficiently.
A complete unification algorithm is given in my functional programming lecture notes. This unification algorithm is tailored for type inference but you can have a look.
Some difficult (long term) exercises that you can try out.
- Implement the general unification algorithm described in the class. Use any of your favorite programming language although doing it in C or Java might not be such a good idea.
Beware: many algorithms described in literature have subtle bugs.
- Code up the resolution algorithm used by Prolog (SLD Resolution). Implement a simple prolog interpreter based on it.