Introduction to Artificial Intelligence (Fall 2007)
- 2007-09-27: Added some links in the resources section.
|TA:||Jeff Patti (jep422)|
|Office Hours:||W 14:00–17:00 (tentative)|
|Books:||Required: Russell & Norvig, Artificial Intelligence: A Modern Approach, the Prentice Hall Series in Artificial Intelligence. ISBN 0137903952.|
|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 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.