CS 350 Fall 2022

Table of Contents

Welcome to the CS350 course offering in Principles of Programming Languages, 2022-23 Semester I.

1. Syllabus

We will cover the following two languages in a fair amount of detail, with emphasis on programming in these languages, and their semantics.

  • Haskell (an example of a functional language)
  • Smalltalk (an example of an Object-oriented language)

We will also discuss the fundamentals of functional languages using the following

  • untyped lambda calculus, with special emphasis on combinators.
  • simply typed lambda calculus, with emphasis on type inference

In the past, we followed a text by van Roy and Haridi. Even though the text is good, the language Oz does not seem to be under active development. Some topics in this text will be adapted to the languages at hand. In particular, we will explain the Unification Algorithm using, perhaps a fictitious expression language to be described in class.

2. Notes

3. Code samples

3.1. Haskell

3.2. Ruby

4. Work

This course will be programming intensive.

We will have the following

  1. Programming homeworks [4x5 percent each]
  2. One Programming Project to implement a language [10 percent]
  3. Best 2 of 3 quizzes [2x10 percent]
  4. Midsem [20 percent]
  5. Endsem [30 percent]

5. Homeworks

  1. Homework 1, due September 4, 2022
  2. Homework 2, due October 25, 2022
  3. Project, due November 15, 2022. (in teams of 2 or 3)
  4. Homework 3, due November 15, 2022. Associated files:
    1. ./ruby_code/md.rb for the simple markdown parser
    2. Sample input to the modified markdown parser: ./ruby_code/sample.md
    3. ./ruby_code/game.zip

6. Textbooks

Course notes will be posted online.

Longer explanation

The course does not have a textbook per se, since the textbook we used to use, van Roy and Haridi, is based on a language that does not seem to be actively supported. However, we will try to follow material from the following books.

  1. Concepts, techniques and models of programming, van Roy and Haridi, MIT Press.
  2. The Structure and Interpretation of Computer Programs, Abelson and Sussman, MIT (available online at https://mitpress.mit.edu/sites/default/files/sicp/index.html )

7. Instructor

Satyadev Nandakumar satyadev@cse.iitk.ac.in

Created: 2022-11-10 Thu 08:56