ECS 140B: Programming Languages

Subject
ECS 140B
Title
Programming Languages
Status
Active
Units
4.0
Effective Term
2016 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
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. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 140A
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.

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

Illustrative Reading
R. Olsson and A. Keen, JR Programming Language: Concurrent Programming in an Extended Java. Kluwer, 2004.

Potential Course Overlap
None

Course Category