Periodically, important announcements will be made in this area. Please check every day for updates.
.iastate.edu domain. If you
are using such a computer, you access the homework by logging in
to popeye.cs.iastate.edu and running
links http://www.cs.iastate.edu/~cs572/hw1.html
at the shell prompt at popeye..iastate.edu. You may now access the
homework pages from anywhere.According to the final-exam university schedule, the final exam will be held on Mon. December 12, 12noon-2pm in the classroom where the course meets (Sweeney 1126). It will cover the material after the midterm (starting from fist-order logic) i.e., it is not comprehensive.
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.

ComS 472 (572 DL): Principles of Artificial Intelligence is a 3-credit, senior undergraduate elective / 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/or Lisp or Prolog and evaluate their performance. Graduate students are expected to develop some familiarity with current research problems and research methods in AI by working on a research or design project.
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).
Lectures will often draw upon a variety of sources to supplement the treatment of topics available in the primary textbook. A number of books and references are available on reserve in the Parks library. A list of useful references that can be used as a guide to literature and can provide points of entry to selected sub-areas of artificial intelligence can be accessed through the Com S 572 Web page. Additional sources of useful material include major journals and conference proceedings in these areas. You are strongly encouraged to explore various AI resources on the World Wide Web. However, you will not generally be responsible for material other than that which is covered in lectures, assigned readings, handouts, homeworks, or programming projects. The only exceptions to this rule are: material that is part of the prerequisites for the course; and the topic of the individual research project for Com S 572 students or the term paper for Com S 472 students.
The following gives a tentative list of topics not necessarily in the order in which they will be covered in the course. Specific reading assignments and brief lecture outlines will be placed on the course homepage periodically.
Graduate credit requires a research project and a written report.
The entire syllabus is provided also in PS or PDF format.
Your final grade in this course will be based on homeworks, lab assignments, a term paper (472) or project (572), exams, and class participation. These will be weighted as follows.
For ComS 472:
For ComS 572:
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.
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. 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!
Students enrolled in Com S 572 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 for 572 students should be one that demonstrates some creativity, attempts to answer some interesting research question(s), or offers 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.
Students enrolled in Com S 472 are required to complete a short (approximately 7-10 pages, single-spaced) term paper on one of the topics covered in the course. The paper should ideally be based on independent study of some topic extending beyond the material discussed in class. For example, this might involve extending the code developed for one of the laboratory assignments in interesting ways and describing the results, or completing a small research or design project in AI and reporting the results. You may choose to work individually or in small groups (consisting of 2-3 members each) on the term paper.
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. You are also encouraged to look at current research in the Artificial Intelligence Research Laboratory for project ideas. Also, some previous years' projects and term papers are available.
The paper 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 term paper. You are strongly encouraged to use AAAI's latex macros or word templates avalable here.
Additional resources on research and writing can be found on the Research Methods and Writing Workshop web page.
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:
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 term paper or term
project. Also, you cannot use any coupons after December 3. 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.
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 Mon. December 12, 12noon-2pm in the classroom where the course meets (Sweeney 1126). 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
Besides Com S 472/572, Computer Science department offers the following courses in Artificial Intelligence and related areas: Elements of Neural Computation (Com S 474), Machine Learning (Com S 573), Computational Models of Learning (Com S 672), Advanced Topics in Artificial Intelligence and Cognitive Modelling (Com S 673), and Research Seminar in Artificial Intelligence (Com S 610). Com S 472/572 is a prerequisite for Com S 672 and Com S 673.