COP 5555

PROGRAMMING LANGUAGE PRINCIPLES

Fall 2004 course web pagehttp://www.cise.ufl.edu/class/cop5555fa04

Catalog Description

3 credits

An introduction to programming language principles, including the
history of programming languages, formal models for specifying languages,
design goals, run-time structures, and implementation techniques, along
with a survey of the principal programming language paradigms.

Textbook(s)

Programming Language Pragmatics, Michael L. Scott, Morgan Kaufman Publishers,
2000, ISBN 1-55860-442-1 (hardback) or ISBN 1-55860-578-9 (paperback)

Formal Syntax and Semantics of Programming Languages, Kenneth Slonneger
and Barry L. Kurz.  Addison Wesley, 1995.  (Selected chapters) This book
is currently out of print but is available on the web at URL
www.cs.uiowa.edu/~slonnegr/plf/Book
 

Reference(s)

ML for the Working Programmer, Lawrence C. Paulson, 1996.
Concurrent Programming, Principles and Practice, Gregory Andrews, 1991.
Concepts of Programming Languages, Robert Sebesta, 1996, 3rd edition,
  Benjamin-Cummings.
Essentials of Programming Languages, Friedman, Wand and Haynes, 1992.
  McGraw-Hill.
 

Professor

Beverly A. Sanders, Associate Professor
Ph.D., 1985, Harvard University

Address:  PO Box 116120
Office: CSE 322
Phone:  (352) 392-1528
e-mail: sanders@cise.ufl.edu
www.cise.ufl.edu/~sanders

Prerequisites by Topic

COP 3530 - Data Structures or equivalent.

Goals

To introduce the student to the principles of programming languages,
including their specification, design, implementation, and classification
into paradigms.  Additionally, to give the student a survey of the
principal programming language paradigms.
 

Topics

I.    Specification of programming languages
      A.  Syntax
      B.  Semantics
          1. Operational semantics
          2. Axiomatic semantics
          3. Attribute grammars
          4. Denotational semantics

II.   Issues in language design
      A.  Names, scope and bindings
      B.  Types
      C.  Control flow
      D.  Subroutines and control abstractions

III.  The principal programming language paradigms
      A.  Data abstraction and object oriented programming
               (Examples:  Java, Smalltalk, C++)
      B.  Nonimperative paradigms
          1.  The functional paradigm (Examples: Scheme, ML)
          2.  The logic paradigm (Example: Prolog)
      C.  Concurrent programming (Examples: Java, SR)
 

Project(s)

Course projects are at instructor's discretion.  Traditionally, however,
students implement a complete language processor.
 

Computer Support Required

Implementations of Java, and ML will be required.