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