InstructorEvan A. Sultanik ( evan [at] sultanik [dot] com )
Department of Computer Science
College of Engineering
- 2006-12-08 07:54 GMT-5 A link to the planning slides referenced in class has been posted to the Resources section. Also, the deadline for submission of Assignment 4 has been extended to Monday; please keep me posted as to your progress, and don't let the assignment interfere with your final exam preparations.
- 2006-12-01 13:40 GMT-5 Assignment 4 has been posted. Final submissions for the Othello competition due before 23:59 on Monday December 4th.
- 2006-11-29 17:57 GMT-5 Added a link to the advanced Othello techniques paper mentioned in class; the link is available int he Resources section.
- 2006-11-17 13:14 GMT-5 Uploaded the 4-queens solver (in Prolog) that we created in class to the Files section. Also, class on the 20th has been canceled
- 2006-11-06 11:43 GMT-5 Assignment 3 has been posted.
- 2006-11-05 18:07 GMT-5 An updated version of the othello code has been posted in the Files section. The new version contains a hashing bug fix for the GameState class and allows the ability to select an infinite deadline from the command line.
- 2006-10-23 17:39 GMT-5 An Eclipse project for Assignment 2 has been added to the Files section. To use: extract it into your Eclipse workspace directory. I've never used Eclipse before, so I can't promise success. To create the required "yourname
.jar" file, right-click on the package "
students.yourname" in the package explorer and select "Export...". Make sure you do not export a jar containing the entire package hierarchy; if you do so your submission will not be graded. This project file has been tested on Eclipse 3.2, but it should theoretically work on Eclipse 3.1 also (it will not work on anything earlier than 3.1).
- 2006-10-23 12:12 GMT-5 Assignment 2 has been posted.
- 2006-10-21 17:19 GMT-5 Added a minimax example in the Files section.
- 2006-10-15 18:56 GMT-5 Added a Files section that includes the Othello code for the programming portion of Assignment 2. Make sure to read the README and check out the JavaDoc.
- 2006-10-11 13:30 GMT-5 PDFs of the foils I am using in class are available here. The average for the optional lisp assignment was 14.41/16 with a standard deviation of 2.18. Problem 8 from that assignment was counted as extra credit. Assignment 2 should be posted by tomorrow, if not Friday. If you did not attend last class and therefore did not receive the lisp handout please contact me (it should help you a lot on the programming portion of Assignment 1).
- 2006-10-05 09:30 GMT-5 The Resources section now also includes instructions for installing
clispnatively on OSX and there's an example
.texfile for assisting you in learning LATEX.
- 2006-10-04 21:09 GMT-5 Added a Resources section with useful links and information (i.e., how to install
clispnatively in Windows). The written portion of Assignment 1 is now due on the 11th on account of the University holiday on the 9th.
- 2006-09-29 13:53 GMT+1 The PDF for the optional lisp exercises has been posted.
- 2006-09-28 00:15 GMT+1 The PDF for Assignment 1 has been updated (finalized) to include the programming portion. Also, 8puzzle.lisp is available as an optional starting point for the assignment.
- 2006-09-26 14:49 GMT+1 I've posted the first version of the website; assignments and relevant information will be continuously updated in the Schedule section. The Lisp assignment and the programming portion of Assignment 1 will be posted in the coming days.
I was asked to teach this class less than a week before its start, so I apologize for any omissions and/or errors you might find in this syllabus. Due to extenuating circumstances (i.e., a conference overseas) I will be away for the first four classes. The first two of these classes will be taught by Dr. Modi and the third and forth will be taught by Dr. Regli. I will return on October 4th to take over for the rest of the term. If you have any questions or concerns about my substitutes' lectures, questions about the course, or you simply want to have an animated debate over the validity of the Categorical Imperative as a moral law that is unconditional for all agents, feel free to call me at the number above (it will be working while I am away).
Although Artificial Intelligence (AI) is meant to automate tasks requiring intelligent behavior, from a pragmatic standpoint it exists to create solutions for problems that are so complex an optimal solution technique is either unknown or infeasible. This course is meant to provide you with an introduction to some of the techniques AI uses to solve such problems. We will be largely learning by example, as I feel this is one of the best (and most useful) ways in exploring the topics.
I realize this course has a reputation of bringing with it a large workload; while there will be several large programming assignments, you will be given ample time in which to complete them. It is also my intention to make the assignments as fun and relevant as possible (i.e., lots of game AI).
Students are assumed to have an introductory knowledge of set theory, boolean logic, and proofs. The course description for CS380 dictates that it shall cover programming in AI languages. Therefore, students are expected to either have previous experience in or a willingness to learn languages such as Lisp/Scheme, Prolog, and Java. While some introduction and overview of these languages will be given in class, it should be noted that this is an ``Introduction to AI,'' not a full-blown ``Introduction to Lisp;'' students are expected to learn the syntax and semantics of these languages on their own in order to complete the assignments.
Attendance is not mandatory, however, it is highly recommended; much of the material presented will either be on the board or from foils and will therefore not be available online. If a student is able to grok the material more efficiently by reading the book on his or her own time, then I see no reason why his or her time should be wasted in lecture. If such a student ends up faring poorly in his or her assignments and examinations, however, he or she will not be given as much leeway as those that have attended class regularly.
Use of laptops in class will, under almost all circumstances, not be permitted. From my experience as an undergraduate, I only remember seeing one or two students using computers productively during class. Everyone knows you're just trolling MySpace, talking on AIM, or, worst of all, playing WoW. Not only is this disrespectful to your instructor, it's very distracting for the rest of the students who might be enticed to glance at your screen to check out your drunken rendition of Dragostea Din Tei that you posted on YouTube last weekend. If you really want to use your laptop for something legitimate (e.g., taking notes) please come and talk to me before class.
Any cellphone that is audible during class shall be passed to and subsequently answered by me. If the cellphone has a speakerphone feature, it shall be used such that the entire class can hear my conversation with your mother and/or significant other; I assure you that he or she will never again call back during class. To be fair, if my phone ever audibly rings during class the entire class may answer. If you are expecting a call, please be courteous and set your phone to vibrate. When you receive a call, please answer it in the hallway.
There will be four assignments, each centered around a core topic of the course. Each assignment will have a written portion (usually problems taken from the book) and a programming portion. The programming portion for each assignment will be in the language traditionally used for that AI topic.
- Search: You will write a solver for the 8-puzzle. This assignment will be completed in the functional language Lisp. A brief tutorial on Lisp will be given during the first few classes. You will be given utility functions for interacting with the game board.
- Game Playing:* You will write a game-playing agent for Othello/Reversi. This assignment will be completed in Java, as it is a common language used for agents. Code will be provided for the user interface and game logic; you will only have to code the AI.
- Logic: A series of problems that will serve as an introduction to Prolog (and possibly Jess). Most likely a CSP such as the game Sudoku.
- Planning: You will learn how to solve a wide array of planning and scheduling problems using the tool SHOP.
*During the last day of class we will have a competition between all of the students' Othello agents created for Assignment 2. As an incentive to improve one's agent throughout the term, one will be able to earn back up to 50% of his or her points from Assignment 2 by resubmitting the assignment for the competition. Participation in the competition is mandatory, however, the success of one's agent will have no affect on his or her grade. We will try and have all pairs of agents compete, however, this will result in n choose 2 matches (where n is the number of agents), so we may have to resort to single elimination. There will be prizes for the top three agents.
All programming assignments must be executable on
Tux. Accompanying documents (e.g.,
READMEs) must be either plain text, Postscript, or PDF.
Programming assignments shall initially be submitted through
E-mail with a subject starting in ``CS380''. Eventually
(once Drexel decides to get me access to the system)
programming assignments shall be submitted through WebCT.
All written assignments must be handed in as hard copy.
They may be submitted either in class or in my mailbox in
University Crossings. All assignments are due
before the start of the class on the day they are
due. Solutions to the assignments will often be discussed
during the class after they are due, therefore, late
submissions will receive zero credit.
You may earn up to 5% extra credit on the written portion of each assignment simply by typesetting the document in LATEX.
Many of the assignments are long-term; you must start early! Some of the more ambitions assignments will require a status report (in the form of a short E-mail) a week before their due date. Expect on budgeting at least 10 hours a week for this course.
The midterm and final exams will each be worth 20% of your grade. The final exam will be cumulative. 60% of your grade will be based on the four assignments (5% for the written portion and 10% for the programming portion of each).
If you participate in class, seek help
when needed, and make an effort in completing your
assignments, I assure you that you'll get a good grade, so
don't worry. If you can prove to me—through any means
(not limited to assignments and examinations)—that you
have a solid grasp on the material by the end of the course,
that's on what I'll base your grade. If you're worried
about your grade, come and talk to me. Do you need
A? With enough notice I can always let you
know what is needed of you in order to earn your desired
grade. What I can't do is help you if it's the end
of week 9, you have done poorly on the assignments, hardly
ever showed up for class, and it's the first time you're
talking to me about your situation. Please seek help and
The most efficient way to earn an
F is to
cheat. We know that many of the answers to the written
assignments are a Google search away... just avoid that
temptation; you won't learn anything and there's a
possibility that your matriculation at Drexel could be
terminated. Any type of code sharing (i.e.
plagiarism) will result in an
F for that
assignment, if not for the course. You are free (and
encouraged) to discuss the assignments with other students
outside of class; just don't share your answers/code. The
amount of knowledge required to sufficiently transform
another student's solution into a different, distinguishable
solution is the same as that which would have been required
to solve the problem in the first place.
- The slides referenced in class on planning are available here.
- The paper entitled Advanced Techniques for Othello Playing is available here.
- PDFs of the foils I am using in class are available here.
The best way to learn LATEX is by
example. Here is the
.texfile I used to generate the PDF for the original class syllabus:
- Dr. Regli's Lisp Materials (including the slides used for the Lisp lectures)
- If you'd like to get
clispworking in Windows and you don't want to SSH into
tuxall of the time, the easiest way is to install Cygwin; it's free and includes
clisp(you have to manually choose to install
clispduring Cygwin's install, though).
- To get
clispinstalled natively in OSX, it is available through Fink.
- Having a good text editor with a lisp mode makes life a lot easier when programming in lisp. For example, GNU Emacs and Vim will both highlight corresponding parenthesis. These programs are both available as native Windows executables and through Cygwin. Likewise, they are available as native OSX applications or through Fink. If you run a POSIX-compliant operating system, Kate (KDE's text editor) also has a good lisp mode and has perhaps the least intimidating learning curve of the three. I'm not sure if Kate is available in Cygwin.
|4 Queens Solver in Prolog||1.0||2006-11-16||.prolog|
|MiniMax Search by Example||1.0||2006-10-21|
|Othello Java code for Assignment 2||1.1||2006-11-05||.tar.gz
There are no API changes from the previous version.
To upgrade from the previous version, simply save your
|09-25||Dr. Modi: Course Intro.; AI History; Intro. to Agents||1||Assignment 1 assigned (PDF, 8puzzle.lisp) ← Updated!|
|09-27||Dr. Modi: Agents & Intro. to Search||2–3.2||Become acquainted with a Lisp interpreter (either by installing your own or running
|09-29||Dr. Regli: Lisp Intro. & Uninformed Search||3||Optional Lisp exercises assigned (PDF); will be corrected but not graded.|
|10-02||Dr. Regli: Continuation from Previous Lecture||3|
|10-04||Wrap up uninformed search; introduce informed search.||4|
|10-06||Informed Search||4||Optional Lisp exercises due.|
|10-09||Columbus Day/Indigenous Peoples Day (No Class)||4 & 6|
|10-11||Informed Search & Adversarial Search||4 & 6||Written Portion of Assignment 1 Due ← Updated!|
|10-13||Adversarial Search||6||Programming Portion of Assignment 1 Due|
|10-16||MiniMax Search||6||Assignment 2 sourcecode available.|
|10-18||Alpha Beta Pruning & Intro. to Constraint Satisfaction||6 & 5|
|10-20||CSP||5||.jar files for Assignment 2 due|
|10-23||CSP||5||Assignment 2 posted (PDF).|
|11-01||Written Portion of Assignment 2 Due|
|11-03||History of Logic|
|11-06||Logical Agents||7||Programming Portion of Assignment 2 Due
Assignment 3 Posted (PDF).
|11-08||First Order Logic||8|
|11-10||First Order Logic||8|
|11-13||First Order Logic & Prolog||Written Portion of Assignment 3 Due|
|11-15||First Order Logic & Prolog||First half of the programming portion of Assignment 3 Due|
|11-20||Class Canceled (I'll be away on business)||Second half of the programming portion of Assignment 3 Due|
|11-22||Thanksgiving (No Class)|
|11-24||Thanksgiving (No Class)|
|12-01||Assignment 4 Posted (PDF)|
|12-04||Genetic Algorithms and Programming||Final submissions for the Othello competition due before 23:59 tonight.|
|12-06||Final exam review.|
|12-08||Last Day of Class
|Assignment 4 due (both parts).|
Location will be posted in Week 9.