CS2040: Principles of Programming Languages and CS2041: Principles of Programming Languages Laboratory
January 2015 - May 2015
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) : Natti Bhuvana Sai (cs13m1006), Kiran Bhos (cs13m1011), Chavan
Yogesh Laxman (cs13m1012), Utpal Bora (cs14mtech11017), Aditya Kamath (cs11b001), Bhargav Reddy G (cs11b012), Agam Agarwal (CS12B1003), Ajay Brahmakshatriya (CS12B1004), Bhatu Pratik (CS12B1010)
Discussion Google-group: iith-popl-jan15 AT googlegroups DOT com
Join Group (only with IITH email-IDs)
Classes: Mon: 8:30am-10:00am, Thu: 10:00am-11:30am (A slot); Room: CL#123
Labs (CS2041) : Wed: 8:30am-11:30am (L40, L15); (Code: L40=Lab on 1st floor next to library, L15=Lab next to server room.)
Credits: CS2040:CS2041 3:2
Prerequisites: CS2040 and CS2041: 2nd year CS B.Techs who have completed IITH courses in C programming and data-structures; Also, a concurrent registration to both CS2040 and CS2041 is compulsory.
Course Description (CS2040)
The objective of CS2040 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, Object Oriented, Functional, Logic and Scripting.
The initial part of this course will focus on understanding some aspects of Imperative and Object Oriented paradigms using C/C++ and Java as
languages. The next focus would be the Functional paradigm using Scheme/Racket and ML 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 (CS2041)
A large part of CS2041 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), Functional (Lisp/Scheme/Racket, ML) 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.
CS2041 is the B.Tech lab accompanying the corresponding B.Tech course CS2040. For registrants of CS2040, a registration to CS2041 is
compulsory. A major means of evaluation of CS2041 would be the above programming assignments.
Lecture Schedule
1st-Jan-2015 |
Organization & Logistics,
An Overview of Programming Languages
Acknowledgements
|
5th-Jan-2015 |
An Overview of Programming Languages
Readings: PLP, Ch.1
|
12th-Jan-2015 |
No class
Instructor at TIFR, Mumbai to attend POPL-2015 conference.
Readings (All) PLP, Sec. 3.1
|
15th-Jan-2015 |
No class
Sankranti
|
19th-Jan-2015 |
Names and Binding Time
Readings (All) PLP, Sec. 3.1
|
22nd-Jan-2015 |
No class (Instructor sick)
Readings (All) PLP, Sec. 3.1-3.3
|
29th-Jan-2015 |
Binding Times, Lifetimes, Scope Rules
PDF
Readings (All) PLP, Sec. 3.2-3.3
|
2nd-Feb-2015 |
Scope Rules, Bindings
PDF
Readings (All) PLP, Sec. 3.2-3.3
Scopes and Lifetimes section from K&R and Stroustrup
|
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 (CS2040)
Activity | Weight |
Class Participation and Attendance | 10% |
Written Homeworks | 10% |
Mini Prog. Assignments | 10% |
Quizzes (in class) | 5% |
Mid Term Exam | 30% |
End Term Exam | 35% |
Grading (CS2041)
Activity | Weight |
Programming Assignments | 45% |
Mini Prog. Assignments | 10% |
Mid Term Programming Exam | 20% |
End Term Programming Exam | 25% |
Important: Plagiarism Policy of IITH-CSE Department.