Syllabus - Principles of Programming Languages (CSIT-503 (C))
Computer Science & Information Technology
Principles of Programming Languages (CSIT-503 (C))
V-Semester
UNIT-I
Language Evaluation Criteria, influences on Language design, Language categories, Programming Paradigms – Imperative, Object Oriented, functional Programming, Logic Programming. Programming Language Implementation – Compilation and Virtual Machines, programming environments
UNIT-II
Data types: Introduction, primitive, character, user defined, array, associative, record, union, pointer and reference types, design and implementation uses related to these types. Names, Variable, concept of binding, type checking, strong typing, type compatibility, named constants, variable initialization, Sequence control with Expressions, Conditional Statements, Loops, Exception handling.
UNIT-III
Subprograms and Blocks: Fundamentals of sub-programs, Scope and lifetime of variable, static and dynamic scope, Design local referencing environments, parameter passing methods, overloaded sub-programs, generic sub-programs, design issues for functions overloaded operators, co routines. issues of subprograms and operations, local referencing
UNIT-IV
Abstract Data types: Abstractions and encapsulation, introductions to data abstraction, Static and Stack-Based Storage management. heap based storage management. Garbage Collection. Object oriented programming in small talk, C++, Java, C#, PHP, Perl . Concurrency: Subprogram level concurrency, semaphores, monitors, massage passing, Java threads, C# threads
UNIT–V
Exception handling, Exceptions, exception Propagation, Exception handler in C++ and Java. Logic Programming Language : Introduction and overview of logic programming, basic elements of prolog, application of logic programming. Functional Programming Languages: Introduction, fundamentals. Introduction to 4GL.
Course Objective
To introduce the major programming paradigms, and the principles and techniques involved in design and implementation of modern programming languages. To introduce notations to describe syntax and semantics of programming languages. To analyze and explain behavior of simple programs using concepts such as binding, scope, control structures, subprograms and parameter passing mechanisms. To introduce the concepts of concurrency control and exception handling
Course Outcome
At the completion of the course, students will... Have the background for choosing appropriate programming languages for certain classes of programming problems. Be able to program in an imperative (or procedural), an object-oriented, a functional, and a logical programming language. Understand the significance of an implementation of a programming language in a compiler or interpreter. Have the ability to learn new programming languages. Have the capacity to express programming concepts and choose among alternative ways to express things. Be able to design a new programming language. Make good use of debuggers and related tools
Practicals
- Define a LISP function to compute sum of squares.
- Define a LISP function to compute difference of squares.(if x > y return x2 -y2, otherwise y2 - x2 ).
- Define a Recursive LISP function to solve Ackermann’s Function.
- Define a Recursive LISP function to compute factorial of a given number.
- Define a Recursive LISP function which takes one argument as a list and returns last element of the ist. (Do not use last predicate).
- Define a Recursive LISP function which takes one argument as a list and returns a list except last element of the list. (Do not use but last predicate).
- Define a Recursive LISP function which takes one argument as a list and returns reverse of the list. (Do not use reverse predicate).
- Define a Recursive LISP function which takes two arguments first, an atom, second, a list, returns a list after.
Reference Books
-
Sebesta, “Concept of Vprogramming Language”, Pearson Edu.
-
Louden, “Programming Languages: Principles & Practices”, Cengage Learning
-
Tucker, “ Programming Languages: Principles and paradigms“, Tata McGraw –Hill
-
Terrance W Pratt, "Programming Languages: Design and Implementation", Pearson Edu.
-
Cavlo Ghezzi& Mehdi Jazayeri" Programming Languages Concepts", Willey India
-
E Horowitz, "Programming Languages", 2nd Edition, Addison Wesley