This course is about programming and artificial intelligence. Depending on what school you're at, that could mean robots, neural networks, chess playing, etc.

At this school, this course is about

In particular, the main topic areas of this course are

Symbolic Knowledge Representation

This will include

Software Engineering

Software engineering studies and manipulates the software development process. Programming is just one small part of that process:

This is a course on programming, not the entire development process, but it's about programming as a part of this process. This is not a course about throw-away code. Your coding will be evaluated on how well it supports testing and validation, team development, maintenance, and extension.

There are three fundamental criteria by which code is measured:

For this class, the most important feature of your code is clarity.

Scaling Up

Large knowledge-based systems need lots of knowledge. That means you need to be able to build knowledge-management tools that many people can use to enter and manage large bodies of knowledge.

This class will discuss the following techniques for knowledge-management:

Large knowledge-based systems also need to work in a timely fashion. As knowledge bases get large, the simple approaches become too slow for practical use.

Speeding Up

This class will discuss the following techniques for speeding up knowledge-based systems:

Sending out

Delivered knowledge-based systems have to be maintainable, robust, and accessible to users.

Robustness means (1) the code as delivered works as promised, over a wide variety of situations, and (2) continues to work as promised when changed.

All systems have to be changed, but change is especially rapid and dramatic in knowledge-based systems, which are often the first of their kind in some application area.

The problem is ensuring the changes don't do more harm than good.

This class will discuss the following techniques for maintaining correctness under constant change are:


Comments? Send me email.