|
CISC 280: Program Development Techniques
Catalog Description:
Structure and interpretation of computer programs. Different paradigms
(mind sets) that programmers use: procedural, functional, logic, and object
oriented programming. Top down design, stepwise refinement, procedural
abstraction, and information hiding concepts as applied to the program
development process.
Current Texts:
Structure and Interpretation of Computer Programs
Abelson and Sussman
McGraw-Hill, 2nd Edition, 1996
Goals:
Have a good feel for the elements of style and aesthetics of programming.
Have command of the major techniques for controlling complexity in large
systems. Know how to build abstractions to hide details and to separate
specification from implementation. Establish conventional inerfaces to
allow the creation of standard, "mix and match" modules. Create new languages
for describing a certain class of designs, emphasizing some things and
downplaying others. Feel secure in reading and modifying large programs
written in exemplary style. Be able to use modern approaches to dealing
with time computationally (objects with state, functional programming,
lazy evaluation, concurrency, nondeterminism).
Content:
- Basic
Concepts & Preface, Forward
- Substitution
model
- Procedures
and processes, repetition
- Procedures
as first class objects
- Higher-order
procedures
- Symbolic
data
- Multiple
representations
- Generic
operators
- Mutable
objects, state
- The environment
model of evaluation
- Concurrency
- Streams
- Interprocess
communications
- Multiprocessing
- The Metacircular
Evaluator
Prerequisites:
A minimum grade of C- in CISC 220 (Data Structures), and MATH 241 (Analytic Geometry and Calculus
A).
|