CSCI 324 Artificial
Intelligence
Fall 2009
Classroom location: Fitzelle 300
Class schedule: MWF 11:00-11:50am
Prerequisites: CSCI 203
Instructor: Dr. Don Allison
Office: 225 Fitzelle Hall
Phone: 436-3439
Email: allisodl@oneonta.edu
Office Hours: T 12-2pm, W 3-4pm, F
9-10am, 3-4pm
Others by appointment
(or just drop by)
Catalog Description:
A survey of important areas of artificial
intelligence: expert systems, natural language processing,
and artificial neural networks. Common
algorithms will be covered as needed.
Projects will be assigned corresponding to the three areas surveyed.
Course Description: (the real
scoop):
In this course we
will study intelligent behavior, and how to program computers to exhibit
it. We will look at several approaches
taken over the years to build “intelligent” machines, together with the
strengths and weaknesses of each. We
will also look at some overarching problems such as knowledge representation,
problem solving as search, etc.
Course Goals/Objectives:
The purpose of this course is to familiarize students with the basic
concepts from the field of artificial intelligence. A mastery of these techniques provides
students with powerful tools that not only enable them to build more
interesting, “intelligent” systems, but also serves as a foundation for
advanced study or research in AI or one of its subareas.
Textbooks and Software:
Artificial Intelligence: A Systems Approach, Tim Jones, Jones
and Bartlett, ISBN 9780763773373
Projects in AI
courses are often done in functional or logic programming languages. However, at the request of some of the
students, this semester you may develop your AI applications using C++. If you need a bit of a review of your C++,
there is a text for CSCI 116 that is strongly recommended for this course as
well: Kyle Loudon’s C++ Pocket Reference, published by O’Reilly in 2003, ISBN 9780596004965. You may also use Common Lisp if you wish.
Reading list/Additional
resources:
Just like computer
science itself, AI contains many subareas, each with active conferences and
ongoing research. Below is a list of
items on AI and related areas that may be found in our library:
·
AI for Games and
Animation,
John Funge, QA76.76.C672 F86 1999
·
Artificial Minds, Stan Franklin, Q335
.F733 1995
·
Artificial Life, Christopher Langton,
QH324.2 .A74 1995
·
Turtles, Termites,
and Traffic Jams,
Mitchel Resnick, QA76.58
.R47 1994
·
The Emperor’s New
Mind,
Roger Penrose, Q335 .P415 1989
·
Heuristics, Judea Pearl, Q335
.P38 1984
·
Artificial
Intelligence,
Patrick Henry Winston, Q335 .W56 1984
·
Artificial
Intelligence,
Elaine Rich, Q335 .R53 1983
·
The Handbook of
Artificial Intelligence, Avron Barr, Q335 .H36 v.
·
Artificial
Intelligence Programming, Eugene Charniak, Q336 .C48
1980
·
Scripts, Plans,
Goals, and Understanding, Roger Schank, BF311 .S378
·
Problem-solving
Methods in Artificial Intelligence, Nils Nilsson, Q335 .N52
·
Brains, Behavior, and
Robotics,
James Albus, Q335 .A44 1981
Tentative Schedule: (order of readings
& other assignments, by due dates, course activities, course content by
expected order of coverage, test dates and test coverage)
|
Date |
Monday |
Tuesday |
Wednesday |
Thursday |
Friday |
|
Aug 24-28 |
|
|
Classes begin Add-drop begins Read Chapter 1 |
|
Read Chapter 2 |
|
Aug 31-Sep 4 |
Add-drop ends |
|
Read Chapter 3 |
||
|
Sep 7-11 |
Labor day: classes meet |
Last day to add a full
semester course |
|
|
|
|
Sep 14-18 |
Read Chapter 4 |
|
|
|
|
|
Sep 21-25 |
|
Program #1
due Read
Chapter 5 |
|
College closes after last
class |
|
|
Sep 28-Oct 2 |
|
Classes resume TAP certification begins |
|
Read Chapter 6 |
|
|
Oct 5-9 |
|
|
EXAM 1 |
|
|
|
Oct 12-16 |
Columbus day: classes meet |
|
Read Chapter 7 |
|
Interim Progress Reports due
from faculty |
|
Oct 19-23 |
|
First half semester classes end |
Program #2
due |
|
Read Chapter 8 |
|
Oct 26-30 |
|
Last day to drop a full
semester course |
|
|
|
|
Nov 2-6 |
Daylight saving time has ended!! Did you set your clock back? Read Chapter 9 |
|
|
|
|
|
Nov 9-13 |
Begin Spring 2010
pre-enrollment |
|
Veterans’ Day: classes meet Read Chapter 10 |
|
|
|
Nov 16-20 |
|
|
Program #3
due EXAM 2 |
|
College closes after last
evening class Last day to make up
incomplete grades |
|
Nov 23-27 |
|
|
|
|
|
|
Nov 30-Dec 4 |
Classes resume Last day to withdraw from
college Read Chapter 11 |
|
|
|
Last day to change incomplete
grades |
|
Dec 7-11 |
Read Chapter 12 |
|
Follow MONDAY schedule Program #4
due |
Follow TUESDAY schedule |
|
|
Dec 14-18 |
Final
exams begin 8am:
MWF 10 11am:
MWF 2 2pm:
MWF 12 |
8am:
TR 10 11am:
TR 4 2pm:
TR 12 |
8am:
MWF 9 11am:
MWF 1 2pm: MWF
11 |
8am:
TR 8 11am:
TR 2 |
Final
exams end 8am:
MWF 8 11am:
MWF 3 |
Attendance Policy:
Attendance is STRONGLY
encouraged. Although it will not enter
into your grade computation directly, I will be taking attendance occasionally,
especially at the beginning of the semester to start putting names with faces. However, students who attend class regularly
generally do much better in their
classes than their peers who attend sporadically. You will be responsible for material covered
in class as well as the material in the text. In addition, we will be discussing the exams
and programming projects in class, writing sample code for them, and so on, as
well as answering questions about the assigned material, so it is in your best
interest to attend class as much as possible.
Finally, the college has a requirement that students attend one of the
first two lectures and the first lab for any course or they can be
administratively dropped from the course and their space given to someone
else. Additionally, anyone missing 25%
or more of the class meetings to that point at any time up through
midterm can be involuntarily dropped from the course. Depending on the number of people on the
waiting list for this course, these policies will be enforced more or less
stringently.
Collaboration Policy:
Cheating or other
academic dishonesty hurts others as well as yourself and will not be
tolerated! For this course, however, it IS
acceptable to collaborate with your classmates, under certain conditions. All work submitted on the exams should be
yours and yours alone, as should any code you submit. If you are working on a project and run into
a problem, it is acceptable to ask a classmate or other person a general
question (such as, “what are the two conditions needed to guarantee termination
of a recursion”), AS LONG AS you actually do the work yourself. For instance, it is unacceptable to ask
someone (other than your instructor) to write code for you to handle argument
passing for a function, or code for opening a file for input. You can share code that was discussed in
class however. In other words,
discussing algorithms or the lecture content is okay, but discussing specifics
of the programming assignments is not.
You should be the physical creator of everything you turn in that wasn’t
provided by the instructor. You should
also be able to answer any question I have about how every one of your programs
works.
Let me reiterate: it
is all right to ask others general questions about computer science, Unix, programming, C++, or the assignments. HOWEVER, it is NOT
acceptable for you to ask others (except the instructor) specific questions
about your programs, such as how you should code something specific. It is okay to occasionally ask a class
member if they know why you are getting a particular compiler error, but it is not
okay to ask them to help you write part of a function. Code plagiarism or code sharing will be dealt
with as academic dishonesty, for which there are severe repercussions, so make
sure that what you turn in is the product of your own work and not someone
else’s! You should be able to explain to
me everything about any program that you turn in, and I will
occasionally ask you specific questions about your programs (such as, “Why did
you use a for loop here?”) and expect you to be able
to answer them easily! (These will be a
part of your program grade.) One of the
objectives of this course is for you to improve your programming
skills, and as such everything you turn in should be your work alone. You will have plenty of opportunity in other
courses to work collaboratively (CSCI 311 comes to mind). If you have any questions about whether some
type of collaboration is allowed or not, ask me first. Better to know for sure than to risk your
program (or semester) grade on a guess!
Programming Style Guidelines:
Programming style is
an important part of coding, and programs you write for this class will be
expected to follow the style guidelines discussed in class and illustrated by
the programs we write in class. You
should indent your code to reflect its internal structure. You should use block comments to explain what
your code is doing at a high level. Each
function should have a header that gives the function name, the inputs, the
output(s), and lists any side effects, as well as providing a two or three
sentence summary of what the function does.
In addition, your main program file should have a block header similar
to the following:
// CSCI 324, Artificial
Intelligence, Fall 2009
// Program #1: Getting
started
// Author: Don Allison
// Date Due: 7 September
2009
//
// This
object of this program is to verify that we can compile and
// execute programs using a
C++ compiler.
Your header should
include the course name and number, the assignment number, your name, the
program due date, and a two or three sentence description of the purpose and
function of the program.
Program Turn-in Procedure:
You should print out
your source and include file(s), along with a sample output, and staple them
together. These should be turned in at
the beginning of class on the day they are due.
Make sure you turn in all the required parts!!! You should also email me a zip file
containing your source code, makefile, test data,
etc, along with a README file that describes
how to recreate your executable, any special instructions needed to run your
program, etc.
Grading and Other Administrivia:
Exams:
There will be two midterm
exams and a final. The midterms will each
contribute 20% of your grade, while the final will contribute 30%.
Programming Projects:
The programming
projects are an integral part of the course.
There will be a “getting started” project to get you back into the
programming mindset again, and then 3-4 larger programming projects. The projects will contribute 30% towards your
final grade.
Grade Computation:
|
|
Weight |
Tentative
Date |
|
Exam 1 |
20% |
7
October |
|
Exam 2 |
20% |
18
November |
|
Final Exam |
30% |
16
December, 2pm |
|
Programming
projects |
30% |
|
|
Total |
100% |
|
Make-up Test and Late Assignment Policy:
Assignments are
considered due by the beginning of class on their due date, and any turned in
after that time will be considered late.
To allow for differences in clock settings and for mail delays, you
should plan on emailing your assignments in 15 or more minutes early. Late assignments will be assessed a 20%
penalty for each class day that they are late.
If an assignment is due Monday, and you turn it in anytime after the
start of class on Monday up to the start of class on Wednesday, there will be a
20% penalty. At the start of class on
Wednesday, the penalty jumps to 40%. All
assignments must be turned in by the last day of classes for them to count
toward the course grade. You should plan
to be present for all the tests and the final exam. Any makeups will be
allowed only for legitimate, school-approved excuses, and should be arranged
with the instructor as soon as possible after you discover you can’t attend the
exam (before the exam is given whenever possible). In any case, all work must be completed by
the last class, including any makeup exams.
Exams missed for unexcused absences, or exams not made up by the last
day of classes will be recorded as a zero grade.
Additional Resources:
For those who want to
do more work with user interfaces, you might check out the extensive
documentation on line for fltk, glui,
glow, and other user interface toolkits.
Specifically, see http://www.fltk.org/,
http://www.fltk.org/, and http://glow.sourceforge.net/. See me if you need any pointers or
suggestions. If your C++ skills could
use some help, you might check out the short and cheap book from Barnes
& Noble, C++ Programming in Easy Steps, by Mike McGrath…192 pages, under
$10 http://www.ineasysteps.com/books/?1840782331.
Additional
unique aspects of the course:
Unlike more
traditional memorize and regurgitate courses, this course has a strong hands-on
learning, or learning by doing component, represented by the projects. This enhances retention, reinforces
understanding, and ensures that the student masters the material well enough to
be able to use it in other projects.
Students more comfortable with a traditional classroom approach might
want to switch to another section, course, or major.
Emergency Evacuation:
The Evacuation
Assembly Area for this course is in the quad, 50 feet from the building. In case a prolonged building evacuation is required,
you will be directed to the building Evacuation Site. The Evacuation Site for this class is the
Lobby of IRC. In any case, if a building
evacuation occurs, stay together as a class so that we can determine that
everyone has made it safely from the building.
Evacuation is to occur any time the fire alarm sounds, an evacuation
announcement is made, or a university official orders you to evacuate the
building. After the building has been
evacuated, it is not to be re-entered until University Police gives permission.