
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.
Periodically, important announcements will be made in this area. Please check every day for updates.
Note to students with disabilities: If you have a documented disability and anticipate needing accommodations in this course, please make arrangements to meet with me soon. Please request that a Disability Resources staff send a SAAR (Student Academic Accommodation Request) form verifying your disability and specifying the accommodation you will need.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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:
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 Wed. Oct. 26. 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.
All laboratory assignments must be turned in
electronically, using a script called turnin. The script is
invoked by calling
~cs572/Utilities/turnin Assignmentfrom 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 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.
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!
This example assumes that the script has been aliased, by adding
the following line to your .cshrc file.
alias turnin572 ~cs572/Utilities/turnin
mkdir tmp
cd tmp
cp ~/proj1/makefile ~/proj1/*.c ~/proj1/*.h .
turnin script.
turnin572 Project1
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 ---------------------------------------------------
cd ..
rm -r tmp