0% found this document useful (0 votes)
159 views

Handout (CS F301)

This document provides details for the course "Principles of Programming Languages" including the course description, scope and objectives, textbooks, and course plan. The course covers different programming paradigms like imperative, functional, object-oriented, and logic programming. It introduces features of programming languages and their implementation in various languages. The course plan lists the topics to be covered in each lecture session, along with the corresponding textbook chapters and learning outcomes. Guest lectures will also be provided by an external professor on functional programming and semantics.

Uploaded by

rjjhjb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
159 views

Handout (CS F301)

This document provides details for the course "Principles of Programming Languages" including the course description, scope and objectives, textbooks, and course plan. The course covers different programming paradigms like imperative, functional, object-oriented, and logic programming. It introduces features of programming languages and their implementation in various languages. The course plan lists the topics to be covered in each lecture session, along with the corresponding textbook chapters and learning outcomes. Guest lectures will also be provided by an external professor on functional programming and semantics.

Uploaded by

rjjhjb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani

Pilani Campus
AUGS/ AGSR Division

FIRST SEMESTER 2019-20


COURSE HANDOUT
Date: 07.08.2019

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.

2. Scope and Objective of the Course:

 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

[R1].Robert W. Sebesta, "Concepts of Programming Languages", 10th Edition by Pearson


Publishers.

[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.

Introduction L3-L4: Language Description, Chapter 2(T1) Understanding the


Syntactic Structure formal methods of
(Amit Dua) Chapter 3, 4 describing the syntax,
(R1) resolving ambiguity in
grammars and
converting BNF to
EBNF form and vice-
versa

Imperative L5-L7: Control Abstraction, Chapter 3 (T1) Understanding the need


Languages Structured programming, Loops and for Structured
jumps Chapter 8 (R1) Programming and
Paradigm
Syntax Directed Control
(Vandana) Flow, programming
with invariants
Imperative L8-L9: Data Representation, Chapter 4 (T1) Identifying the
Languages Primitive and Structured Data types, Primitive Data Types,
ADTs; Type checking vs. Type Chapter 6 (R1) User defined ordinal
Paradigm
types and constructed
Inferencing, Type Equivalence and
(Vandana) types. Understanding the
Subtyping. concepts of type
checking

Imperative L10-L11: Primitive Data, Structured Chapter 4(T1) Understanding the


Languages Data (Arrays/Lists, Variables and attributes
Records/Structures, Chapter 6 (R1) of a variable, binding
Paradigm
times, categories of
Variants/Unions), Objects (Simple
2
BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani
Pilani Campus
AUGS/ AGSR Division

(Vandana) objects and classes, Inheritance variables, Static and


Models – Single vs. Multiple, Dynamic scoping
Interfaces and abstract/virtual
classes).

Imperative L12-L14: Introduction to Chapter 5 (T1) Understanding the run


Languages procedures, Recursion, Parameter time environment,
Passing Methods, Call-by-Value, Chapter 5, 9, semantics of calls and
Paradigm
10 (R1) returns, implementing
Call-by-Reference, Call by Value
(Vandana) subprograms,
Result. Scope rules for names, static implementing static
and dynamic scope rules, nested scoping and dynamic
scope, Activation Records, Lexical scoping
Scope, Dangling Pointers, garbage
collection.

Functional L15-L17: Introduction and basic Chapter , 9, 10 Understanding the


Programming elements of Functional (T1) basics of functional
Paradigm Programming, Lists and associated programming and
Operations, Function Declaration, Chapter 16 benefits of functional
(Amit Dua) Predicate Functions, Tail recursive (R1) programming.
functions, Higher Order Functions,
Polymorphism

Functional L18-L21: Data Types and Lambda Chapter 14 Understanding lambda


Programming Calculus (T1) calculus, and using type
Paradigm systems as a way to
reason about programs
(Sriram Rajamani)

Semantics and L22-23: abstract interpretation Lecture notes Understanding basics of


Verification (verification of imperative programs, as well as semantics and
following the operational semantic reference verification of programs
(Sriram Rajamani) rules for partial correctness) papers (to be
provided)

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

Logic L27: Design aspects of Logic Chapter 11(T1) Basic understanding of


Programming programming languages logic programming
Chapter 15 constructs
Paradigm
(R1)
(Amit Dua)

Concurrency and L28: Design aspects of concurrent Chapter 12 Implementing


Distribution programming (T1) cooperation and
competition
(Vandana) Chapter 13 synchronization in
(R1) concurrent
programming.

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.

7. Chamber Consultation Hour: Amit: Wednesday 4:00 p.m. to 5:00 p.m.


Vandana: Thursday 4:00 p.m. to 5:00 p.m.
8. Notices: https://nalanda.bits-pilani.ac.in/
9. Make-up Policy:
- Permission of the Instructor-in-Charge is required to take a make-up.
- Make-up applications must be given to the Instructor-in-charge personally.
4
BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani
Pilani Campus
AUGS/ AGSR Division

- 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

You might also like