Course Specifications for CS 343:
Artificial Intelligence

Course Overview

The course is a basic introduction to artificial intelligence covering fundamental material in problem solving, heuristic search, knowledge representation, deduction, planning, uncertain reasoning, learning, and natural-language processing. The course will focus on understanding concepts and algorithms rather than programming, although there will be two projects involving some programming (in Java). See the course syllabus for further details.

Course Requirements and Grading

Reading assignments from the text are listed on the syllabus. Be sure to keep up with the reading and study the corresponding chapters before the corresponding lecture. Class lectures will cover the slides available on the course homepage.

Prompt attendance at class is required. Attendance will be taken at the very beginning of every class period and a student's attendance record will count as part of the course grade. Leaving during the middle of class in unacceptable and will count as missing two class periods.


There will be four written assignments during the semester that involve working out the solutions to a series of problems on paper. Many of the general types of problems in the assignments will be representative of problems to appear on the midterm and final. Sample previous assignments are available on the course homepage, and their solutions are available on the department file system in /u/mooney/cs343-code/old-solns/


There will be two class projects, one in each half of the course. These involve using existing AI software in Java to solve a realistic task. You will have to adapt the software for the current task, which will involve some Java programming. You will also run the programs on realistic data and measure the results. A major part of the assignment is to understand why you got the results you did, and write a short (one or two page) report on what you did and why, how it turned out, how you might improve the results, and generally what you learned from the assignment.

Support will be provided for running programming assignments on departmental UNIX workstations. If you do not have a permanent UNIX account, you can obtain one from the Undergraduate Office. If you are not a CS student, the Undergraduate Office can issue you a temporary account. You are free to use other platforms for running Java, but then it is your responsibility to get the course code running on that platform.


There will be a midterm exam, tentatively on October 13, that will cover the material in the first half of the course. We will review for the test the class before. Last year's midterm is available on the course homepage, and its solution is available on the department file system in /u/mooney/cs343-code/old-solns/

Final Exam

The final will be held at the scheduled university time on Wednesday Dec. 8 from 9AM-12PM in the normal classroom. It will be comprehensive test covering all material presented in the course; however, about 2/3 of the problems will involve material covered since the midterm. We will review for the final on the last class day.

Late Submission and Cheating Policies

Assignments, projects, and exams should be completed independently by each student and any program code should always be appropriately commented. Written assignments should be neat and legible and are due at the beginning of class on the due date. Pogramming projects should be submitted electronically using the UNIX turnin facility at least 15 minutes before the beginning of class on the due date. Be sure to hand in assignments on time, late penalties are a loss of a percentage of the original overall points for the assignment: 1 Day: 15%, 2 Days: 40%; 3 Days: 75%; past 3 days: 100%. A day is any 24 hour period and includes all weekend days and holidays.

Read the department's academic policy page. Students who demonstrably violate the Academic Honesty policy will receive a failing grade in the class. We will be using the Moss system to screen submited programs for plagiarism. Unfortunately, I have had to fail approximately 20 students in the past for copying on programming assignments. To avoid problems, limit any discussion of assignments with other students to clarification of the requirements or definitions of the problems, or to understanding the existing programs or general course material. I encourage you to interact with your fellow students in understanding the course materials and interpreting the requirements of the assignments but never discuss issues directly related to problem solutions.

Final Grade

The final grade will be determined as follows:
24%  Assignments
20%  Projects
 8%  Attendance
22%  Midterm
26%  Final