Computer Science

ECS 140B Programming Languages

ECS 140B PROGRAMMING LANGUAGES (4 units)

Format
Lecture: 3 hours
Discussion: 1 hour

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); key implementation issues for those paradigms; and programming language semantics.

Prerequisite: Course 140A

Credit restrictions, cross listings: None

Summary of course contents

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. Language Implementation Schemes
    1. Compilers
    2. Interpreters
    3. Tradeoffs
  2. Icon Programming Language
    1. Basics, structures, generators, string scanning, goal-directed evaluation
    2. Basic implementation techniques
  3. JR Concurrent Programming Language
    1. Basics: operations, capabilities
    2. Concurrent aspects: processes, semaphores, asynchronous message passing, remote procedure call, rendezvous
    3. Representative parallel and distributed applications
    4. Basic implementation techniques
  4. Formal Semantics
    1. Lambda Calculus (notation, reductions, typed lambda calculus)
    2. Attribute grammars, algebraic semantics, operational semantics, denotational semantics, axiomatic semantics

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.

Goals: Students will: (1) learn several programming language paradigms, commonalities and differences among the different languages, their features, their semantics, and their implementations; (2) learn about a variety of different programming languages, about their relative strengths and weaknesses; and (3) gain experience designing and writing programs in a selected set of language.

Illustrative reading
R. Olsson and A. Keen, JR Programming Language: Concurrent Programming in an Extended Java.  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

GE3
Science & Engineering

Overlap: None

Instructors: R. Olsson, R. Pandey, and Z. Su

History: 2012.10.19 (R. Olsson): changed abbreviated title, added omitted expanded course description, updated catalog description; fixed mangled outline; updated topics; dropped long, detailed paragraph on “design” (the contents of which were true, but no longer necessary).  Prior course description (K. Levitt and R. Olsson) dates to Nov 1996.

Outcomes

1 an ability to apply knowledge of mathematics, science, computing, and engineering
2 an ability to design and conduct experiments, as well as to analyze and interpret data
3 an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 X an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 X a recognition of the need for, and an ability to engage in life-long learning
10 knowledge of contemporary issues
11 X an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity
border