Programming Languages – Course Handbook
1 General Course Information
Course Name CS 306 Programming Languages
Sujit Kumar Chakrabarti
Instructor
[email protected] Office: 205-A
TA
Course Credits 4
Pre-requisite
2 Course Overview
This course aims to teach the following three main things:
1. Classification of programming languages. This section gives a broad
overview of the PL landscape and develops the vocabulary to do critical
comparison between programming languages based on the ‘fundamental’
features.
2. Programming paradigms. We start with a short review and extension
of object-oriented programming. We learn two declarative programming
paradigms: functional programming using OCaml and logic programming
using Prolog.
3. Design and implementation of programming languages. We intro-
duce concepts useful for the specification, design and implementation of
programming languages. We discuss syntax and semantics. We will imple-
ment language processors (interpreters and type checkers) of several pro-
gramming languages starting with very basic features (e.g. expressions)
and approaching fairly sophisticated ones (e.g. higher order functions,
type inferencing etc.).
3 Course Outcome
At the end of this course, the student is expected to:
1
1. Know
(a) the important classification of programming languages in terms of
their typing, scoping, paradigms etc.
(b) Object oriented programming concepts like subtyping, polymorphism,
dynamic binding etc.
(c) Functional programming using OCaml programming language: Re-
cursion, Higher order functions, closures
(d) Syntactic description of languages using regular expressions and con-
text free grammars
(e) Methods of specification and implementation of programming lan-
guages
2. Be able to
(a) Write non-trivial programs in OCaml using functional approach
(b) Write language processors comprising of:
i. Syntax analysers (scanners and parsers) for given syntax speci-
fication
ii. Semantic analysers (type checkers) for given type systems
iii. interpreters/analysers for small programming languages to im-
plement PL semantics
4 Interaction Schedule
5 Grading
Mid-term 30
End-term 25
Project 25
Homework/classwork 10
Attendance/class participation 10
6 Reference Material
1. Essentials of Programming Languages – Friedman and Wand
2. Programming Languages– Ravi Sethi
3. Types in Programming Languages – Benjamin Pierce
4. Online resources on functional programming in Ocaml
5. Learn Prolog Now
6. Relevant literature
2
7 Cheating and Plagiarism
This course has zero tolerance for cheating and plagiarism. Any violation may
result in an F grade and further disciplinary action may be initiated as per the
Institute’s policies. Ignorance of what constitutes cheating and plagiarism is
not an excuse! If you have any doubts, contact your instructor.