perm filename PROJ.DOC[FOO,LMM] blob
sn#099489 filedate 1974-05-01 generic text, type C, neo UTF8
COMMENT ā VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 CS 206 PROJECT CANDIDATES
C00008 00003
C00009 ENDMK
Cā;
CS 206 PROJECT CANDIDATES
CHESS - Rewrite and modify an existing chess program
This may not be a very good project, since the existing
program is written in BLISS, a machine oriented language
designed for writing efficient systems programs. In particular,
the program uses bit packing to store board positions.
THEOREM PROVER - Modify an existing theorem prover
This one is a little better, since the original program is
in LISP. As it stands, the prover uses resolution to solve
problems in the simple domain of the propositional (as opposed
to the predicate) calculus.
MINI-LINGUISTICS - Modify a small english speaking program
The original is also in LISP. The program conducts a very
limited English language conversation with a human partner.
COMPILER - Improve and extend an existing LISP compiler
The compiler (LCOM4, written in LISP) handles only basic LISP.
Add on things like the ability to compile arithmetic and logical
expressions.
SEQUENCE EXTRAPOLATOR - Modify an existing one
The (BLISS) program predicts the next term in a sequence, given
the preceding ones, apparently by constructing a grammar which
explains them.
GRAMMATICAL INFERENCE - Write a program that fits a grammar to data
The program is to accept a number of strings (of characters) as
input, and to invent a simple grammar (set of productions) which
is capable of producing them. The input consists of two kinds of
strings, those which are in the grammar, and those which are not.
The constructed productions must be capable of generating the former,
but not the latter.
SIMULATION INTERPRETER - Write a program for doing simulations
The input is to be a description of a number of interrelated processes,
along with a description of the relations. The simulation should be
event oriented, i.e. at each step the interpreter decides what major
event happens next, rather than mindlessly stepping through small
fixed time incriments.
ALGEBRAIC SIMPLIFIER - Write a program that simplifies algebraic expressions
The program is to accept algebraic expressions (probably S-expressions
using operators like PLUS, TIMES, SQRT etc.), and to simplify them as best
it can, by removing identities and nulls, expanding, combining terms, etc..
UNIFICATION ALGORITHM - Write a program to decide if two expressions match
The program is given two forms, e.g. (F (SUM A B) C) and (F D (G E)),
and should find variable assignments which will cause these to be
equivalent. In our example D=(SUM A B) and C=(G E) is a solution.
Since the basic problem is probably too simple, three versions are wanted,
one being fast, one short and one simple (i.e. easily comprehensible by
people).
GRAPHICAL INFERENCE - Write a program that thinks about pictures
Input is a list of descriptions of objects, as a set of 3 space
points connected by line segments, (e.g. a cube, a pyramid etc.),
and some unidentified figures, which are assumed to be defective
versions of some of the prototypes. The program is to identify the
unidentified figures, and to fill in missing segments, remove
spurious ones, and move out of place points in order to make them
match the appropriate prototypes.
OTHERS - Ask Cordell about it