Maharishi University of Management
Computer Science Department
Computer Science 505
Advanced Programming Languages
____________________________________
Course Creator: Gregory Guthrie, Ph.D.
DE Instructor: Helmuth Trefftz
College of Science and Technology
Computer Science Faculty
Spring 2005
______________________________
Prerequisites: COMP 350, COMP 380
Duration: 12 weeks / 4 units
Goals of the Course:
To provide an understanding of the fundamental concepts and principles of programming languages and how these are formulated and described in formal methods, and reflected in existing computer languages.
Course Objectives:
1) Gain an understanding of the basic formalisms used to define programming languages.
2) Gain an appreciation of the usefulness of the formal specification of programming languages.
3) Gain an understanding of the relation between syntax and semantics in programming language theory.
4) Gain an understanding of the basic concepts of representation and abstraction in programming languages.
5) Gain experience with the use of some programming language paradigms: functional and logic programming.
6) Gain an understanding of the important concepts in functional programming, such as, higher order functions, referential transparency, equational reasoning, pattern matching and polymorphism.
7) Gain an appreciation of the role and value of type checking and type systems in programming languages.
8) Gain a deeper appreciation of the perfection of the language of nature -- the Ved.
MAJOR THEMES
Theme 1: Formal Syntax
Theme 2: Functional Programming
Theme 3: Denotational Semantics: Principles
Theme 4: Denotational Semantics: Applications
Theme 5: Denotational Semantics: Theory
Evaluation Criteria:
All elements of the course are considered in evaluation, and a student must do satisfactorily in all areas. An approximate weighting of the areas is as follows:
Homework & Labs 25%
Midterm 30%
Final 35%
Newsgroup Participation 10%
Text:
Programming Language Syntax and Semantics, David A. Watt, Prentice-Hall, 1991
References:
Principles of Programming Languages, R. D. Tennent, Prentice-Hall 1981
Readings:
Logic Programming and Prolog: A Tutorial
R. Davis
IEEE Software, Sept, 1985, pp. 53-62.
Languages: Three Interviews
Peter Brown
Communications of the ACM, April, 1984, Vol. 27, N. 4, pp.352-355.
Can Programming be liberated from the Von Neuman Style? A Functional Style and its algebra of programs.
J. Backus
Communications of the ACM, Aug. 1978, Vol 21, No. 8, pp. 613-641.
Supplementary Readings:
[Watt]
Programming Language Concepts and Paradigms
David A. Watt
Prentice-Hall, 1990
An Introduction to Functional Programming Through Lambda Calculus
Greg Michaelson
Addison Wesley, 1988
Bibliography:
A Practical Introduction to Denotational Semantics
Lloyd Allison
Cambridge, 1986.
The Denotational Description of Programming Langugages - An Introduction,
Gordon,
Springer-Verlag, 1979.
Denotational Semantics; A Methodology for Language Development,
D. S. Schmidt,
Allyn & Bacon, 1986.
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory,
Stoy,
MIT, 1977.