COMPUTER SCIENCE 2322

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