CS 2360

PAGE UNDER CONSTRUCTION

CS 2360 - Knowledge Representation and Processing

Spring Quarter 1996


Instructor: Kurt Eiselt
Office: College of Computing 164B
Electronic Mail: eiselt@cc.gatech.edu
Phone: 894-8386
Office Hours: Tu Th 3:00pm-4:00pm

Also starring: Alex Snoeren
Electronic Mail: alex@cc.gatech.edu
Office Hours: to be announced

and: Stuart Bernstein
Electronic Mail: stu@cc.gatech.edu
Office Hours: to be announced

Special guest star: Lyman Taylor as "The Lurker"
Electronic Mail: lyman@cc.gatech.edu

Newsgroup: git.cc.class.2360

Course Description: CS 2360 is intended for relatively new students to computer science. The goal of this course is not so much to help you learn to write efficient computer programs, but rather to help you learn to be efficient computer programmers. Another way of putting this is that you will learn to write programs for the benefit of people, as opposed to writing programs for the benefit of computers. As you will see during this course, these two ideals will often be in conflict. Along the way, you'll be introduced to a different paradigm for problem-solving and programming than the one you're probably most familiar with; this new paradigm is often referred to as functional programming, although we'll stray far away from the purist's approach to functional programming in this course. You'll also become intimately aware of program design principles of decomposition, modularity, transparency, and abstraction. In this sense, this course can be viewed as a software engineering course. At the same time, you'll also gain experience with diverse methods of representing symbolic information, as well as different ways of manipulating that information, so you might also view this course as an algorithms and data structures course.

Our main vehicle for exploring this terrain will be the programming language called Common LISP. Common LISP is the second oldest computer programming language currently in widespread use, but don't let the age fool you--some implementations of Common LISP offer the most sophisticated programming environments in existence. LISP is usually closely identified with the world of artificial intelligence, as it is the language most often used in the development of "intelligent" systems. Yet LISP has also gained acceptance as a tool for the rapid protyping of other large systems such as compilers and operating systems. In any case, knowledge of Common LISP will give you an additional tool for solving problems you may be faced with in your career.

Prerequisites: Everyone in this course should have successfully completed CS 1501 and CS 1502 or their equivalents. Course credit cannot be given for CS 2360 and either CS 1411 or CS 2201. Also, course credit cannot be given for CS 2360 and CS 4730.

Required Texts: ANSI Common Lisp by Paul Graham (Prentice Hall, 1995).

Recommended Texts: Common LISP: The Language (second edition) by Guy L. Steele (Digital Press) may be especially useful, and is regarded as biblical by serious LISP hackers. The contents of this book are available via the World Wide Web.

Other Resources: Lyman has collected a bunch of cool LISP stuff into what he calls the LISP Guildhall.

Course Requirements and Grading: There will be three exams in this course. The two midterm exams will each count for 10% of your grade. The final exam will count for 30% of your grade. (Occasionally we encounter students who are at a disadvantage in exams because of a reading or other disability. If you have been diagnosed as having such a disability, please see me so that we can arrange for a more appropriate method of evaluation for you.) There will be eight programming assignments, each of which will be worth 4% of your grade. There will also be nine mandatory laboratory sessions during the quarter, during which your teaching assistants will evaluate your participation and performance. Each of these lab sessions will be worth 2% of your grade.

Late Assignments: Assignments are due no later than 8:00am of the day specified in the assignment posting, which you'll find on the newsgroup for this course, as well as here on the Web. We'll aim to have a new assignment posted every Tuesday night, with that assignment usually due the following Monday at 8:00am. We will post one assignment each week, except for the last week of classes, so we'll have to grade and return the assignments pretty quickly. Consequently, we won't have any time to deal with late assignments, so turn in whatever you've done by the specified day and time. There will be no credit for late assignments.

Computing: All programming assignments are to be done in Common LISP. Macintosh Common LISP is available on many of Georgia Tech's Macintoshes; Common LISP is also available on acme. The College of Computing's workstations have Harlequin LISPWorks, which has an X-Windows interface. Macintosh Common LISP is available to Tech students at relatively low cost, and Harlequin's FreeLISP for IBM-compatible PCs can be downloaded free of charge from Harlequin's Web site (we'll get the details to you soon). In addition, there are a number of freeware and shareware versions of LISP available via the Internet, but many of these versions do not adhere completely to the Common LISP standard. So beware---any problems of incompatibility between your version of LISP and our version of LISP are in fact your problems, not ours, and your programming assignments will be graded accordingly.

Academic Misconduct: Because you are being graded relative to other students in this course and not on an arbitrary, predetermined scale, any student's attempt to increase his or her grade through dishonest means will unfairly decrease the grades of other honest students. The homework assignments in this course are not intended to be collaborative exercises, but on the other hand we don't want to discourage discussion between students about ideas pertaining to this course. So, if you incorporate ideas into your homework assignments that did not originate with you, or did not come from the obvious sources--your instructor, teaching assistant, textbooks, lectures, or supplementary reading materials provided in this course--you must give credit to your sources. Furthermore, at no time is it acceptable for you to share your solutions to the homework assignments with other students, whether these solutions are complete or partial. You are not to work on these assignments in groups, whether on paper or at the computer. Students who fail to follow these rules will be charged with academic misconduct, which carries severe penalties. Of course, there is to be no collaboration whatsoever during exams. If you haven't already done so, you should take the time to become familiar with Georgia Tech's definition of academic misconduct and the policies and procedures pertaining to academic misconduct. This information can be found in the 1995-96 general catalog on pages 355-360.

Tentative Course Schedule: