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.



Object Oriented Programming: Design Issues, Object Oriented Programming in Smalltalk, C++, Java, C#, Ada 95, Ruby, The Object Model of JavaScript, Implementation of Object Oriented Constructs.

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

Previous year question papers​

Youtube lectures

Unit 1 Playlist

Unit 2 Playlist

Unit 3 Playlist

Unit 4 Playlist

Unit 5 Playlist