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