Project Proposal by Martin Stacey


Progamming language advisor expert system

Software

Object oriented language OR production system language OR expert systems shell OR Prolog

Covers

Symbolic AI: knowledge elicitation, knowledge representation, reasoning

Skills Required

Knowledge and interest in AI and technical features of programming languages.

Challenge

Conceptual ??? Technical ???? Programming ???

Brief Description

There are a lot of programming languages out there to choose from. Choice of programming language for a particular project is often determined by hype (see for instance the early history of Java) or prejudice (see the widespread belief that the programming language syntax ought to look like C), when the hype is misleading or the prejudices unfair and harmful. Many languages with strong advantages like a clear conceptual model or being easy and efficient to program in never got the hype. But we can't know all about lots of languages, so we could do with some expert advice on what to choose according to the features and advantages that matter to us for a particular project.

Your challenge is to build an advisory system for recommending programming languages according to the needs and priorities of the user. People who know something about programming languages should be available in a Faculty of Technology.

Programming languages generate strong opinions, based on varying degrees of knowledge and experience and influenced by preferences and by interest in and experience of particular kinds of application. The way to make this an interesting (and potentially useful) project is the challenge of finding ways to incorporate the views of different and conflicting experts. [What to do to combine knowledge of different and possibly conflicting experts has been a topic in artificial intelligence, so there is research to draw on.] Ideally the system should make use of weightings according to degree of expert knowledge and enable the user to see the author of particular rules and judgements. [Some work notably by Mark Stefik has been done on how to treat AI systems as authored text.]

The project will have a very different character according to the programming language you use. Learning Prolog would be a challenge but would be a very valuable and mind-broadening part of a computer scientist's education.

Variants

The project could prioritize the development of the reasoning engine for combining expert knowledge from different sources to generate ratings and judgements.

The project could prioritize the knowledge acquisition and knowledge management process, developing methods for obtaining, describing and structuring expert knowledge about programming languages.

The project could focus on mapping the space of programming languages based on a detailed comparative study of programming languages. Here part of the challenge would be figuring out how to describe and structure the map of the space - to make this a coherent navigable structure and thus a real contribution to knowledge, rather than a collection of comments.

If you like you can apply the CommonKADS development methodology to the development of your system, and prioritize analyzing the structure of the decision-making process (or what ought to be the decision-making process if people actually used the knowledge you're accumulating).


Back to