CS 3120 PROGRAMMING LANGUAGE CONCEPTS (4) 2005

Catalog Description:

Survey and critical comparison of a variety of computer languages. Issues include syntax, semantics, control structures, data representation. Discussion of both design and implementation; of both imperative and declarative languages. Prerequisite: CS 2360 and 2430.

Topics:

Language design goals:

readability, reliability, efficiency, etc.

Syntax:

ability to analyze grammars, write simple grammars derivations, parse trees, ambiguity syntax diagrams BNF, extended BNF, attribute grammars associativity and precedence

Control structures

  • comparison of selections and loop constructs among languages
  • GOTO statement

Type issues

  • coercion and conversion
  • dynamic vs. static
  • type equivalence issues
  • type inference (optional)

Expression evaluation

  • precedence, associativity
  • type issues in evaluation
  • short-circuit evaluation
  • lazy evaluation (optional)

Visibility rules

  • static and dynamic scopes
  • languages with nested subprograms

Procedures and functions

  • parameter passing: types of
  • implementation and activation records, etc.
  • overloading
  • generic subprograms (optional)

ADT's and OOP

  • Data abstraction, encapsulation, information hiding
  • inheritance
  • virtual methods and dynamic name binding

Storage:

allocation, deallocation, stacks, heaps

Programming paradigms

  • Imperative languages
  • logic languages
  • functional programming
  • string processing languages

Semantics:

formal and natural semantics, optional topic

Exception handling:

optional topic

Support for concurrency:

optional topic

Languages:

choose examples for comparison from C, C++, Java, Lisp, Scheme, Ada, Prolog, APL, Perl and others.

Texts:

Sethi: Programming Languages, Concepts and Constructs Sebesta: Programming Language Concepts Pratt & Selkowitz, Programming Languages