ComS 572: Principles of Artificial Intelligence
Department of Computer Science
Iowa State University


Fall 2007 offering of ComS 572 (taught by Prof. Honavar)

Course Information

Instructor: Dimitris Margaritis
Office: 103 Atanasoff Hall
Office Hours: MW 2pm-3pm (or come by the office or make an appointment by email).
Voice: (515) 294-8052
Email: my email address

Teaching Assistant: Oksana Yakhnenko
Office: Pearson 0145
Office Hours: Tu Thu 10am-11am
Email: oksayakh at cs dot iastate dot edu

Lectures:
Sweeney 1120
MWF 1:10pm-2pm

Recitation / Help session:
Pearson 3131
Tuesday 9am-9:50am

ComS 572: Principles of Artificial Intelligence is an introductory graduate course on Artificial Intelligence offered by the Department of Computer Science at Iowa State University.

The primary objective of this course is to provide an introduction to the basic principles, techniques, and applications of Artificial Intelligence. Programming assignments are used to help clarify basic concepts. The emphasis of the course is on teaching the fundamentals, and not on providing a mastery of specific commercially available software tools or programming environments.

In short, this is course is about the principles, design and implementation of intelligent agents---software or hardware entities that perform useful tasks with some degree of autonomy. Upon successful completion of the course, you will have an understanding of the basic areas of artificial intelligence---search, knowledge representation, learning---and their applications in design and implementation of intelligent agents for a variety of tasks in analysis, design, and problem-solving. You will also be able to design and implement key components of intelligent agents of moderate complexity in Java and evaluate their performance. Students are expected to develop some familiarity with current research problems and research methods in AI by working on a research or design project.


Important Announcements

Periodically, important announcements will be made in this area.  Please check every day for updates.


Prerequisites

The prerequisites necessary for fully benefiting from the material covered in this course include knowledge of data structures (e.g., lists, trees), design and analysis of algorithms, programming language concepts (e.g., functional programming, object-oriented programming, recursion, abstract data types), basic mathematics (e.g., boolean algebra, set theory, calculus) including elementary probability theory. These are covered by: ComS 330, 311, and (ComS 342, ComS 362 or comparable programming experience), Engl 105, Sp Cm 212. If you are not sure whether you have the necessary background, please talk to the instructor.

Students also need to possess (or be able to quickly acquire) a working knowledge of the UNIX operating system, the vi or EMACS editors, and X Windows.

Some of the laboratory assignments will require you to program in Java. If you do not know Java already, you are expected to quickly acquire a working knowledge of Java on your own. Note however, that Java is not necessarily the ideal language for all aspects of artificial intelligence programming. LISP and Prolog are especially well-suited for rapid prototyping of artificial intelligence programs. Consequently, some of the laboratory assignments might require you to program in LISP or Prolog. If you are unfamiliar with LISP or Prolog, you will be expected to quickly acquire a working knowledge of these languages as needed.

If there is sufficient interest, a few of the recitation sessions will be used to introduce Java, LISP, or Prolog as needed.

Recitations

You are strongly urged to attend the recitations. No conceptually new material will be introduced during these sessions. At the beginning of the semester, the recitations will be used for Java tutorials as needed. As the semester progresses, the TA will use the recitations to answer your questions about homework or programming assignments, or clarify and answer questions about material covered in the lectures, and to go over the solutions to assignments after they have been graded.


Computer Accounts

You will need to use the computers in the ComS department for programming assignments. If you do not already have a computer science unix account, you need to apply for one at http://support.cs.iastate.edu/accounts.php3. One working day after you apply for your account, you can activate it in 116 Atanasoff at the Unix Account Activation Terminal. For problems with the computer equipments, send email to ssg@cs.iastate.edu.

We will use electronic mail to reach you when necessary. The course web page located at will be used to post course materials including assignments, solutions to homeworks, lecture notes, etc. You are therefore strongly encouraged to get into the habit of reading your electronic mail and checking the course Web page once a day.

As a student in a course offered through the Computer Science department and a user of the ISU computer facilities, you are to abide by the department's Code of Computer Ethics a copy of which will be provided to you. Please note that any suspected violations of the code of ethics are viewed extremely seriously by the Computer Science department and treated in accordance with the university's policies on academic misconduct.


