CS2400: Principles of Programming Languages - I
October 2017 - December 2017
Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in OR ramakrishna AT iitbhilai DOT ac DOT in
TAs (IITH email-IDs: <ID> AT iith DOT ac DOT in) : Agam Agarwal (CS12B1003), Ajay Brahmakshatriya (CS12B1004), Bhatu Pratik (CS12B1010), ...
Discussion Google-group: popl1-aug15 AT iith DOT ac DOT in
Join Group (only with IITH email-IDs)
Classes: Mon: 9:00am-10:30am, Wed: 1:30pm-3:00pm (Lunch Time); Room: 007 in Kandi Campus
Credits: CS2400:CS2401 1:1
Prerequisites: CS2400 and CS2401: 2nd year CS B.Techs who have completed IITH courses in C programming and data-structures; Also, a concurrent
registration to both CS2400 and CS2401 is compulsory.
Course Description (CS2400)
The objective of CS2400 course is to learn basic principles of programming languages: their concepts, constructs, syntax, semantics and pragmatics. The
course will focus on the classic programming language paradigms of Imperative and Object Oriented.
This course will focus on understanding some aspects of Imperative and Object Oriented paradigms using C/C++, Java and Python as
Course Description (CS2401)
A large part of CS2401 lab would be in understanding the syntax or semantics of a variety of languages which fall under various paradigms
like Imperative (C/C++), Object Oriented (C++, Java, Python).
It would be a hands on approach involving writing programs in new programming languages. There would also be projects that involve writing
mini-translators for some of the above languages.
CS2401 is the B.Tech lab accompanying the corresponding B.Tech course CS2400. For registrants of CS2400, a registration to CS2401 is
compulsory. A major means of evaluation of CS2401 would be the above programming assignments.
||Organization & Logistics,
An Overview of Programming Languages
- [Text Book] [PLP] Programming Language Pragmatics by Michael L. Scott, 3rd Edition, 2009 link
- [Text Book] Programming Languages: Concepts and Constructs by Ravi Sethi, 2nd Edition, 1996
- [Text/Ref. Book] Concepts in Programming Languages by John C. Mitchell, 2003 link
- [Ref. Book] How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
htdp book link
- [Coursera] Coursera course on Compilers by Prof. Dan Grossman at University of Washington, 2012-2014 Coursera Programming Languages
- [C] The C Programming Language by Brian W. Kernighan, Dennis M. Ritchie, 2nd Edition (1989)
- [C++] The C++ Programming Language, Bjarne Stroustrup, 3rd or 4th editions (1997/2013)
- [C++] A Tour of C++, Bjarne Stroustrup, (2013) link
- [Java] The Java Programming Language by Ken Arnold, James Gosling, David Holmes, 4th Edition, 2005
- [Scheme] The Scheme Programming Language, R. Kent Dybvig, 4th edition. link
- [Scheme/Racket] Racket
- [Lambda Calculus] An Introduction to Functional Programming Through Lambda Calculus, Greg Michaelson link (PS file)
- [Python] A Short Introduction to Python by Prof. V. Vinay
- [Python] Python Tutorial and Reference from link
Some Class Links:
Some Miscellaneous/Fun Links:
| Activity || Weight |
|Class Participation and Attendance ||10%
|Written Homeworks ||20%
|End Term Exam ||70%
| Activity || Weight |
|Programming Assignments ||30%
|Programming Exam ||70%
Important: Plagiarism Policy of IITH-CSE Department.