Preliminary Concepts: Reasons for Studying Concepts of Programming Languages, Programming Domains, Language Evaluation Criteria, Influences on Language Design, Language Categories, Language Design Trade-offs, Implementation Methods, Programming Environments, Evolution of the Major Programming Languages.
Describing Syntax and Semantics: General Problem of Describing Syntax, Formal Methods of Describing Syntax, Attribute Grammars, Describing the Meaning of Programs.
Names, Binding, Type Checking, and Scopes: Names, Variables, The Concept of Binding, Type Checking, Strong Typing, Type Compatibility, Scope, Scope and Lifetime, Referencing Environments, Named Constants.
Data Types: Primitive Data Types, Character String Types, User- Defined Ordinal Types, Array Types , Associative Arrays, Record Types, Union Types, Pointer and Reference Types.
Expressions and Assignment Statements: Arithmetic Expressions, Overloaded Operators, Type Conversions, Relational and Boolean Expressions, Short-Circuit Evaluation, Assignment Statements, Mixed- Mode Assignment.
Statement-Level Control Structures: Selection Statements, Iterative Statements, Unconditional Branching, Guarded Commands.
Subprograms: Fundamentals and Design Issues for Subprograms, Local Referencing Environments, Parameter –Passing Methods, Parameters That are Subprograms Names, Overloaded Subprograms, Generic Subprograms, Design Issues for Functions, User-Defined Overloaded Operators.
Implementing Subprograms: The General Semantics of Calls and Returns, Implementing “Simple” Subprograms, Implementing Subprograms with Stack- Dynamic Local Variables, Nested Subprograms, Blocks, Implementing Dynamic Scoping.
Abstract Data Types: The Concept of Abstraction, Introduction to Data Abstraction, Design Issues for Abstract Data Types, Language Examples, Parameterized ADT, Encapsulation Constructs, Naming Encapsulation.
Concurrency: Subprogram level Concurrency, Semaphores, Monitors, Massage Passing, Ada Support for Concurrency, Java Threads, C# Threads, Statement-Level Concurrency.
Exception Handling and Event Handling: Introduction to Exception Handling, Exception Handling in Ada, C++ and Java, Introduction to Event Handling, Event Handling with Java.
Functional Programming Languages: Introduction, Mathematical Functions, Fundamentals of FPL, LISP, Introduction to Scheme, COMMON LISP,
ML, Haskell, Application of Functional Programming Languages and A Comparison of Functional and Imperative Languages.
Logic Programming Languages: Introduction to Predicate Calculus, Predicate Calculus and Proving Theorems, An Overview of Logic Programming. The Origins, Basic Elements and Deficiencies of Prolog, Applications of Logic Programming.
Scripting Languages: Key concepts, Case Study: Python(From the Suggested Reading 2).