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

Background email assignment due

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.