• Understand the need of different programming languages and the underlying issues
• Understand different elements of programming languages
• Learn comparison of programming languages and precise definitions to programming-language features
• Apply programming language knowledge and write better programs by exploiting modern language features such as higher-order functions and objects


CLO: 1. Understand a wide range of programming language constructs and features.
CLO: 2. Understand language paradigm, and elements of programming languages.
CLO: 3. Describe, compare, and contrast various language features and problem solving using different language paradigms.
CLO: 4. CLO:4. Apply programming languages knowledge and design algorithms that solve small-to-moderate scale computational problems


• Introduction to course, Course Outline and Objectives The Programming Language Spectrum, Compilation and Interpretation
• Programming Environments, Programming Language Syntax: Specifying Syntax
• Programming Language Syntax: Parsing, Languages, Automata, Power of String, Grammar
• Names, Scopes, And Bindings: The Notion Of Binding Time, Object Lifetime and Storage Management, Scope Rules
• Semantic Analysis: The Role of The Semantic Analyzer, Attribute Grammars, Evaluating Attributes
• Target Machine Architecture: The Memory Hierarchy, Data Representation, Instruction Set Architecture
• Architecture and Implementation, Compiling for Modern Processors
• Control Flow: Expression Evaluation, Structured and Unstructured Flow
• Sequencing, Selection, Iteration, Recursion, Non-Determinacy
• Data Types: Type Systems, Type Checking, Records (Structures) and Variants (Unions)
• Arrays, Strings, Sets, Pointers and Recursive Types, Lists
• Data Abstraction and Object Orientation
• Functional Languages: Historical Origins, Functional Programming Concepts
• Scripting Languages: What is a Scripting Language? Problem Domains, Scripting The World Wide Web, Innovative Features