|Location:||2302 Centennial Hall, UW-La Crosse|
|Times:||Monday, Wednesday, Friday, 11:00-11:55am|
|Office:||Wing 210 (ext. 6810)|
|Email:||mallen <AT> uwlax <DOT> edu|
|Office hours:||Monday and Tuesday, 4:30–6:00pm
Thursday and Friday, 9:00–10:30am
|Class web page:||http://cs.uwlax.edu/~mallen/index.php/cs452|
Artificial Intelligence and Pattern Recognition
An introduction to the fundamental principles of artificial intelligence. Topics include the biological basis for intelligence, classification of object descriptions and pattern recognition, search strategies and game trees, natural language processing, automatic theorem proving, programming for artificial intelligence and knowledge-based systems. Projects include writing a substantial artificial intelligence application program. Prerequisite: CS 340; junior standing. Offered Fall - Odd Numbered Years.
Artificial intelligence, or AI, was once a topic of science fiction and idle speculation, but is now part of the everyday world. Web search, airfare bookings, automated call-answering services, image processing of postal addresses, semi-autonomous vehicles and robots, video game NPC logic—all of these technologies use algorithms and ideas that originate in AI research.
In this course, students will learn a range of fundamental mathematical and computational techniques used for the creation of what are sometimes called "intelligent agents" in AI. By studying these techniques, we will learn how to put them to work to solve a variety of problems, and come to better understand fundamental current and future technologies.
Topics of Discussion
We will be covering a lot of material in this course. The exact order of topics, along with relevant readings and connected assignments, will be be maintained and updated on the Schedule section of the web-page. A not-so-brief list of topics we will consider is as follows:
- Applications of artifiicial intelligence (AI).
- The concept of an AI agent.
- Agents that use search to solve problems.
- Classical and non-classical search techniques.
- Heuristic search.
- Uncertainty in AI problem-solving.
- Bayesian networks and inference.
- Rational decisions and decision networks.
- Planning in a classical setting.
- Planning under uncertainty.
- Learning as an alternative to planning.
- Reinforcement learning.
- Statistical machine learning.
Objectives for the Course
By the end of the semester, a successful student will be able to do all of the following things:
- Understand and explain the basic concept of an AI agent.
- Understand and explain the differences between classical and non-classical search techniques.
- Understand and explain heuristic search and adversarial search techniques for solving AI problems.
- Analyze and implement search algorithms to solve problems.
- Use elementary probability theory to represent uncertainty in knowledge and action.
- Employ Bayesian techniques to represent and reason about uncertain domains.
- Use basic decision theory to reason about rational action.
- Understand and explain the differences between classical planning and planning under uncertainty.
- Analyze and implement a variety of planning algorithms to solve planning problems.
- Understand and explain the differences between planning and learning in AI.
- Analyze and implement reinforcement learning techniques to solve AI problems.
- Analyze and implement statistical machine learning techniques for classification and other problems.
- Textbook: Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 3rd edition. Prentice Hall: 2010. (The book is available via textbook rental.)
- Lecture notes: When appropriate, these will be made available on the Notes section of the course website.
Requirements & Grading
Grades will be based on the following:
- Homework assignments (6) - 60%
- Midterm examination - 20%
- Final examination - 20%
HOMEWORK ASSIGNMENTS: These assignments will combine written work with coding exercises. They will combine understanding of the fundamentals of the subject, particularly its more formal side, with exercises designed to explore the various AI techniques through coding of algorithms. There will be 6 such assignments, spaced roughly evenly. All work must be type-written. Guidance will be given about the form of answers expected, and about coding conventions, as the time comes.
EXAMS: The exams will be in written format, done during class time in mid-semester and during the University-set times for the final. (See below for dates and times.) Example exams, to show the format and type of question, will be distributed and discussed in the class before the exam occurs. The exams are open-book and open-notes.
LETTER GRADES: I use the following breakdown of letter grades and percentages:
|94-100% A||83-88% B||70-78% C|
|89-93% A/B||79-82% B/C||60-69% D|
Grades below 60% are non-passing grades. In addition, to get a passing grade, you must be sure to complete all three exams in the course.
Important Dates and Times
While the Schedule section of the web-page will contain detailed information about weekly readings, assignments, and lecture materials, the following key dates are worth noting at the outset:
- Wednesday, 18 October 2017: In-class midterm exam.
- Wednesday, 20 December 2017, 2:30 PM: Final exam (location/format TBA).
Homework & Policy on Collaboration
Assignments will be submitted electronically, using D2L. (Details will be supplied well before the first assignment is due.) They will consist of the type-written answers and/or fully-functional code as required. Generally, assignments will be due before the start of class hours, and will be handed in roughly two weeks apart. (There are some of exceptions with longer times to complete the material, around Thanksgiving.)
LATE POLICY: For late assignments, handed in within 24 hours after the time at which it was due, a reduction of 10% will occur; if handed in within 48 hours of that time, a reduction of 20% will occur; within 72 hours, the reduction will be 40%. No credit is given for assignments submitted after that point, unless you have a documented reason.
Please note: I encourage you to work together on the material. This is a great way to learn, and to share ideas. However, in order to actually learn something, it is important that you complete the real work of solving problems and programming on your own, unless specifically directed otherwise. It is perfectly fine for you to discuss the general approach to a problem with one another, and to help one another with things like getting the software we will use to work properly on your computer. If you run into difficulty with getting your code to function properly, you can also help one another figure out things like where there are syntax errors in the code, or do de-bugging to isolate a problem spot. However, it is not okay to write code and solutions together, or to copy answers from anyone inside or outside of the class. While you can use online references to explain key concepts, and to learn programming techniques, you must not simply copy answers or code you find online. This is the only way to actually learn the material. Any improper behavior with respect to these guidelines will be dealt with as academic misconduct, according to University policy.
Attendance will not be taken formally. However, I hope you will attend all class sessions. Class time will not be taken to review things missed due to lack of attendance. If you do have to miss a class, speak to your classmates about what you missed, and try to get notes and other materials from them.
How to Do Well in the Course
You want to do well in this course. I want you to do well in this course. Some simple ways to help make that happen are as follows:
- Do the reading before you come to class. To get the most out of the class, you want to read ahead of time; that way, you won't be seeing things in class for the first time, and you can come with questions that you already want answered, to make class time more productive. If you wait until it is time to do a homework assignment to look at the material, it may well be too late to help you.
- Ask and answer questions in class. I have found that if I sit back and simply listen to others talk about a subject, I can often convince myself I understand something. Then, when I open my mouth and try to talk about it, I realize that I really don't know what's going on at all. By participating in class, asking questions whenever I don't understand things, and trying to answer them, I find out what I do and don't know, and can do something about it.
- Come to office hours. I like to speak with students outside of class. As odd as it may seem, I actually like to talk about things like the use of admissible heuristics in search algorithms. You can take advantage of my odd proclivities by coming to speak with me about things you don't understand, either in class materials or in homework. This will help you.
- Work with others to study and solve problems. When you write up your homework to hand in, you will be doing it on your own, making sure you really understand what you are doing (this is especially helpful come exam time). Before you write your own code, however, you will find things work much better if you work together with others. Form study groups, meet up to discuss how to design a program, bounce ideas off one another over lunch. It's amazing what the wisdom of crowds can produce.
You can find out more about services available to students with disabilities at The ACCESS Center website: http://www.uwlax.edu/access-center.
Other information about the legal obligations UW-La Crosse has to its students can be found at: https://www.uwlax.edu/info/syllabus/