Leap directly to the Tentative Course Schedule
Instructor: Kurt Eiselt
Office: College of Computing 112
Electronic Mail: eiselt@cc.gatech.edu
Phone: 894-8386
Office Hours: 3:00-4:30pm Th or whenever my office door is open
Teaching Assistant: Christina Berry
Electronic Mail: chrisb@cc.gatech.edu
Office Hours: 11:00am-noon TuTh and 8:00-9:00am F
Teaching Assistant: Mark McClain
Electronic Mail: mork@cc.gatech.edu
Office Hours: TBA
Teaching Assistant: Kurt Eckhardt
Electronic Mail: ke@cc.gatech.edu
Office Hours: TBA
Teaching Assistant: Dan Lerner
Electronic Mail: lerner@cc.gatech.edu
Office Hours: 3:00-4:30pm W, 2:30-4:30pm Th, and 11:30am-1:30pm F
Important Note: While both your instructor and one of your TAs share
the same first name ("Kurt"), neither of them receives email at
kurt@cc.gatech.edu. That's an entirely different person who is not related
to this course.
Newsgroup: git.cc.class.2360
Website: http://www.cc.gatech.edu/computing/classes/cs2360/fall98/index.html
Course Description: CS 2360 is intended for relatively new students to computer science. One 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. In addition, you'll also gain experience with diverse methods of representing symbolic information, as well as different ways of manipulating that information.
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, neither of which has been offered for the past several years. Also, course credit cannot be given for CS 2360 and CS 4730 (because they're the same course).
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 Taylor, a frequent teaching assistant for CS 2360 and a perennial participant in its newsgroup, has collected a bunch of cool LISP stuff into what he calls the LISP Guildhall.
Newsgroup: We will make use of the local newsgroup git.cc.class.2360 for broadcasting announcements, revisions, scores, and other information pertinent to the course. Read it often. You may also use the newsgroup to make comments and suggestions, or ask questions of your classmates, TA, instructor, or anyone else who may be reading the newsgroup. The class notes and the homework assignments can be found by following the appropriate links from this Web page (as indicated in the course schedule below).
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. In addition, there will be some number of "motivational" quizzes given without warning throughout the quarter. These quizzes will count for 6% of your final 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 required programming assignments, which will be worth a total of 28% of your grade. (The distribution of percentage points is indicated in the tentative schedule given below.) Any LISP code that you submit for grading must be free of syntax errors. That is, even though the logic might be wrong, the LISP code must be acceptable by our Common LISP compilers without generating unrecoverable errors. The teaching assistants will not grade any code that blows up while being loaded, before they get a chance to run it. There will also be nine mandatory laboratory sessions during the quarter, during which your teaching assistants will evaluate your participation and performance. Together, these lab sessions will be worth 16% of your grade. (Again, the distribution of percentage points is shown below.)
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 (or early Wednesday morning, so don't get weirded out if you don't see a new assignment on Tuesday night), with that assignment usually due the following Monday at 8:00am. (The last due date will be pushed back to Wednesday because of the Thanksgiving holiday.) 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 from Digitool 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 no cost (talk to Kurt if you're interested), and Harlequin's FreeLISP for IBM-compatible PCs can be downloaded free of charge from Harlequin's Web site. I'm also told that Allegro Common LISP from Franz Inc. is available for free for those of you who run LINUX on your PCs, but I haven't confirmed that yet. We'll put a pointer here as soon as we have one. 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.
Labs: Your labs will be held Wednesday afternoons in the Windows NT cluster in the College of Computing. You'll be using Harlequin's LispWorks there. Labs will begin on Wednesday, September 30.
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 could 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 1997-99 general catalog on pages 364-371.
Last revised: December 8, 1998