CMPS 350 Concepts of Programming Languages
Course Description
Computer Science Department
California State University, Bakersfield
V.1, 5/6/2003

Catalog Description :

Basic issues in programming language design and implementation. Context-free grammars, static semantics and dynamic semantics, lexical analysis, parsing, variable declarations and types, references, values, pointers, expression and assignment statements, objects, classes, inheritance and polymorphism are covered.

Prerequisite:

CMPS 223

Units:

5

Coordinator:

Wei Li

Goals/Objectives:

  • To provide the student with the evolutionary history of programming languages to illustrate how this history has led to the paradigms available today.
  • To provide student with the concept of a virtual machine.
  • To provide the student with the concepts of language translation phases (lexical analysis, parsing, code generation, optimization), and to understand differences of programming language implementation between interpreters and compilers.
  • To provide student with the conception of types as a set of values with together with a set of operations, and to understand declaration models (binding, visibility, scope, and lifetime).
  • To provide student with approaches to argument passing, and to be able to describe the difference between call-by-value and call-by-reference parameter passing.
  • To provide student with object-oriented design, to understand basic concepts of designing encapsulation and information-hiding, classes and subclasses, inheritance and polymorphism.
  • To provide student with overview and motivation of functional language.

Current Text(s):

  1. "Concepts of Programming Languages" (sixth edition), Robert Sebesta and Addison-Wesley Publishing
  2. book title and edition , author(s) and publisher

Topics:

Overview of programming languages (PL1): History of programming languages; Brief survey of programming paradigms; Procedural languages; Object-oriented languages; Functional languages.

Virtual machines (PL2): The concept of a virtual machine; Hierarchy of virtual machines; Intermediate languages.

Introduction to language translation (PL3): Comparison of interpreters and compilers; Language translation phases (context-free grammars , static semantics and dynamic semantics , lexical analysis, parsing).

Declarations and types (PL4): The conception of types as a set of values with together with a set of operations; Declaration models (binding, visibility, scope, and lifetime); Overview of type-checking.

Abstraction mechanisms (PL5): Procedures, functions, and iterators as abstraction mechanisms; Parameterization mechanisms (reference vs. value, pointers ); Expression and assignment statements .

Object-oriented programming (PL6): Object-oriented design; Encapsulation and information-hiding; Separation of behavior and implementation; Classes and subclasses; Inheritance (overriding, dynamic dispatch); Polymorphism (subtype polymorphism vs. inheritance); Class hierarchies.

Functional programming (PL7): Overview and motivation of functional languages

† Topics not included in ACM curricula

ACM Sub-Areas or Units Covered :

(PL1) Overview of programming languages

0.25

(PL2) Virtual machines

0.25

(PL3) Introduction to language translation

1.5

(PL4) & PL5. Declarations and types and abstraction mechanisms

1.5

(PL6) Object-oriented programming

1.4

(PL7) Functional programming

0.1

PL: Programming Languages

Laboratory:

Students will spend two and half hours each week on the following subjects:
(1) Review some concepts in high level programming languages.
(2) Discuss some concepts in language design to the class, such as token, context-free grammars, and implement a simple context-free grammar.
(3) Study static and dynamic semantics, and analyze assignment statements and control-structure statements.
(4) Study and analyze top-down and bottom-up parser.
(5) Discuss important concepts of variables, such as names, binding, lifetime and scope.
(6) Discuss important concepts in parameterization mechanisms, such as values, references, and pointers.
(7) Discuss operator evaluation order, operand evaluation order, and short-circuit evaluation.

(8) Discuss objects, classes, inheritance and polymorphism.

 

 

Oral and Written Communication:

 

Social and Ethical Issues:

 

Problem Analysis:

Students investigate basic concepts in programming languages, and understand methodology for high level programming language implementation and design.

Solution Design:

 Conceptual design and implementation of programming languages and will be conducted in laboratory hours.

Version & Date

Version 1, 5/6/2003

Comments

The first draft based on ACM curricula 2001 in the format of ABET sample course description.