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