UMaine COS 140: Foundations of Computer Science

Time: TTh 2-3:15 Instructor: Roy M. Turner
Location: 116 Neville Hall Contact:

Welcome to the UMaine COS 470/570 home page. The latest iteration of the course is being taught now, in Spring 2019

It seems as if it is impossible to pick up a magazine, newspaper, or even technical journal recently without stumbling upon some article referencing artificial intelligence (AI). It is arguably the fastest-growing area of science/technology at the moment, thanks in large part to the research and development efforts of some of the largest and best-known corporations in the world. Image recognition, personal digital assistants, self-driving cars, human-level performance in extremely computationally-hard games such as Go, machine translation, natural language processing, planning space missions, deep learning, data mining, and, of course, web search are all AI applications that either are or that will soon be common in our everyday lives. AI technology is already economically important, and it will be a dominant feature of the economy for the foreseeable future. And, of course, it is a staple of science fiction books and movies, from Forbidden Planet to 2001: A Space Odyssey to Ex Machina.

What is AI? One way to define AI is as the part of computer science concerned primarily with giving computer programs abilities similar to those human abilities that require intelligence. Examples include: playing games, proving theorems, planning courses of action, and solving problems. Another definition is that AI is concerned with providing computer programs with abilities that, while they may be simple for humans or even other animals, are extraordinarily difficult to achieve using standard computer science techniques. Examples include understanding and generating a natural language (e.g., English), recognizing an image, commonsense reasoning, and learning. Still third definition is that AI is the field seeking to create non-biological human-level (or above) intelligence. These “definitions” of AI are really closer to aims of the field or goals of researchers in the field.

Another part of AI has to do with examining, through the use of computers, intelligence itself. AI is a component of the interdisciplinary field of cognitive science and overlaps significantly with psychology, neuroscience, linguistics, sociology, human-computer interfaces, organization design, and philosophy, among other fields.

This course. AI is an extremely broad and diverse field—far too broad to cover completely in a semester-long course such as this one. Consequently, the overall goal of this course is to give the student an overview of the field in general while at the same time providing depth in the most fundamental areas. The course aims to prepare the student to understand what AI is and how it is used in its expanding areas of application. It will help prepare the student to understand how AI can be used in his or her own work, to take advanced courses in the field, and to begin working on AI research projects. It is a hands-on course; there is some sentiment in the field that to truly understand AI techniques, one must implement them. Thus, the student will have both the chance to program a variety of AI techniques as well as to concentrate on a semester project.

By the end of the course, the student should have a general knowledge of the field of AI. The student should be able to recognize when AI techniques are necessary to solve a problem. He or she should be able to apply standard AI techniques to solve problems, as well as evaluate new techniques encountered. He or she should be knowledgeable enough to take an advanced course in AI or one of AI’s subfields. The student will also be fluent in using Lisp to write AI programs. As or more important, he or she will be prepared to understand the “brave new world” that is likely to be permeated by AI technology in the coming years.

Course versions. The class has two versions: COS 470 is the undergraduate course, and COS 570 is the graduate version. These are taught simultaneously in the same classroom and differ primarily by the assignments given to the students.

Prerequisites. Aside from the prerequisites listed in the catalog, the class assumes that you can program and that you have some maturity with respect to the study of computer science. The class is open to majors and non-majors alike. If you do not have the prerequesites listed and you are still interested in the course, please contact me to discuss it.