MSc course: code CG20

Module title: Introduction to Artificial Intelligence Programming

Number of credits: 20
    (I.e. students are expected to devote about 13 hours per week of
    their time to this course.)

Module Coordinator: Prof. Aaron Sloman (Email A.Sloman@cs.bham.ac.uk)

Objective:
The course introduces both general and AI-specific programming concepts
and techniques, based on an advanced multi-purpose programming language
designed for AI research and development, in a sophisticated Unix-based
software development environment.

Through first hand programming experience students will learn concepts
and techniques potentially relevant to a variety of areas of AI,
including cognitive modelling, planning, problem solving, vision,
natural language processing, learning and also relevant to many areas of
software engineering, including design of friendly interfaces. The
course also provides a concrete basis from which to address
philosophical questions about whether minds are computational systems.

Prerequisites:
The course is taught in such a way that students with and students
without previous programming experience can benefit. Students who
already have a degree in AI or who have substantial AI programming
experience in Lisp or Pop-11 may find the course too elementary.

Teaching method:
The teaching is based largely on practical work on Unix workstations in
the School of Computer science along with some lectures providing
background and overview materials. The practical work culminates in a
mini-project in the last few weeks of the course. In addition to
programming and attending lectures students are expected to do
substantial reading in their own time to make up the 13 hours per week
expected of each student. The practical work is partly in scheduled
laboratory sessions with demonstrators present, and partly done in the
students' own time. Most of the practical work done on the course is not
assessed, as its purpose is solely educational.

Assessment method:
Towards the end of the course, each student selects a topic for a
mini-project, which must be approved approved by the course tutor.
The course is assessed by the report on the project: up to 4000 words
plus program code and other appendices.


Course content:

Depending on the ability and speed of learning of students, they will
have opportunities to learn about the following topics (not necessarily
in this order):

o   Brief Introduction to Unix and its file structure, use of
    electronic mail, reading and posting news, printing files, reading
    "man" files, logging in and out, and use of a window manager running
    under the X window system.

o   Use of a sophisticated editor designed for developing, testing
    and browsing software and documentation.

o   Programming in a powerful general purpose programming language with
    an integrated development environment.

o   Depending on the time available and the rate of progress of
    individual students, they will have opportunities to learn about
    a wide range of programming data types, including various kinds of
    numbers, strings, words, lists, patterns, simple databases, arrays,
    properties, procedures, and object oriented class hierarchies.
    They will also learn to use a variety of control structures,
    including procedure calls, recursion, various kinds of iteration,
    conditionals, local variables, method invocation and
    forward-chaining condition-action rules.

o   Design of "intelligent agents" using object-oriented and rule-based
    techniques.

o   Representational Issues.  Alternative ways of representing the same
    information.  General purpose (logical) vs problem-specific
    (non-logical) representations. The flexibility of lists and pattern
    matching for representing and relating very varied  forms of data
    involving rapid structural change. Relationships between
    representation and efficiency.

o   Control Issues.  The importance of search in intelligent systems.
    Varieties of search strategies and how to represent them. The use of
    heuristics to reduce search.

o   Specifying design objectives, implementing and testing programs, and
    writing reports on programs.

Not all students will be able to cover all those topics.


Suggested Reading:

There is no set textbook for the course, but the first two items will
be particularly useful.

Sharples, M. et. al. (1989). Computers and Thought. MIT Press.

Sloman, A. Pop11 Primer. Available from School of Computer Science
   Librarian. (cost 4 pounds)

Thornton, C. & du Boulay, B. (1992). Artificial Intelligence Through
    Search. Kluwer Academic.

Stan Franklin (1995), Artificial Minds, MIT Press

Russell, S. & Norvig, P. (1995). Artificial Intelligence, A Modern
   Approach. Prentice Hall

The course also uses a large amount of online documentation and teaching
material, and a booklist will be handed out at the beginning of the
course.