CS 331, Programming Languages
Autumn, 2009 - 2010
Purandar Bhaduri, ext: 2360, email: pbhaduri.
1. Pavan Agarwal (email: a.pavan)
2. Manish Goyal (email: g. manish)
3. Ashish Mehta (email: a.mehta)
Lab Sections: CS_331_TA.xls
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.
1. Glynn Winskel, The Formal Semantics of Programming Languages: An Introduction, MIT Pres, 1993.
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.