PRINCIPLES OF FUNCTIONAL LANGUAGES
Fall 1999
INSTRUCTOR: John E. Howland
TEXT: Scheme and the Art of Programming by Springer and Friedman
EXAMS: October 1, November 5, December 3
Final Exam Tuesday, December 14, 8:30 a.m.
COURSE OBJECTIVES: The objectives of this course include
a) learning the Scheme and J programming notation
b) learning to express algorithms using functional notation
c) recursion
d) a re-introduction to some of the core topic areas of computer science including data structures, computer arithmetic, computer organization and programming languages
PROGRAMMING LABORATORY PROBLEMS
Homework problems will be assigned on a regular basis, but will not be graded. Even though programming laboratory problems are not graded, it is important to complete these assignments since experience has shown this to be a key to mastering the material.
GRADING
The approximate breakdown on grading will be as follows:
Hour exams will be used to determine 65% of the final semester grade.
The final examination will be used to determine 25% of the final semester grade.
Class discussion and other subjective measures will determine the remaining 10% of each student's grade.
Class discussion will be conducted outside of class on a local USENET discussion group, tu.csci2322. Each student should contribute to the discussion once or twice a week. Such contributions may include responses to topics posted by others or by posting new discussion topics. The instructor will be reading tu.csci2322 and may contribute discussion topics from time to time. Discussion topics should be limited to the course but may cover any aspect of the course. This news group will be archived but not moderated. This means that all of the discussion will be saved so that it can be accessed at any time, but what you post to the group will be seen by all readers in unedited form. It is up to you to engage in friendly conversation or debate. Personal attacks are sure to cause you to be flamed by others and are not encouraged. The use of USENET technology for class discussion is an experiment which I intend to announce to the Trinity University community, so other faculty and students may occasionally read and contribute to tu.csci2322. This portion of each student's grade is subjectively determined by such things as correctness of answers to questions and quality of contributed discussion threads and other measures.
SCHEME LANGUAGE TOPICS
Notation as a tool of thought
Notation as a means of communication
Syntax
Semantics
Verbalizing notation
Data and operators
Procedures and recursion
Data abstraction and numbers
Data driven recursion
Locally defined procedures
Abstracting procedures
Sets and relations
Vectors and arrays
Sorting and searching
Mutation
Object-oriented programming
Macros
Continuations
COMPUTER ORGANIZATION TOPICS
Data representation
Memory organization
Computer arithmetic
Processors
Registers
Data paths
Input/Output
Register machines
LISP machines
Interpreters
Compilers
PROGRAMMING METHODOLOGY TOPICS:
Abstraction with data
Data structures
Abstraction with procedures
Procedure evaluation
Recursion
Operators
Data directed programming
Object oriented programming