Skip navigation

Site Map | College of Engineering | UC Davis | MyUCDavis

ECS 140B PROGRAMMING LANGUAGES (4) I

Lecture: 3 hours

Discussion: 1 hour

Prerequisite: Course ECS 140A

Grading: Letter; homework and projects (50%), exams -including final- (50%)

Catalog Description:
Continuation of programming language principles. Further study of programming language paradigms such as functional and logic; additional programming language paradigms such as concurrent (parallel), dataflow, and constraint; key implementation issues for those paradigms; and programming languages semantics.

Expanded Course Description:
Lectures focus on several programming language paradigms. Lectures discuss commonalities and differences among the different languages, their features, their semantics, and their implementations. 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.

Exact topics covered and order will depend on the instructor and what materials have recently been covered in ECS 140A. Some sample topics are:

  1. Lambda Calculus
    1. Notations, reductions, typed lambda calculus
    2. Semantics
    3. Attribute grammars, algebraic semantics, operational semantics, denotational semantics, axiomatic semantics
  2. Icon Programming Language
    1. Basics, structures, generators, string scanning, goal-directed evaluation
    2. Basic implementation techniques
  3. SR Programming Language
    1. Sequential aspects
    2. Resources, operations, capabilities
  4. Concurrent aspects
    1. Processes, semaphores, asynchronous message passing, remote procedure call, rendezvous, applications
  5. Basic implementation techniques
  6. Prolog Programming Language
    1. Facts, questions, rules, structures, generators, the "cut", backtracking, grammar rules, applications
    2. Basic implementation techniques
Textbooks:
R. Olsson and A. Keen, JR Programming Language: Concurrent Programming in an Ex, Kluwer, 2004

Computer Usage:
Students work individually or in small groups on several programming projects. These projects are designed to reinforce and complement the lecture material. Students design, implement, and test their solutions in a workstation environment.

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 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:

Instructors: K. Levitt, R. Olsson, R. Pandey

Prepared by: K. Levitt, R. Olsson (Nov. 1996)

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

Back to Course Descriptions