Introduction to Artificial Intelligence (Fall 2007)
- 2007-11-30: the slides used in the genetic algorithms lectures have been posted.
- 2007-11-26: the written portion of assignment 4 has been posted. The username and password to access it were sent to the mailing list. Also, the slides used for the planning lectures are available here, with the same username/pass.
- 2007-11-17: added a link to the Java applets I demoed in class.
- 2007-11-12: updated the due dates for assignment 3 in the syllabus and also posted a link to a good Prolog tutorial I mentioned in class.
- 2007-11-09: the written portion of assignment 3 has been posted. The username and password to access it were sent to the mailing list. Also, the 4-queens prolog example has been posted in the Files section. The programming portion of assignment 3 has also been posted.
- 2007-10-22: the written portion of assignment 2 has been posted.
- 2007-10-17: the programming portion of assignment 2 has been posted.
- 2007-10-11: As was mentioned in class yesterday, the programming portion of assignment 1 is now due before class on Monday.
- 2007-10-10: I'd like to clarify that all of the references to problems, figures, tables, et cetera in this class are from the second (i.e. newest) edition of the textbook (the green one, not the red one). To the best of my knowledge, for the purposes of this class, the content of the two books are the same and you don't necessarily need to go out and buy the second edition if you have the first edition, however, some of the problem numbers are apparently different. If you need me to photocopy any pages out of the second edition, please let me know.
- 2007-10-06: As was mentioned in class yesterday, problem 3.11 part (d) is no longer required for assignment 1; parts (a)–(c) are still required, however. Although no one in class yesterday claimed to have already completed this part of the assignment, if you have already finished 3.11 part (d) and would like some compensation for it, please E-mail me. Also, as mentioned in class and on the mailing list, the written portion of assignment 1 is now due on Wednesday due to the holiday on Monday.
- 2007-10-01: Assignment 1 has been posted. A link to 8puzzle.lisp has been added to the files section. Make sure to note that the written portion and programming portion of assignment 1 are not due on the same day!
- 2007-09-29: Class is cancelled on Monday the 1st due to some more poorly schedulued business travel and lack of a substitute. E-mail me if you want hardcopy of the handout I gave out in class on Friday. The optional lisp assignment will now be counted as extra credit as incentive for people to actually do it. If you have not received an E-mail notifying you of your membership on the CS380 mailing list, please E-mail me ASAP.
- 2007-09-28: Added week 1 to the syllabus and posted the optional lisp assignment.
- 2007-09-27: Added some links in the resources section.
|TA:||Jeff Patti (jep422)|
|TA's Office Hours:||W 14:00–17:00|
|Instructor's Office Hours:||M/W/F, by appointment.|
|Books:||Required: Russell & Norvig, Artificial Intelligence: A Modern Approach, the Prentice Hall Series in Artificial Intelligence. ISBN 0137903952. Second edition.|
|Optional: Paul Graham, ANSI Common Lisp. ISBN 0133708756.|
- Bossone 605; and
- Drexel/ACIN Center (Suite 300), 200 Federal St., Camden, NJ.
Tel: + 1 215 919 7234
Fax: + 1 215 895 1582
Like the previous (and first) time I taught this class, I was given relatively short notice as to my responsibilities, so I apologize for any omissions and/or errors you might find in this syllabus. Due to extenuating circumstances (i.e., a conference in Rhode Island) I will be away for the first two (and most likely the forth) classes. These classes will be taught by Dr. Regli. I will return on September 28th to take over for the rest of the term. If you have any questions or concerns about my substitute's 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 an "Introduction to Computer Science Tools," let alone 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 despite the fact that that meme wasn't even funny in 2005. 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.
NOTE: This is tentative.
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 lost 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% of 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 an 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 guidance early.
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 used for the planning lectures are available here. (The username and password were mailed to the list)
- A set of some very good introductory Java applets (that I demoed in class) for a variety of AI topics is available here.
- A very good tutorial on Prolog is 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 .tex file I used to generate the PDF for last year's class syllabus: syllabus.tex.
- Dr. Regli's Lisp Materials (including the slides used for the Lisp lectures)
- 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
- 8puzzle.lisp (may be used as a template for the programming portion of Assignment 1)
|09-24||Dr. Regli: Lisp & Intro. to Agents||1||Read Chapters 1 & 2.|
|09-26||Dr. Regli: Lisp & Intro. to Agents||1|
|09-28||Evan Sultanik: Box Notation||2–3.2||Optional Lisp Assignment Posted (PDF).|
|10-01||Class Cancelled||2–3.2|| Read through chapter 3.|
Get acquainted with a lisp environment (either on tux or on your home computer). Assignment 1 Posted (PDF).
|10-03||Intro. to Search||3.2|
|10-05||Intro. to Search (Comparison Metrics; BFS)||3.2||Optional lisp assignment due before class.|
|10-08||Columbus/"Indigenous Peoples" Day (No Class)|| |
|10-10||Intro. to Search (DFS; IDS)||Written portion of assignment 1 due via BbVista before class.|
|10-12||Solutions to the Written Assignment; Intro. to Informed Search|| |
|10-15||A* Overview & Intro. to Game Theory||Programming portion of assignment 1 due via BbVista before class.|
|10-17||Saddle Point Equilibria, Nash Equilibria, Pareto Optimality; MiniMax Search||Programming portion of assignment 2 posted.|
|10-19||MiniMax with Alpha/Beta Pruning||MiniMax example used in class.|
|10-22||Intro. to Constraint Satisfaction||Written portion of assignment 2 posted.|
|10-29||Written portion of assignment 2 review; Midterm Review||Written portion of assignment 2 due before class.|
|10-31||Midterm during class.|
|11-5||First Order Logic||Programming portion of assignment 2 due before class.|
|11-8||History of Logic & Inference in First Order Logic||Written portion of Assignment 3 posted. The username and password to access it were sent to the mailing list. Programming portion of Assignment 3 has also been posted.|
|11-12||Inference in First Order Logic|
|11-14||Inference in First Order Logic|
|11-16||Planning||Written portion of Assignment 3 due before class.|
|11-19||Planning||Programming portion of Assignment 3 due before class.|
|11-21||Thanksgiving (No Class)|
|11-23||University Holiday (No Class)|
|11-26||Written portion of Assignment 4 posted. The username and password to access it were sent to the mailing list.|
|11-30||Final submission of revised Othello agents due.|
|12-03||Written portion of Assignment 4 due at the beginning of class.|
|12-14||Cumulative Final Exam: 8:00–10:00am|