ICS 410: Programming Languages

ICS 410: Programming Languages

 
Course Information
Class/Laboratory Schedule: 

Three 50 minutes lectures per week (3-0-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
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.

Textbook(s): 

Concepts of Programming Languages, R. Sebesta, 7th Edition, Addison Wesley, 2006.

Reference(s) and Other Material: 
  • N/A
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​