Location: 2302 Centennial Hall, UW-La Crosse
Times: Monday, Wednesday, Friday, 11:00-11:55am
Instructor: Martin Allen
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


Course Description

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.


Course Materials

  1. Textbook:  Stuart Russell and Peter Norvig, Artificial Intelligence:  A Modern Approach, 3rd edition. Prentice Hall: 2010. (The book is available via textbook rental.)
  2. 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 5 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.

For students in the graduate-level version of the course:  One or more additional components, optional for undergraduate students (those in the 452 section), but required for graduate students (the 552 sections) will be added to some assignments.  In addition, grading standards for coding projects will be at a higher standard for those in the graduate sections.

EXAMS: The midterm exam will be in written format, done during class time in mid-semester. (See below for dates and times.) An example exam, to show the format and type of question, will be distributed and discussed in the class before the exam occurs.  The exam will be open-book and open-notes.  The final exam will consist of a take-home essay prompt, tying materials learned in class to uses of AI found in the world.

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 scheduled;  take-home essay due by 5:00 PM.


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


Please Note

Any student with a documented disability (e.g. ADHD, Autism Spectrum Disorder, Acquired Brain Injury, PTSD, Physical, Sensory, Psychological, or Learning Disability) who needs to arrange academic accommodations must contact The ACCESS Center (165 Murphy Library, 608-785-6900, This email address is being protected from spambots. You need JavaScript enabled to view it.) and meet with an advisor to register and develop an accommodation plan. In addition to registering with The ACCESS Center, it is the student's responsibility to discuss their academic needs with their instructors.

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/