Course Syllabus

Course textbook
Text: Artificial Intelligence: A Modern Approach, 2nd Edition, by Stuart Russell and Peter Norvig.

The authors provide lecture notes in Postscript and PDF for the course.

Java in a Nutshell by David Flanagan is a concise reference for people with previous programming experience. On to Java by Winston and Narasimhan (1996) is a consise but really good introduction to Java programming. Other good books on Java include the Java by Dietel and Dietel (1997) and the comprehensive online text Thinking in Java by Eckel (1997).

The following gives a tentative list of topics not necessarily in the order in which they will be covered in the course. Lecture outlines will be placed on the course homepage periodically.


Grading Policy

Your final grade in this course will be based on homeworks, lab assignments, a project, exams, and class participation. These will be weighted as follows.

You are guaranteed to receive the highest applicable letter grade based on the following scale.

The instructor reserves the right to raise grades. For example, if your final grade is 83%, you are guaranteed to receive at least a B, but you may receive a B+.

Graders will email scores for homeworks, projects, and exams to students. Grades may be appealed for ONE WEEK after they are emailed except the final exam whose grade will be emailed by request only. After the appeal period has expired, grade change requests may be denied.


Homework Assignments

There will be 4-5 homework assignments. Homeworks will be discussed during recitation. Although not encouraged, if you prefer you can scan your handwritten homework and submit it as a PDF file. Word or WordPerfect files will not be accepted!


Laboratory Assignments

There will be two or three programming labs for this course. ALL laboratory work must be turned in electronically (see the section on electronic submission). Written work must be submitted as plain ASCII text. The graders must be able to view your homework using a text editor such as vi, emacs, or pico.


Policy on Late Assignments

Each of you will be initially assigned three "coupons." You can use each of the coupons in exchange for an extension of one day towards the handing-in of a homework or lab assignment. You can use more than one coupon on the same assignment of you like. You cannot use any coupon towards extending your project. Also, you cannot use any coupons after December 2. If you wish to use a coupon, you should include an empty file called COUPON with your homework or lab submission. If you wish to use more than one coupon you can include files COUPON1, COUPON2 etc. If you don't, there is no guarantee that it will be taken into consideration, and the staff will assume that you do not wish to use any even if the assignment is turned-in late. Coupons are subject to the following rules:

On account of the large size of the class, and the need for making the solutions available in a timely manner, homework assignments that are turned in after the specified due date if no coupon has been used will be assigned zero credit. Rare exceptions to this rule might be made (at the discretion of the course staff) under demonstrably extenuating circumstances.

On laboratory assignments, there is a late penalty of 5% of the grade per day up to a maximum of 7 days from the specified due date. Programs that are turned in later than 7 days after the due date will be assigned zero credit. Rare exceptions to this policy might be made (at the discretion of the course staff) under demonstrably extenuating circumstances.


Projects

Students are required to complete a research or design project in AI on a topic to be chosen in consultation with the instructor. A written report on the project and a brief oral presentation summarizing the same is expected at the end of the semester. You may choose to work individually or in small groups (consisting of 2-3 members each) on the project. An ideal project would demonstrate some creativity, attempt to answer some interesting research question(s), or offer an interesting AI solution to a problem of practical interest. Those of you who are interested in doing your MS thesis in AI or a topic that involves some AI are strongly encouraged to select a topic that could eventually either evolve into your MS thesis topic.

If you choose to work in a group, there has to be a clear understanding of each group member's contributions to the project. This has to be discussed with the instructor and agreed upon before the work on the project begins. Each group member will be asked to complete a brief evaluation of each of the group member's contributions to the project. In the event of a dispute, the instructor's assessment (if necessary, based on a brief oral presentation on the project, by each person involved) of the individual contributions will be binding.

If your background is in another discipline (e.g., engineering, biological sciences, business, etc.) you are encouraged to pick a topic that would allow you to explore the application of AI to a solve a problem of interest in your area of expertise.

Suggested Topics

The list of topics given below is meant to be suggestive, but not exhaustive. Also, the description given here is rather brief, so please feel free to see me to discuss the various possibilities in greater detail.

