Three 50 minutes lectures per week (3-0-3)
Designation: Required Course
Course Level: Undergraduate
Prerequisite(s) by Topic:
- Fundamental Programming Constructs
- Fundamental Data Structures
Programming Paradigms: Object-oriented, imperative, functional, and logic. Application development in these paradigms. Fundamentals of Language Design: Syntax and Semantics. Language implementation: virtual machines; compilation, interpretation, and hybrid.
Concepts of Programming Languages, R. Sebesta, 7th Edition, Addison Wesley, 2006.
Reference(s) and Other Material:
- After completion of this course, the student shall be able to:
- Identify various design issues in programming languages and illustrate with examples how the design issues have been handled in various popular programming languages.
- Understand and use formal tools like BNF/EBNF, attribute grammars, operational semantics, etc. to model syntax and semantics of programming languages.
- Understand various design tradeoffs like cost and reliability, efficiency and flexibility,etc. needed to develop a programming languages.
- Show basic program development skill in four programming paradigms: object-oriented,
- imperative, functional, and logic.
- Basic concepts for programming language design: Quality factors of programming languages like readability, writability, and reliability; factors that affect the design of
- programming languages; design trade-offs
- Programming language implementation and virtual machines
- Evolution of the Major Programming languages
- Describing Syntax and Semantics
- Introduction to C
- Object-Oriented Programming
- Functional Programming
- Logic Programming
- Names, Bindings, Type Checking and Scopes
- Data Types
- Expressions and the Assignment Statements
- Statement-Level Control Structure
- Implementing Subprograms
- Abstract Data Types
- Exception Handling