There are two classes of assignments. One is comprised of the five assignments detailed below, totaling 10% of your course grade. The other is the Semester Project Your project will have three due dates for the initial plan, interim report, and final report, totaling 25% of your course credit. Details are on the Project page.
In practice, in business and industry, working in teams makes a lot of sense. In teaching, it can be a troubling issue. The problem is that I have to give every student a separate grade. Therefore: Any pair of students that wants to work together, primarily on your Project, will be required to give me a solid plan for their work that makes it possible for me to be sure that each person is pulling their weight and gaining the skills and knowledge needed. Note that as soon as two students work as a team, they must produce twice the work, in amount and/or quality, that I expect from a single individual. If an individual hands in work actually done by another, that violates the regulations of this University. I can often detect such violations, investigate them; the consequences can be serious.
If you need to hand in work that requires working things out on paper, e.g., using logic notation, drawing trees, etc., you may hand it in as hardcopy. But the programming portions of your assignments, and your project work in particular, are best sent via email. All email to me regarding the course must have a Subject line beginning with csg120sp06 or I will ask you to resend it properly.
Many of the exercises in PAIP have answers included. Whenever such exercises are assigned, you must add value, that is, you should comment the code, comment the results, try various inputs and variations, and use step, trace, and Norvig's debug and undebug as appropriate. Sometimes the compile code will be so efficiently structured that tracing and stepping show you little. In that case paste in the definition again, to be sure your function is not compiled.
Some assignments may be handed in by simply pasting your text into email. If you attach a file to your email, you may only attach a single file. Therefore, if your work consists of more than a single file (which it normally should), they should be converted to a single zip, tar, or jar file. This would include all code, input, results, Readme (required!), etc. In addition, the body of your email should briefly describe, in a sentence or two, what is being attached in such a case. If your input or output has extraneous material in it when produced, feel free to edit it down, leaving only its important content. You must not give your file a generic name such as "Assignment3". Instead, a combination of your name, class, and assignment name should be used, e.g., "YangCSG120sp06Proj2". All code should be commented and include your name, date, course, etc.
The topics of the assignments correspond with the five major topics covered in the course. In the programming portions of the assignments, you will be asked to draw on the two Lisp codebases set up by Norvig and Russell, one for PAIP and the other for AIMA. Portions of some of the assignments will be exercises to work out on paper; other portions will involve your writing code or doing careful and documented runs of code from the PAIP or AIMA collections. The preferred, and most powerful, is our Solaris Lisp system.
Assignment #0. Study the Lisp page for the course. If you're new to Lisp, dive into Chapters 1 and 3 of PAIP. Install a Lisp system on your favorite machine or use the Solaris Lisp system. Try it out, with PAIP to guide you. Read about how to download the PAIP software and then get it running in the Lisp system(s) you've chosen. For Assignment #1, you also may need to download and run some code from AIMA (TBA).
Sign up right away for the mailing list. You also need to attend to the follow-up mail the system will send you after you sign up. Please include your name in the sign up process. I will immediately begin using the list to alert you about updates and changes to the syllabus, readings, assignments, Lisp use, etc. You will not hear about these things in a timely manner unless you're signed up.
Assignment #1, due emailed by 11:59pm, January 26th. Hardcopy portions due in class Jan 30th.
PAIP: Chapter 1: Do Exercises 3, 4, and 5.
Use both step and trace for #3 and #4.
(Enter :help in ACL to see useful commands such as :his, :step, and :res -
also, see the Allegro CL 6.1 Documentation linked on the course Lisp page,
this section on debugging.)
Chapter 6: Do Exercises 6, 8, and 10, also using step and trace.
Chapter 6: Run the four examples in Sec. 6.4, trip, iter-wide-search, graph-search, and search-gps using (debug :search) and later, (undebug). (Will give the extra output shown in PAIP.) Discuss the operation of the searches and why they give the various outputs they do.
Written assignment on Agents, in AIMA: Do Exercises 2.1, 2.2, and 2.3, and 2.4.
Extra Credit: Do one or two of the vacuum world implementation exercises, Exercise 2.7 or a later one.
Assignment #2. The first posting, 2/21, contained exercises from Chapter 7. The remainder, exercises from Chapters 8, 9, and 10, were listed in this class email on 2/27 and are detailed below.
Go to CSG120 home page. or RPF's Teaching Gateway or homepage