ECS 140A: Programming Language

Subject
ECS 140A
Title
Programming Language
Status
Active
Units
4.0
Effective Term
2019 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Syntactic definition of programming languages. Introduction to programming language features including variables, data types, data abstraction, object-orientedness, scoping, parameter disciplines, exception handling. Non-imperative programming languages. Comparative study of several high-level programming languages. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 050; (ECS 060 or ECS 032B or ECS 036C); ECS 020; ECS 150
Enrollment Restrictions
Pass One open to Computer Science, Computer Science Engineering, Computer Engineering, and Cognitive Science Majors only.

Summary of Course Content

  1. Overview and History
  2. Syntax and Parsing a. BNF, syntax diagrams, parse trees, simple parsing technique
  3. Variables and Expressions
    • Declarations, attributes, aliases, binding
    • Side effects, precedence, order of evaluation
  4. Control Structures
    • Alternation, iteration, generators
  5. Data Types and Type-Checking
    • Polymorphism and overloading, conversion and coercion
    • Static vs. dynamic type-checking
  6. Modularization and Objects
    • Separation of specification and implementation
    • Generics and instantiation
    • Inheritance
    • Dynamic binding and its implementation
  7. Data Abstraction
    • Mutability, adequacy, categorization of operations
    • Abstract specification
  8. Scope and Extent
    • Block structure, visibility and holes, contour model
    • Dynamic vs. static scope
    • Run-time stack and heap implementation
  9. Parameter Passing
    • Parameter transmission methods, procedural parameters
  10. Exception Handling
    • Notions of raising, handling, and propagating
  11. Non-Imperative Programming Paradigms
    • Functional programming languages
    • Logic programming languages
  12. Additional Language Paradigms
    • Concurrent, dataflow, constraint

Illustrative Reading
K. Louden, Programming Languages: Principles and Practice, Thompson, 2nd edition, 2003

Potential Course Overlap
There is no significant overlap with other courses.

Final Exam
Yes

Justification for No Final Exam
final exam

Course Category