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