The University at Albany, State University of New York
Department of Computer Science
CSI 311
Principles of Programming Languages
Spring Semester 2009
Dr. Neil V. Murray, Instructor
Class: Monday & Wednesday 12:35 - 1:30 p.m., LC - 4
LI-95A; tel. 442-3393;
nvm@cs.albany.edu
Syllabus: CSI 311 (we may not get to all topics)
General Principles
(Material in I - II taken from "Concepts of Programming
Languages" by Sebesta, Chapter 3, and material in III
taken from Chapter 9)
I. Syntax
A. Grammers
1. Vocabulary - terminal & non-terminal
symbols
2. Production rules
3. Derivations
4. Context-free languages, cannonical
derivations, ambiguity
5. Context-sensitive languages
B. The Backus-Naur form
C. Attribute Grammers
II. Semantics
A. Operational definitions
B. Denotational definitions
C. Axiomatic definitions
1. Program assertions
2. Axiomatic rules
3. Invariants, loop invariants
4. Termination
III. Procedures and Parameters
A. Names, Locations, and Values
B. Local and global variables
C. Parameter passing
1. Value
2. Result
3. Value-result
4. Location
5. Name
Functional Programming (SCHEME)
I. Expressions, evaluation, lists, pairs
II. Basic SCHEME Functions, The SCHEME Interpreter
III. Recursion, binding, special forms
IV. Functions as First-Class Objects - Functions as arguments
V. Avoiding Unnecessary Computation - Auxiliary Functions
VI. Simple input/output
Logic Programming (Prolog)
I. Goal-Directed Computation (possibly introduced
within SCHEME)
A. Declarative semantics
B. Procedural semantics - ordered depth first search
II. Variable Bindings - Unification
III. Multidirectional Programs
IV. Meta-logical Predicates
setof, assert, retract, not, ! (cut)
Return Back to CSI 311 Home Page