- Department of Computer Science
- Vision, Mission, & Values
- Degrees & Programs
- Courses
- First Year Transfer Students
- Current Students
- Prospective Students
- Faculty & Staff
- Professors Emeritus
- Industrial Advisory Board
- Financial Assistance
- Employment Opportunities
- Donate
- Graduate Capstone
- Careers for Majors
- Resources
- Contact Us
- Help for Students
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