Skip navigation

Site Map | College of Engineering | UC Davis | MyUCDavis

ECS 140A PROGRAMMING LANGUAGES (4) I,II

Lecture: 3 hours

Discussion: 1 hour

Prerequisite: Course 50 or Engineering Electrical Computer 70; course 60

Grading: Letter; homework (10%), projects (30%), midterm (20%), final (40%)

Catalog Description:
Syntactic definition of programming languages. Introduction to programming language features including variables, data types, data abstraction, scoping, parameter disciplines, exception handling. Comparative study of several high-level programming languages. Not open to students who have taken ECS 140.

Expanded Course Description:
Lectures focus on the fundamental principles of modern computer programming languages. Commonalities and differences among the different languages and their features are discussed. Students learn about a variety of different programming languages and about their relative strengths and weaknesses. Students gain experience designing and writing programs in a selected set of languages.

The lecture topics include the following, not necessarily listed in chronological order:

  1. Overview and History
  2. Syntax and Parsing
    1. BNF, syntax diagrams, parse trees, simple parsing technique
  3. Variables and Expressions
    1. Declarations, attributes, aliases, binding
    2. Side effects, precedence, order of evaluation
  4. Control Structures
    1. Alternation, iteration, generators
  5. Data Types and Type-Checking
    1. Polymorphism and overloading, conversion and coercion
    2. Strong vs. weak, and holes, compile-time vs. run-time, name vs. structural
  6. Modularization and Objects
    1. Separation of specification and implementation
    2. Generics and instantiation
  7. Data Abstraction
    1. Mutability, adequacy, classes of operations
    2. Abstract specification
  8. Scope and Extent
    1. Block structure, visibility and holes, contour model
    2. Dynamic vs. static scope
    3. Run-time stack and heap implementation
  9. Parameter Passing
    1. Parameter transmission methods, procedural parameters
  10. Exception Handling
    1. Notions of raising, handling, and propagating
  11. Language Paradigms Beyond Sequential-Imperative
    1. Functional, concurrent, object-oriented, dataflow, logic programming

Textbook:
K. Louden, Programming Languages: Principles and Practice, Thompson, 2002.

Programming Projects:
The projects focus either on various aspects of programming languages (for example, simple parsers, translators, symbolic computation, and implementation of abstract data types) or on exercising the particular strengths of a given language. Students work individually or in small groups on three programming projects. Students design, implement, and test their solutions. Each project would typically use a different language; languages include from among the following: Ansi-C, Modula-2, Ada, C++, Standard ML, Prolog, Lisp, and Scheme. At least one project language will support either modules or object-oriented programming (e.g. Modula-2, Ada, C++, or Smalltalk), and at least one will be a non-imperative language (e.g. ML, Prolog, Lisp, or Scheme).

Engineering Design Statement:
The projects involve the design, implementation, and testing of programs that focus on various concepts in programming languages. The facilities used for these programming projects resemble those that would be found in industry to the extent possible, given the academic constraints. The project assignments define performance specifications and constraints, and outline a general approach to the problem. However, design and implementation details are left to the students. Lectures discuss general concepts of programming languages and design choices available to programmers, in terms of algorithmic design, what language features can be employed to solve a particular problem, and what languages are most appropriate for particular application domains. Discussion sections fill in the details of the different languages used by the student and describe system tools that can be used to aid with the projects. Projects are graded based on the design and performance, including documentation. Examination questions are based on design methods discussed in lecture and from the projects.

ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units

Goals:
Students will:

Student Outcomes:

  • The ability to work independently
  • The ability to apply knowledge of basic science, mathematics and engineering principles to solve comput

    Instructor: R. Olsson, R. Pandey, Z. Su

    Prepared by: R. Olsson, R. Pandey, Z. Su (October 2006)

    Overlap Statement:
    This course does not duplicate any existing course.

    Back to Course Descriptions