# SYLLABUS

### Spring 2017

Professor:
Roy M. Turner, Associate Professor of Computer Science
Office hours:
TTh 1–2
Office:
Boardman 240
Phone:
207-581-3909
Email:
rturner@maine.edu
Class meetings:
TTh 2–3:30, 136 Boardman Hall
Course website:
MaineSAIL.umcs.maine.edu/COS470
Textbook:
AI: A Modern Approach (3rd ed.), Stuart Russell & Peter Norvig. Hardcover at (UMaine Bookstore, Amazon), paperback (Amazon; not completely sure this is exactly the same, so you’d have to take your chances); rental (Amazon); online (purchase or rental, Amazon; also via VitalSource (vitalsource.com).
Class communication:
Blackboard and the course website will be used to disseminate and store course information; Blackboard will be used for grades. Slack (slack.com) will be used for interactive communication (group cos470umaine.slack.com); more information will be provided in class. And, of course, you can contact me via email. I will also use email to contact you if need be, so it is important that the email address Mainestreet has for you is accurate.
If you have a disability for which you may be requesting an accommodation, please contact Disabilities Services, 121 East Annex, 581-2319, as early as possible in the term.
Emergency planning:
In the event of disruption of normal classroom activities due to a disease outbreak or other long-term emergency, the format of this course may be modified to enable completion of the course (e.g., via Web-based instruction). Should such an event occur, you will be provided a revised syllabus via email and the course Web site that will supersede this version; the revised syllabus will detail the alternative format of the course.
Sexual violence/discrimination policy [University wording]:

The University of Maine is committed to making campus a safe place for students. Because of this commitment, if you tell a teacher about an experience of sexual assault, sexual harassment, stalking, relationship abuse (dating violence and domestic violence), sexual misconduct or any form of gender discrimination involving members of the campus, your teacher is required to report this information to the campus Office of Sexual Assault & Violence Prevention or the Office of Equal Opportunity.

• For confidential resources on campus: Counseling Center: 207–581–1392 or Cutler Health Center: 207–581–4000.
• For confidential resources off campus: Rape Response Services: 1–800–310–0000 or Spruce Run: 1–800–863–9909.
• Other resources: The resources listed below can offer support but may have to report the incident to others who can help:

For support services on campus: Office of Sexual Assault & Violence Prevention: 207–581–1406, Office of Community Standards: 207–581–1409, University of Maine Police: 207–581–4040 or 911. Or see the OSAVP website for a complete list of services at http://www.umaine.edu/osavp/

Overview:

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,1 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 Her.

But 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.

Objectives:

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 you to understand what AI is and how it is used in its expanding areas of application. It will help you prepare you to understand how AI can be used in your 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, you 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, you should have a general knowledge of the field of AI. You should be able to recognize when AI techniques are necessary to solve a problem. You should be able to apply standard AI techniques to solve problems. You should be able to evaluate new techniques you encounter. You should be knowledgeable enough to take an advanced course in AI or one of AI’s subfields. You will also be fluent in using Lisp to write AI programs. As or more important, you will be prepared to understand the “brave new world” that is likely to be permeated by AI technology in the coming years.

The course also addresses some of the Student Outcomes for ABET accreditation:

• (a) An ability to apply knowledge of computing and mathematics appropriate to the program’s student outcomes and to the discipline;
• (b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution;
• (c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs; and
• (f) An ability to communicate effectively with a range of audiences2
Assignments & tests:

Assignments for all students. The course includes both programming and written assignments. The purpose is to increase and deepen your understanding of the concepts covered in class and to give you a better understanding of the unique challenges and techniques of AI programming and knowledge representation.

The course also includes a semester project. The project will give you a chance to delve into some area of AI in depth. The project is described in more detail in an accompanying document. It is possible to do the project by yourself or with other students.

You will also create a blog for this course. Blog assignments will given from time to time to give you a chance to think more deeply about what is being covered and to give feedback about the course. I will describe the blog in more detail in class.

Assignments for COS 570 students. In addition to the assignments for all students, COS 570 students will have additional assignments. These will typically be either, additional programming assignments or exercises from the book, assignments to read a scientific paper or a chapter in the text and prepare a report or blog entry on it, and so forth. In addition, if you are a COS 570 student, your work is expected to be of higher quality and with more depth than 470 students, and you will be graded accordingly.

Tests. There will be two prelims and a final exam.

Grades will be assigned based on written homeworks, programming assignments, the course project, your blog, and the tests. Grades will be assigned based on the following percentages:

 In-class work, homework, blog, and programming assignments: 25% Project: 25% Prelim I: 15% Prelim II: 15% Final exam: 20%

Grades will be assigned in the usual manner: 90–100 is an A, 80-89 a B, etc., with anything below 60 being an F. Plus and minus grades will be used, and grades will be assigned based on the guidelines published in UM’s Handbook for the Faculty of Instruction, paraphrased here:

A: Top-quality work. A definite encouragement to the advanced student that he or she is potentially a very good prospect for graduate work insofar as ability to master material, but not necessarily to pursue research, is concerned. A is given to students who excel in many ways in meeting the course objectives.

B: Indicates that the student has excelled in meeting the course objectives in some way, such as exhibiting superior insight into and mastery of the material or taking the initiative in going beyond what the instructor suggests for satisfactory work. A student should find it necessary to achieve a B rather than merely to receive it as an average student. B is a grade for students who stand out above those in the C group. B means that the student’s work is particularly commendable and praiseworthy.

C: A respectable grade for any undergraduate student in any course. It implies that the student has been successful in meeting the course objectives. It implies approval by the University of the student’s progress toward graduation. It represents a satisfactory level of work for both non-major and major students. [Note that a C is not a satisfactory grade for a graduate student!]

D: Low-level passing work for any undergraduate student. It should warn the student that he or she will be unlikely to achieve success in the next course of a sequence unless greater effort is forthcoming. D indicates that the course objectives have been poorly met as a result of lack of work or insufficient ability. The D grade warns the student that unsatisfactory progress is being made toward a college degree. The D grade is a failing grade for graduate students.

F: A failing grade for all students.

A word about how I grade on tests is in order, especially if this is your first class with me. In an effort to grant more partial credit, I grade each question on tests qualitatively, using the following grades, where $$n$$ equals the points possible for a question:

✓ or ok $$n$$ C+: $$0.78n$$
A+: $$0.98n$$ C: $$0.75n$$
A: $$0.95n$$ C-: $$0.72n$$
A-: $$0.92n$$ C/D: $$0.70n$$
A/B: $$0.90n$$ D+: $$0.68n$$
B+: $$0.88n$$ D: $$0.65n$$
B: $$0.85n$$ D-: $$0.62n$$
B-: $$0.82n$$ F: $$0.60n$$
B/C: $$0.80n$$ A number $$x$$: $$x$$
Class format:

For the most part, this will a traditional lecture-oriented course, since there is a large amount of information that needs to be transmitted in a relatively short period of time. However, some classes may be in the active-learning or “flipped classroom” style, as the material warrants. Additionally, online lectures and material, both mine and others’, will be assigned from time to time.

Each 75 minute class will usually be broken into 1 hour of lecture/active learning + 15 minutes for open discussion, presentation/discussion of “current events” in AI, quizzes, or other kinds of learning.

Make-up classes:
I will likely be out of town for at least two classes this semester. I will announce this ahead of time, and there will likely be no classes those days. However, I may schedule make-up classes, prepare online lectures, or have guest lecturers to make up for the missed time.
Programming languages:

Lisp. Historically, symbolic artificial intelligence has been done predominantly in the Lisp programming language. Although it is the second oldest programming language in use, it remains the premier language for symbolic and functional programming. Consequently, all programming assignments in the symbolic AI portion of the course will be done in Common Lisp. This also helps achieve one of the School’s goals of exposing students to a range of programming languages.

I will not devote class time to Lisp, but a help/review session will be scheduled early in the semester to summarize the features of the language. There are very good textbooks available, both online and in hardcopy form (some free),3 and there are also online tutorials. In addition, Guy Steele’s Common Lisp: The Language, which is the definition document for Common Lisp, is available online as well, although this should be used as a reference book, not a textbook.

You may use any Common Lisp you like. The Lisp you use, however, must be compliant with Guy Steele’s Common Lisp: The Language (2nd edition). If you are uncertain about whether a Lisp you have access to is a Common Lisp, ask me. Lisp interpreters (and/or compilers) and integrated development environments are available free online. I suggest using either Franz, Inc.’s free version of Allegro Common Lisp (ACL) or Steel Bank Common Lisp (SBCL). A separate information packet discusses in more detail how to acquire and use Lisp.

With respect to the integrated development environment (IDE) to use, I strongly suggest using GNU Emacs with Slime (for SCBL) or some other interface package (for ACL, e.g.). Though the learning curve can be somewhat steep, it will be well worth your time; Emacs and Lisp have a very long history together (Emacs is mainly programmed in a version of Lisp, and Lisp's first IDE was a version of Emacs), and consequently they play nice with each other. I would not recommend Eclipse, I certainly would not suggest not using an IDE, and never, ever write your code in a word processor (but you knew that already, right?).

Python. For various reasons, however, most of the recent work in neural networks and deep learning has been done in other languages, and consequently libraries and techniques are available for those languages that are difficult to find in Lisp. Consequently, the portion of the course having to do with deep learning and neural networks will be done in Python, a language for which there exist a large set of extremely good libraries for the purpose.

Project languages. For their projects, the students will be able to choose one of these two languages for any programming that is needed. (Other languages will be considered on a case-by-case basis, should that be needed.)

Robots:
Some simple, low-cost robots are available for your use during the course. These are from Georgia Robotics, and consist of a Scribbler’’ robot base and an IPRE Fluke add-on board that provides some additional functionality. You should check a robot out from me to use during the semester—some programming assignments will require this, and you may want to use the robot in your final project. (If your final project is on multiagent systems and you need more than one robot, please discuss this with me.) You are responsible, of course, for any damage to the robot. They are programmed in Python, and a Lisp interface to the robots may be made available.
Plagiarism and cheating:

Plagiarism and cheating are violations of UM’s Student Conduct Code and will not be tolerated in this class. Such behavior will result in at least the penalty of a zero for the affected assignment/test, and possibly an F in the course. In addition, such an offense may be reported to the appropriate offices for disciplinary action (which can include expulsion from the University).

It is sometimes a fine line between collaboration that is acceptable (or even desired) on a programming project or homework and cheating. I encourage students to talk together about the course and the course assignments. However, all work turned in, with the exception of group projects or group assignments (if any) should be your own. If you feel that the ideas behind some portion of an assignment are due to another student, you should note that in the assignment you turn in. If you have a question about what constitutes cheating, you should talk to me in advance of turning in the assignment.

And, of course, no collaborative work is permissible on prelims or the final exam!

This class will move fast. You should read the assigned readings before coming to the classes for which they are assigned, or you risk falling behind. All readings are required and may be the subject of test questions.

Readings for the symbolic AI portion of the course will be from the Russell & Norvig text. Readings for the deep learning/neural network part of the course will be assigned from online sources.

Class attendance:

Attendance at all classes is expected. There is a substantial amount of material that will be presented in class that is not covered in your book, so it is to your advantage to attend class. In addition, some classes will have participatory components that you will not get credit for if you do not attend. I strongly encourage participation in class discussion. If you take part in class discussion, I will get to know you and be much better able to gauge your understanding of the material, and hence, I will be better able to give you the benefit of the doubt when grading. Class participation greatly helps clarify and reinforce in your mind the material being presented.

If you have to miss a class, you are responsible for finding all the information presented from fellow students, including any announcements that may have been made.

Late policy:

The due date for each assignment will be announced when assigned. All assignments are due by 4:30 pm of the day due if the assignment is a hardcopy assignment (it is easier for all concerned if you turn the assignments in class that day, however), midnight if it is electronic. Late penalties, unless otherwise announced, will be a letter grade a day, and assignments will not be accepted more than 5 days late. Saturdays, Sundays, and holidays do count as days late. If you need to hand a hardcopy in on a weekend or holiday: (1) send an electronic copy to me at the time you want to hand it in and (2) give me the hardcopy the following business day.

My policy is to grant no extensions unless you have contacted me well before the assignment is due and you have a valid excuse that prevents you from completing the assignment. I realize that it is not always possible to predict when something will come up. In such cases, see me as soon as possible.

Topics:
This list of topics is tentative and subject to change as the course progresses. It is also highly ambitious: we likely won’t have time to cover everything! (AI is a huge and rapidly-changing field.)
1. Introduction
1. What is AI?
2. Background/history
3. Spin-offs
4. High-level overview of field
5. State of the art
2. Intelligent agents: Perceive–reason–act loop
3. Reasoning
1. Fundamental: Search
2. Specialized symbolic search
1. Constraint-based reasoning
3. Neural networks
1. Perceptrons
2. Feedforward networks, Boltzmann machines, autoencoders
3. Backpropagation
4. Deep networks/deep learning
4. Knowledge-based reasoning
1. First-order logic and theorem proving
2. Rules and rule-based reasoning
3. Blackboard systems
4. Structured knowledge: Frames, Cyc, Conceptual Dependency
5. Description logic
5. Reasoning with uncertainty
1. Probability & certainty-factors
2. Bayesian networks
4. Perception
1. Symbolic
1. Sensor processing overview
2. Natural language processing overview
2. Neural
1. Convolutional networks
2. Recurrent networks
3. Long short-term memory (LSTM) networks
5. Machine learning
1. Reprise: Deep learning
2. Symbolic approaches
6. Multiagent systems
7. Societal/ethical concerns
1. Ensuring proper behavior, avoidance of hacking
2. Job displacement & societal disruption
4. Danger of displacement of humanity
8. The future of AI

## Footnotes:

1

Indeed, it can be argued that Google is and always has been essentially an AI company; in fact, one of the authors of the textbook is Research Director at Google.

2

I realize that “a, b, c, f” is not how one lists things; these are the identifiers of the particular student educational objectives ABET describes.

3

I highly recommend Paul Graham’s ANSI Common Lisp or Peter Seibel’s Practical Common Lisp, which is available for free at www.gigamonkeys.com/book.

Created: 2017-01-14 Sat 11:02

Validate