Instructor: Eugene Wallingford
- Office: 327 Wright
- Phone: 273-5919
- E-Mail: firstname.lastname@example.org
- WWW: http://www.cs.uni.edu/~wallingf/
- Office Hours: click
- Required text:
- Electronic resources:
- The course web page: http://www.cs.uni.edu/~wallingf/teaching/161/
- The laboratory web page: http://www.cs.uni.edu/~wallingf/teaching/161/lab/
- The laboratory mailing list: email@example.com
- links on Common Lisp
- Resources on library reserve:
- Common Lisp: The Reference, by Franz, Inc.
- Common Lisp, by Wade Hennessey
- Common Lisp: The Language, by Guy Steele
- Lisp, by Patrick Henry Winston and Berthold Horn
I also have copies of Common Lisp: The Reference and Common Lisp: The Language in my office (for browsing only), as well as a number of other introductory and intermediate Lisp texts.
This 1-credit laboratory augments the the lecture course in Artificial Intelligence (AI) by providing experience with AI programming techniques. The laboratory introduces Common Lisp, reviews the fundamentals of symbolic programming, and considers such issues in AI programming such as pattern matching, search, problem solving, and reasoning tasks.
We will use the language Common LISP as a tool for studying symbolic programming. It provides a number of features that are unavailable in other common languages, ones that facilitate non-numeric, conceptual programming. LISP is also still the most common AI language in the world. The early weeks of the semester will consist of an introduction to the language and some of its basic features. From there, we will venture into the use of LISP for AI programming by studying and using code provided by our textbook authors. At the end of the course, you will use what you have learned to implement an AI program of your own. By the end of the term, you should feel comfortable reading and writing simple AI programs in LISP.
In addition to studying AI programming techniques, I hope that this laboratory will also help you to appreciate the excitement of AI. You will be studying and writing programs that do things you've never seen a computer do before -- at least from inside the program, where the ideas reside. There is a tendency on the part of students to become disenchanted when they see how AI programs work: "Oh, that's no big deal after all." But that is precisely the source of my amazement: You and I can write programs that do amazing things. We are limited only by our imagination and our dedication. I hope that by the end of the semester you understand how AI can still captivate computer programmers, and how you can take that wonder into your career as a practicing computer scientist.
Lab sessions will be primarily exercise-driven. Prior to each session, you will be asked to read from your text and from a lab exercise, as well as to do an occasional problem or two. Assigned reading must be completed prior to the scheduled lab session. We will meet at the beginning of each session for a few minutes each week to discuss the assigned reading or programming assignment, specifically to answer any questions you may have and to clarify any ambiguities in the text or project. You will then work on your in-lab assignment, with me present for assistance and instruction. You will be asked to do a small post-lab assignment after the session, in which you will do analysis that helps you to organize what you have learned from the exercise.
The semester can be viewed as three parts:
Those of you who know Scheme will likely feel comfortable with Common Lisp. Those of you with no previous experience in Scheme or Lisp may have to work a bit harder the first few weeks, but you will have time to learn enough of the language to succeed in the laboratory. I will be available for as much tutorial assistance as you need.
Note that there will be no examinations over laboratory material. Learning in this laboratory will be very pragmatic, focused on the use of symbolic programming techniques in building AI systems. Evaluation of student performance will be in terms of the quality of programming solutions. Professional standards for analysis, design, and programming are expected.
Grades will be determined on the basis of your performance on programming exercises. Final grades will be based on the following distribution:
Grades will be assigned using an absolute scale:
This means that there is no curve. All assignments are due at the assigned date and time. No late work will be accepted for a grade, but you must complete and submit every assignment in order to earn a passing grade for the lab.
Laboratory assignments will account for one-quarter (25%) of your total grade for the course.
All policies for the AI course as a whole also apply in the laboratory.
All laboratory materials will be made available via the World Wide Web during the semester. I also frequently send e-mail to inform you of breaking news and to answer common questions. E-mail and the web are, of course, accessible from all university computer laboratories.
You may use any Common Lisp implementation that you like. We have CMU Common Lisp (CMU/CL) installed on the Linux boxes available in the CNS labs. (We may still have GNU Common Lisp (gcl) installed on some platforms as well.)
If you decide to use CMU/CL under Linux, I suggest that you use emacs as your default text editor for the lab. It provides a lot of support for Common Lisp programming, some of which you can read about on the following help page.