CS 331, Programming Languages

 Autumn, 2009 - 2010


Purandar Bhaduri, ext: 2360, email: pbhaduri.

Teaching Assistants

1.      Pavan Agarwal (email: a.pavan)

2.      Manish Goyal (email: g. manish)

3.      Ashish Mehta (email: a.mehta)

Lab Sections: CS_331_TA.xls


Assignments    15%

Midsem            35%

Endsem            50%


     Ravi Sethi, Programming Languages: Concepts and Constructs, Pearson Education, 2nd Edition, 1996.

Useful additional material

1.      Semantics of Programming Languages. Lecture Notes by Nick Benton.

2.      Formal Semantics of Programming Languages, Lecture Slides by Zhendong Su.

3.      Programming in Standard ML, online book by Robert Harper.

4.      On understanding types, data abstraction, and polymorphism, Luca Cardelli and Peter Wegner, Computing Surveys, Vol. 17, No. 4, December 1985.

Reference Books

1.      Glynn Winskel, The Formal Semantics of Programming Languages: An Introduction, MIT Pres, 1993.

Midsem Exam Solution

Lab Exercises

1.      Week of 17 August 2009

Download and install ESC/Java from KindSoftware. The tool is available in three forms. I recommend the Eclipse plugin. Go through the documentation and run ESC/Java on small examples.

2.      Lab Exercise 1: Due 7 September 2009, Monday

Write a Java program for bubblesort and use ESC/Java to analyse the partial correctness of your programs. Submit your work and give a demo to the TA assigned to you.

3.      Lab Exercise 2: Due 19 October 2009, Monday

Download and install SML/NJ. Implement the Ford-Fulkerson algorithm for finding the maximum flow in a network in ML. You can find the description if the algorithm on page 658 of CLRS (Cormen, Leiserson, Rivest and Stein: Introduction to Algorithms, Prentice Hall of India, 2007). Submit source code and sample runs to the appropriate TA.

4.      Lab Exercise 3: Due 9 November, Monday

Download and install SWI-Prolog if it is not already there on your machine. You will have to implement the CYK algorithm for context-free grammars in CNF in Prolog in this exercise (see Hopcroft, Motwani and Ullman, pages 312 - 315). Submit source code and sample runs to the appropriate TA.

 back to homepage