The general objectives for Com S 342 are divided into two parts: a set of essential objectives, and a set of enrichment objectives. The essential objectives will be helpful for your career as a computer scientist; hence we want to help you to master them. You are encouraged to explore the enrichment objectives both for their own sake and because learning more about those will help deepen your understanding of the essential objectives.

Essential Objectives

In one sentence, the main objective is that you will have a deep, working knowledge of the functional paradigm and the key ideas used in modern programming languages. In more detail the essential objectives for Com S 342 are that you will be able to:

You will be permitted to use the textbook and course notes for tasks involving programming, but not during tests. On tests you may be permitted a small amount of reference material.

The functional style is one answer to the question: ``What are good ways to program?'' It also represents one major way to organize a programming language for parallel processing. Even if you do not become a programmer, the ideas of functional programming (function abstraction, referential transparency, etc.) have important applications in all areas of Computer Science (such as software specification, algorithm design, and of course in manipulation and specification of programming languages). These ideas also have application in many other contexts such as mathematics and engineering.

Data abstraction is a key idea for allowing programs to be easily modifiable. It forms the basis for the object-oriented style of programming.

One specific benefit of achieving these objectives is that your understanding will help you learn new languages quickly, by mapping key ideas and concepts from this class into the new language's syntax and semantics. For example, Java and other object-oriented languages (such as Smalltalk-80) use the ``indirect model'' of storage, which will be unfamiliar to you if you've programmed only in C++, C, Pascal, or Ada (all of which use the ``direct model''). We will study this model in detail, and you will gain practical programming experience with it, using Scheme. Learning this and other key ideas will also help you read (and write) a new language's reference manual.

More importantly, understanding of fundamental concepts and run time implementation ideas will help you to better understand whatever language you program in; this will help you program more effectively. Being able to program better will also give you increased job satisfaction.

Enrichment Objectives

Enrichment objectives could be multiplied without limit, but the following seem most important or most easily taught using the course text. Following each of the enrichment objectives is a brief justification.

Last update $Date: 1998/08/20 19:57:39 $
Gary T. Leavens