Goals: (1) Expand your horizons; get some idea of the range of different programming languages and the different thought patterns that each requires. (2) Learn fundamental concepts that will help you acquire new languages more easily.
Exams: There will be a midterm and a final; the final will be comprehensive, but will concentrate on the material presented after the midterm. The exams will count for approximately half of your grade; programming assignments will count for the other half.
Food: Food and drink are permitted during class as well as during breaks--just be considerate of your neighbors.
Assignments: We will study four languages in some detail: Java 1.1, Prolog, Lisp, and (probably) ML. You will be expected to write two programs in Java and one program in each of the other languages. If you would like to write a program other than the one assigned, check with me ahead of time.
Documentation: Document your programs to the extent that you feel is reasonable. I won't take off for poor documentation, but your internal program documentation must include your name. In addition, one assignment (probably the first) will require documentation in javadoc format.
Academic honesty. You can talk with other people about your programs, and even read each other's programs, but you write all your own code, and don't copy from anybody or anywhere. Exception: you can copy as much as you like from any code samples that I put on the web or hand out in class.
Required Textbooks: