Sign In

 ICS 410: Programming Languages

​Course Information

Class/Laboratory Schedule: 

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

Prerequisite Courses: 

Catalog Description: 

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: 

Course Outcomes: 

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

Topics Covered: 

  • 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
  • Subprograms
  • Implementing Subprograms
  • Abstract Data Types
  • Concurrency
  • Exception Handling​