Tuesday and Thursday, 7:00pm-8:30pm, Science Center 264
Course Website: http://www.cs.swarthmore.edu/~eeaton/teaching/cs63/index.html
E-mail is the best way to reach me, and I make a concerted effort to respond to all e-mails within 24 hours (often, much less!). Primarily, I will be on-campus and available in the evenings, although we can make other special arrangements as needed. During the day, I work as a research scientist at a local AI research laboratory. Often, it may not be possible for me to respond to e-mails weekdays between 8am - 5pm, so most replies will come in the evenings.
Swarthmore catalog description: Artificial intelligence (AI) can be defined as the branch of computer science that is concerned with the automation of intelligent behavior. Intelligent behavior encompasses a wide range of abilities; as a result, AI has become a very broad field that includes game playing, automated reasoning, expert systems, natural language processing, modeling human performance (cognitive science), planning, and robotics. This course will focus on a subset of these topics and specifically on machine learning, which is concerned with the problem of how to create programs that automatically improve with experience. Machine learning approaches studied will include neural networks, decision trees, genetic algorithms, and reinforcement techniques.
Artificial Intelligence is, in my opinion, the coolest and most exciting subfield of computer science. In this course, we will explore several major areas of AI, including search, game playing, knowledge representation and reasoning, planning, and machine learning. We will also relate these topics to their applications in robotics, computer gaming, medical diagnosis, computer vision, natural language understanding, and many other areas. Google, NSA, and NASA all use AI technology. AI's successes, such as the IBM Deep Blue chess program beating Kasparov (1996), the DARPA Urban Challenge (2007) and Grand Challenge (2005, 2004) autonomous vehicle competitions, and solving checkers (2007) are well-publicized and very popular.
Required Textbook: | |
![]() |
Stuart J. Russell and Peter Norvig, 2002. Artificial Intelligence: A Modern Approach, 2nd edition, Prentice Hall. ISBN: 0137903952. The website for this book has links to many useful online AI/Lisp resources. |
One of the following books on Lisp: | |
![]() |
Peter Seibel, 2005. Practical Common Lisp, Apress. Full text available online at http://gigamonkeys.com/book/. A free pdf version is available from Apress at http://www.apress.com/resource/freeebook/9781590592397 |
![]() |
Paul Graham, 1995. ANSI Common Lisp, Prentice Hall. ISBN: 0-13-370875-6. This is an excellent book for learning lisp, and is available only in a print version. I'm not requiring it for this course, since Practical Common Lisp is available online. |
Resources: | |
![]() |
Guy L. Steele, Jr., 1990. Common Lisp : The Language, Digital Press, 1990. ISBN: 1555580416. Text available online at http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html. This is the reference manual for Common Lisp. It isn't required for the course, since most of you will find the online version sufficient as a resource, but there is a print version if you like real books. |
![]() |
The LispWorks Common Lisp Hyperspec. Available online at http://www.lispworks.com/documentation/HyperSpec/Front/index.htm. |
Prerequisite: CPSC 035.
A background in probability, statistics, and linear algebra would be helpful, but it isn't required. Those of you without this background might have to work a bit harder when we get to those sections of the course.
The course will be broken up into the following rough sections:
See the course schedule for more details.
A course mailing list (cs63@cs.swarthmore.edu) has been established for distributing news and discussing course-related topics. Please post general problems, news articles, questions, and answers to the list for the benefit of the entire class. At no time should students post homework solutions or solutions to exam questions to the course mailing list; posting such solutions will, of course, be interpreted as academic dishonesty. Posting such solutions will be the sole responsibility of the course staff. Please e-mail individual concerns directly to me.
I have already subscribed everyone who was registered for the course as of August 30th; if you joined us afterward or would prefer to register another e-mail address, please let me know.
Attendance and active participation are expected in every class. Participation includes asking questions, contributing answers, proposing ideas, and providing constructive comments.
As you will discover, I am a proponent of two-way communication and I welcome feedback during the semester about the course. I am available to answer student questions, listen to concerns, and talk about any course-related topic (or otherwise!). Come to office hours! This helps me get to know you. You are welcome to stop by and chat. There are many more exciting topics to talk about that we won't have time to cover in-class.
Whenever you e-mail me, please use a meaningful subject line and include the phrase "CS63" at the beginning of that line. Your e-mail will catch my attention and I will respond quicker if you do this. I make an effort to respond to e-mails within 24 hours. Since I work at a research lab during the day, most of my replies will come in the evening.
Although computer science work can be intense and solitary, please stay in touch with me, particularly if you feel stuck on a topic or project and can't figure out how to proceed. Often a quick e-mail, phone call or face-to-face conference can reveal solutions to problems and generate renewed creative and scholarly energy. I strongly recommend beginning homeworks and projects early, since we will be covering a variety of challenging topics in this course.
Your final grade will be composed of :
Incomplete grades will be given only for verifiable medical illness or other such dire circumstances.
There will be six (6) homeworks assigned over the course of the semester. Each homework will be assigned at least one week in advance of its due date. The homework assignments will be a mix of written, programming, and analytical components.
Homework assignment solutions must be turned in at the start of class in typeset hardcopy on the designated due date. Code will be submitted using the handin63 program. Homework assignments can be submitted up to 24 hours late for a 25% penalty, and 48 hours late for a 50% penalty. No submissions later than 48 hours will be accepted. Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance.
0-24 hours late: 25% penalty
24-48 hours late: 50% penalty
more than 48 hours late: no credit
Penalties are applied by taking off that percentage of the points you would have earned:
your_score_without_penalty * (1 - penalty) = your_score_with_penalty.
For example, if you would have earned a 90% on the assignment, but you turned it in 5 hours late, your score would be
90% * (1 - 0.25) = 67.5%.
All homework solutions must be typeset. Any solutions requiring math or proofs must use proper mathematical notation. Similarly, graphs should be well-constructed with all axes properly labeled. I highly recommend the use of the LaTeX text formatting system, but you can use any program capable of producing proper mathematical notation. The main course page contains links to good LaTeX websites and links to example files.
All solutions are required to be your own, individual work. I encourage you to discuss methods, concepts, and assignments with anyone; however, the solutions turned in must be your own work. A good rule of thumb is to be alone when you sit down to actually generate solutions to the assigned problems, and to not show your solutions to anyone else.
At the top of your submission, you must include a clear statement specifying the source of any assistance you received on this assignment. This includes any websites you consulted, other students with whom you discussed any of the problems, etc. If you did not receive any assistance, you must say so. Submissions without this statement will be penalized
There will be one midterm and a final exam. The exams will be closed-book and closed-notes. In the case of verifiable medical excuses or other such dire circumstances, arrangements must be made with the instructor for a makeup exam before the test date.
Exams will cover material from lectures, homeworks, and assigned readings (including topics not discussed in-class). So, keep up with those readings!
Swarthmore CS Department's Academic Integrity Policy: Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes sharing solutions after the due date of the assignment. Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook: "Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion."
All this being said about academic honesty, I do want to encourage you to discuss the material and work together to understand it. Here are my thoughts on collaborating with other students:
The readings and lecture topics are group work. Please discuss the readings and associated topics with each other. Work together to understand the material. I highly recommend forming a reading group of 3-5 people -- we will explore many challenging ideas in AI and it helps to have multiple people working together to understand them.
It is fine to discuss the topics covered in the homeworks, to discuss approaches to problems, and to sketch out general solutions. However, you MUST write up the homework answers, solutions, and programs individually. You are not permitted to share specific solutions, mathematical results, program code, knowledge representations, experimental results, etc. If you made any notes or worked out something on a white board with another person while you were discussing the homework, you shouldn't use those notes while writing up your answer, however tempted you may be to do so.
You are fully permitted to (and should!) discuss the project with members of your team. I also encourage you to work outside of your team to understand the other topics in the course. However, remember that there will be a competition, so you don't want to give other teams any of your good ideas!
Exams, of course, must be your own individual work.
If you have any questions as to what types of collaborations are allowed and which are dishonest, please ask me before you make a mistake.
Thanks to Marie desJardins, Tim Finin, and Terran Lane for making their course materials available. Many of the course materials for this class have been adapted from those sources.