• 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
COURSE LEARNING OUTCOMES (CLO)
1. Understand a wide range of programming language constructs and features.
2. Understand language paradigm, and elements of programming languages.
3. Describe, compare, and contrast various language features and problem solving using different language paradigms.
4. Apply programming languages knowledge and design algorithms that solve small-to-moderate scale computational problems
COURSE CONTENTS
• 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
• CFG, DFA, NFA
• 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,