?so /usr/aaron/para.rno
?he 'PROJECTS''Page %'
?fo 'A. Sloman & S. Hardy''\*(DY'


.ce2
POSSIBLE PROGRAMMING PROJECTS
-----------------------------


.pg
The range of possible projects in Artificial Intelligence
is infinite. What follows is a list of suggestions to
illustrate the range. Some of them have been done in
previous years. If you would prefer to work on a topic not
mentioned here, please discuss it with your tutor. You
may wish to work on a joint project with another student.
.pg
All the topics are very open-ended. That is, you can go
on indefinitely adding to the problems your program might be
expected to solve.
.pg
Suggestions for additions to this list will be gratefully received.
.sp2
.ce2
Topics
------
.pg
1. An Eliza-like program.  This could extend the ELIZA
demo to include a wider variety of cues and responses. You
could try to give the program a better grasp of English grammar.
.pg
2. A conversational program which accepts information about some
topic - for example geography, or a family tree, or the layout of
furniture in a room, or train time-tables, and which can answer
questions. The interaction language could either be a subset
of English or, less ambitiously, something like data-base patterns.
.pg
3. A program which accepts simple English descriptions
of pictures then draws appropriate Turtle pictures. For example
descriptions might be:
.br
"A SQUARE INSIDE A BIG RECTANGLE
TO THE RIGHT OF A SMALL TRIANGLE".
.br
"A SQUARE ABOVE A TRIANGLE SHARING
ONE SIDE".
.br
The sort of description given in geometry problems:
"D IS A POINT ON A LINE AB. CD IS PERPENDICULAR TO AB, AND THE ANGLES ABC AND
BAC ARE EQUAL"
.pg
4. A program which analyses a Turtle picture and produces an
interpretation. This might be either a description to be
printed out, or a collection of assertions in the data base,
as in the PICTURES and SEEPICTURES demos.
The information in the data base could be used to answer questions about the picture.
(If you don't want to write the programs to find the lines and
junctions you could use the library package described in the
SEEPICTURES demo to do the preliminary analysis of
a picture you have drawn. The information is stored in the
database, where it could be accessed by functions written by you.)
.pg
5. A program which analyses the state in some game (chess, draughts,
noughts and crosses, battleships, etc.) and selects a good move.
This could evolve into a program which plays the game.
.pg
6. Completing a jigsaw puzzle.  Think of a puzzle made of
coloured pieces, with square, rectangular or triangular shapes.
The task is to assemble the pieces to form some specified pattern.
.pg
7. A program to find its way out of a maze.  (You could use the
Turtle to draw the maze).
.pg
.tp2
8. A program which draws "interesting" mazes, that is mazes
which are not too easy, not too difficult.
.pg
9. Choose a selection of stylised English utterances (newspaper
headlines, railway station announcements, teachers' comments on
report forms, limericks, etc.) and write a program which will generate or
analyse such utterances.
.pg
10. A program which learns to recognise simple shapes (squares,
triangles, faces made of squares etc.) by being given pictures
and told what they are.
.pg
11. A blocksworld program which can carry out commands and
answer questions. (I.e. extend the BLOCKSWORLD
demo.).
.pg
12. Extend the NUMBERS demo to include more 
aspects of a child's counting behaviour. For example make it answer
more questions ("which numbers are between two and seven?",
"what is two times three?" etc.).
.pg
13. Write a program to do some logic.  It could use truth-tables
to test simple arguments for validity. Or it might be given some
axioms and rules and then asked to prove theorems derivable
from the axioms in accordance with the rules.
.pg
14. Write a program to create "magic squares" (i.e. a square
array of numbers all of whose rows, columns and diagonals add
up to the same total.
.pg
15. The missionaries and cannibals puzzle, or some other puzzle.
.pg
16. A simple translation program - to translate bits of English
into German or vice versa.
.pg
17. A program to analyse the harmonies or rhythms in some piece
of music.
.pg
18. A program which solves problems about family relationships,
for example "Is your mother's grandfather's wife your sister's grandmother's
mother?"
"Can your uncle be a bachelor and an only child?"
.pg
19. A variation on a jigsaw puzzle project. Design a program which
knows about some words (e.g. knows whether they are nouns, verbs,
adjectives, etc.), and which can be given a sentence with one or more
words missing. Its task is to decide which of the words it knows
about could fit into the gaps. E.g. if it knows the following
words:
 	CAT KICK OLD IS
.br
then it should be able to select suitable fillers for the gaps in:
 	[THE DOG BIT THE ... ]
 	[THE ... MAN KICKED THE DOG]
 	[THE DOG ... THE MAN]
.br
How much grammar would the program need to know?
See also No. 25.
.pg
20. A program to do sums like a young child - adding and subtracting
(and multiplying?) using columns representing hundreds, tens, units etc.
Designing the program should lead to theories about the kinds of mistakes
children are likely to make and explanations of such mistakes.
.pg
21. A program to solve simple crossword puzzles (e.g. from children's puzzle
books.).
.pg
22. Design a program to recognise and describe Turtle pictures with  curved
lines.
.pg
23. Look at the pictures in a child's colouring book.  Try to analyse some
of the problems in recognising the objects depicted. Design a program to cope
with some of these problems.
Alternatively, look at the problems involved in copying the pictures,
or colouring them in (e.g. which bits of the picture should have the
same colour.)
.pg
24. A program to copy turtle pictures in something like
the way a child might (e.g. find important sub-structures and try to
draw them. What problems of planning, etc., would this give rise to?)
.pg
25. A slightly different version of No 20. A program which can
take a list containing a bit of POP11 code, with a
gap, and select a suitable word or symbol to fill the
gap. E.g. what is missing from:
 	[IF X > Y ... X ELSE Y CLOSE]
.pg
26. A program to teach elementary programming in POP11. It should pose
problems like those in our exercise sheets, read in the students' answers, and
give advice and criticism.
(For example, it could start with simple arithmetic expressions,
and look for errors of bracketing, missing out operators, etc.
Or it could look at simple turtle programs, looking for syntactic
mistakes, or "silly" features, like two TURN commands without
any DRAW or JUMP in between.)
.pg
27. A program to translate between English number names and POP11
integers. E.g. given:
 	[THREE HUNDRED AND TWENTY FIVE]
.br
it should respond with:
 	325
.br
and vice-versa.
.pg
28. A program which is given information about roads in a town and which can
plan routes from one location to another. How should the layout of the town be
represented? An extension of this would be to add information about an alternative
method of transport, e.g. underground, or bus-routes, and have the system
capable of planning a route depending on how much time you've got, whether you
can afford taxis, whether you suffer from claustrophobia, etc.
.pg
29. Write a program to help people identify the POP11 functions they need for
some programming task. You'll need to choose some of the functions mentioned
in the SYSVARS demo and index them according to what they do.
E.g. how would you tell whether someone needed to use :: or <> ?
When would you advise someone to use APPLIST, or MAPLIST, or REV?
