CS2430: Principles of Programming Languages - II and CS2431: Principles of Programming Languages Laboratory - II
January 2016 - March 2016
Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in
Office:
TAs (IITH email-IDs: <ID> AT iith DOT ac DOT in) : Ajay Brahmakshatriya (CS12B1004), Bhatu Pratik (CS12B1010), Keyur Joshi (cs13b1014)...
Discussion Google-group: popl2-jan16 AT iith DOT ac DOT in
Join Group (only with IITH email-IDs)
Classes: Mon: 11:00am-12:00noon, Wed: 10:00pm-11:00am, Thu: 9:00am-10:00am; Room: CL#317
Credits: CS2430:CS2431 2:2
Prerequisites: CS2430 and CS2431: CS2400 and CS2401; Also, a concurrent registration to both CS2430 and CS2431 is compulsory.
Course Description (CS2430)
The objective of CS2430 course is to learn basic principles of programming languages: their concepts, constructs, syntax, semantics and pragmatics. The
course will focus on the alternate classic programming language paradigms of Functional, Logic and Scripting paragigms.
More precisely, the focus would be the Functional paradigm using Scheme/Racket and ML/Haskell as languages followed by quickly covering the Logic
paradigm using Prolog. Finally, the focus would shift to Scripting paradigm using Python and Javascript as languages.
Course Description (CS2431)
A large part of CS2431 lab would be in understanding the syntax or semantics of a variety of languages which fall under various paradigms
like Functional (Lisp/Scheme/Racket, ML/Haskell) and Scripting (Python, Javascript).
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.
CS2431 is the B.Tech lab accompanying the corresponding B.Tech course CS2430. For registrants of CS2430, a registration to CS2431 is
compulsory. A major means of evaluation of CS2431 would be the above programming assignments.
Lecture Schedule
30th-Dec-2015 |
Organization & Logistics,
An Overview of Programming Languages
Acknowledgements
|
TBD |
|
References:
- [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
Language References:
- [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)
- [ML]
- [Python] A Short Introduction to Python by Prof. V. Vinay
- [Python] Python Tutorial and Reference from link
- [Javascript] JavaScript: The Good Parts by Douglas Crockford, 2008 link Crockford's website
- .....
Some Class Links:
Some Miscellaneous/Fun Links:
Grading (CS2430)
Activity | Weight |
Class Participation and Attendance | 10% |
Quizzes (in class) | 15% |
Written Homeworks | 15% |
End Term Exam (Comprehensive including POPL1 syllabus) | 60% |
Grading (CS2431)
Activity | Weight |
Programming Assignments | 45% |
Programming Exam | 55% |
Important: Plagiarism Policy of IITH-CSE Department.