Principles of Programming Languages
Introduction: Role of Programming Languages: Why Programming Languages, Towards Higher-Level Languages, Programming Paradigms, Programming Environments Language Description: Syntactic Structure, Language Translation Issues: Programming Language Syntax, Stages in Translation, Formal Translation Models
Data, Data Types, and Basic Statements : Names , Variables , Binding, Type Checking, Scope, Scope Rules , Lifetime and Garbage Collection, Primitive Data Types, Strings, Array Types, Associative Arrays ,Record Types, Union Types, Pointers and References , Arithmetic Expressions , Overloaded Operators, Type Conversions , Relational and Boolean Expressions, Assignment Statements, Mixed Mode Assignments, Control Structures, Selection ,Iterations, Branching, Guarded Statements
Subprograms and Implementations : Subprograms, Design Issues, Local Referencing, Parameter Passing, Overloaded Methods, Generic Methods, Design Issues for Functions , Semantics of Call and Return, Implementing Simple Subprograms, Stack and Dynamic Local Variables, Nested Subprograms, Dynamic Scoping.
Object-Orientation, Concurrency, and Event Handling : Grouping of Data and Operations — Constructs for Programming Structures, Abstraction Information Hiding, Program Design with Modules, Defined Types, Object Oriented Programming — Concept of Object, Inheritance, Derived Classes and Information Hiding – Templates, Semaphores, Monitors, Message Passing, Threads, Statement Level Concurrency Exception Handling (Using C++ and Java as Example Language).
Functional and Logic Programming Languages : Introduction to Lambda Calculus , Fundamentals of Functional Programming Languages, Programming with Programming with ML, Introduction to Logic and Logic Programming – Programming with Prolog.