Handout (CS F301)
Handout (CS F301)
Pilani Campus
AUGS/ AGSR Division
In addition to part I (General Handout for all courses appended to the Time table) this portion gives further
specific details regarding the course.
Course No : CS F301
Course Title : Principles of Programming Languages
Instructor-in-Charge : Vandana Agarwal (email: [email protected])
Instructor(s) : Amit Dua (email: [email protected])
Guest Professor : Dr. Sriram Rajamani, Microsoft Research, India
Tutorial/Practical Instructors: Amit Dua, Vandana Agarwal
1. Course Description:
The course covers features of programming languages and introduces the main programming paradigms. It
covers, in detail, the semantics of the features of programming languages – Control Abstraction, Data Types
and Data Abstraction, Scope and Parameter passing, inheritance, polymorphism and Concurrency related
features. It covers various aspects of runtime environments like global and local data, code, function call
stacks, dynamically allocated data, runtime features for exceptions and threads. Different programming
paradigms, namely imperative, object oriented, logic and functional programming will be discussed in detail.
Students will be introduced to the significance of constructs and how different languages implement those
constructs. The Lambda calculus will follow an introduction to functional programming languages. We will
also cover typing in lambda calculus and abstract interpretation, to introduce semantics or reasoning about
programs. Logic programming paradigm will include formal elements of logic programming and
programming tasks that explore the logic paradigm.
Develop familiarity with the different paradigms of languages (imperative, functional, object oriented
and logic) in programming and understanding the features of programming languages like abstraction,
data types, etc.
Understand the aspects of run-time environments like global and local data, function call stacks and
static and dynamic allocation of data.
Introduction to the syntax and semantics of common functional programming languages. Also, the
students will learn lambda calculus and abstract interpretation.
Students will be encouraged to learn the design aspects of languages belonging to different paradigms
rather than learning a new language for coding purpose.
Understand the basis of logic programming and synchronization features in concurrent programing.
3. Text Books:
[T1]. Ravi Sethi, "Programming Languages: Concepts and Constructs" 2nd Edition by Addison
Wesley.
4. Reference Books:
1
BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani
Pilani Campus
AUGS/ AGSR Division
[R2].Aho, Lam, Sethi and Ullman, "Compilers Principles, Techniques, and Tools". Pearson
Education. Low Price Edition. 2004.
5. Course Plan:
Module No. Lecture Session Reference Learning outcomes
(Instructor’s name)
Introduction L1-L2: Introduction and motivation, Chapter 1 (T1) Identifying the language
language paradigms, imperative vs. paradigms and language
(Amit Dua) declarative styles of programming; Chapter 1, 2 evaluation criteria
Programming Languages that (R1)
support these styles, Compilers.
Features of a programming
Language.
Object Oriented L24-L26: Object Oriented Chapter 7 (T1) Understanding the OOP
Programming Programming Paradigm and concepts and design
features, Class hierarchy, Chapter 12 issues, implementing
paradigm
(R1) dynamic binding and
Inheritance, Information hiding.
(Vandana) inheritance in OOP
languages
3
BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani
Pilani Campus
AUGS/ AGSR Division
6. Evaluation Scheme:
Component Duration Weightage Date & Time Nature of component
(%) (Close Book/ Open Book)
Mid-Semester Test 90 Min. 25% Visit AUGSD website Close book
Comprehensive 3h 35% Visit AUGSD website Close book
Examination
Quizzes (Take home, 30- 25% Weekly quiz Open book
on Nalanda) 50minutes
Online test 2 hours 15% November 3rd week Open book
Quizzes: There will be a quiz in a week or 10 days at regular intervals. The quiz questions will be made
available on Nalanda. Students are advised to revise the concepts taught in the class regularly by going through
the prescribed text and reference books. It is of utmost importance that the quizzes be attempted with proper
preparation. A fixed window of about 4 hours will be made available for students to attempt the quiz from
anywhere. However, once the quiz is started, a student will have to complete that in the prescribed time of 30-
50 minutes. The quiz can be started anytime during the given time window, but will end after the defined time
limit. Students are also advised to avoid the last minute upload due to possible network congestion. Students
will be graded for the best 75% of the total quizzes uploaded. For example, if, to the end of the semester, eight
quizzes were uploaded, best 6 will be considered for grading. No makeup request will be entertained if a
student misses the quiz. In addition, the quiz time will not be extended for any reason.
Online test: The online test is intended to test the learned knowledge of a student about the design aspects of
the taught programming languages paradigms. It will comprise of variety of short answer type questions,
which will be multiple choice, fill in the blanks, matching etc. or explanation based. The test will be conducted
in IPC in the 3rd week of November. No makeup request will be considered for online test.
- A make-up test shall be granted only in genuine cases where - in the Instructor’s judgment - the student would
be physically unable to appear for the test.
- Requests for make-up for the comprehensive examination – under any circumstances – can only be made to
Dean, Instruction Division.
10. Note (if any):
Instructor-in-charge
Course No. CS F301