Some previous years' projects from 2003 and 2005 are also available.

Project Timeline

Instructions for preparing the project report

Your report will be graded on the basis of originality, technical soundness, organization, clarity of presentation, grammar and style, adequacy of the bibliography, as well as the significance of the results. In short, it will be evaluated as though it is being refereed for presentation at a conference. You are encouraged to look at papers published in one of the major national or international conferences (e.g., AAAI, ICML) as a model for your report. You are strongly encouraged to use AAAI's latex macros or word templates avalable here.


Academic Honesty

The primary purpose of the homework and laboratory assignments is to clarify and enhance the understanding of the concepts covered in the lectures. Past experience with this course has shown that this is helped by increased interaction among students. Discussion of general concepts and questions concerning the homework and laboratory assignments among students is encouraged. However, each student is expected to work on the solutions individually. Sharing of solutions (including segments of code) to assignments is forbidden unless explicitly instructed otherwise. If you are unclear about this, please talk to the instructor before you proceed. Suspected cases of academic misconduct will be pursued fully in accordance with ISU policies.

When discussing code with other students, you may:

It is expected that you have written EVERY LINE OF CODE that you submit (with the exception of code given out in class). The following are examples of activities that are PROHIBITED:

Such activities will result in zero points awarded for the assignment and a formal charge of Academic Dishonesty through the Dean of Students' Office (see the University's Academic Dishonesty Policy for details).


Exams

There will be one midterm exam and one final exam. The midterm exam will be one-hour, in-class. The exam date for the midterm is Mon. Oct. 27. It will cover Chapters 1-7 of the course textbook plus all material covered in class according to the study guide up to and including propositional logic.

Sample midterm (PDF)

According to the final-exam university schedule, the final exam will be held on Wednesday, December 17, 2:15-4:15 pm currently in the classroom where the course meets (Sweeney 1120). It will cover the material after the midterm (starting from fist-order logic) i.e., it is not comprehensive.

All exams will be closed-book, closed-notes. Please bring a photo ID with you to each exam. To reschedule an exam or for special considerations, please contact the instructor at least one week prior to the exam date. Missed exams will not be re-offered except under extreme circumstances.

The unannounced quiz we had on Dec. 1 is available.

Accommodation of Disabilities

If you have a disability and anticipate needing accommodations in this course, please contact the instructor within the first two weeks of the semester. Before meeting with the instructor, you will need to obtain a SAAR form with recommendations for accommodations from the Disability Resources Office, located in Room 1076 on the main floor of the Student Services Building. Their telephone number is 515-294-7220.



Electronic Submission

All laboratory assignments must be turned in electronically, using a script called turnin. The script is invoked by calling

   ~cs572/bin/turnin Assignment_name
from your UNIX shell.

(You may create an alias to reduce your typing requirements.) The script copies everything within your current working directory to a directory named Assignment_name in the TA's grading account. Note that the script must be invoked from one of the Red Hat PCs (e.g., popeye). Use caution when submitting an assignment: if you turn in the same assignment more than once, your previous submission will be erased. You should receive email confirmation of your submitted files. If you don't, or you if you receive an email without mentioning your files, there was a problem with the submission. In this case, contact the TA or the instructor for help.

Do not run the turnin script in your home directory!

A common mistake is to run the turnin script in one's home directory. This will send all contents of your home directory to the ComS 572 account!

An example

This example assumes that the script has been aliased, by adding the following line to your .cshrc file.


  alias turnin572 ~cs572/bin/turnin

  1. Copy the files you want to submit to a temporary directory.
        mkdir tmp
        cd tmp
        cp ~/proj1/makefile ~/proj1/*.c ~/proj1/*.h .
      
  2. Execute the turnin script.
        turnin572 Project1
      
  3. Wait for email confirmation.
    You should receive a message similar to the following.
     This is an automated response. Please do not reply.
     We have received your "Project1" submission at Wed Aug 17 17:18:52 CDT 2005.
     We now have the following files from you for "Project1":
     ---------------------------------------------------
     makefile proj1.c proj1.h
     ---------------------------------------------------
      
  4. Remove the temporary directory.
        cd ..
        rm -r tmp