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: We will have a short quiz at the beginning of each class period, rather than hourlies or midterms. The final exam will (probably) be take-home. If you miss a quiz, see me about making it up.
Food: Food and drink are permitted during breaks and during class. Just be considerate of your neighbors.
Assignments: We will study four languages in some detail: Prolog, Lisp, ML, and Java. You will be expected to write at least one program in each of the four languages. If you would like to write a program other than the one assigned, that will probably be OK with me, provided that you clear it with me early; the due date is too late to make a substitution!
Documentation: Document your programs to the extent that you feel is reasonable; your internal program documentation must include your name. (One assignment will also 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.
Programming Languages: Concepts and Constructs, Ravi Sethi, Addison Wesley, ISBN 0-201-59065-4. Required.
Java in a Nutshell (2nd edition or later), David Flanagan, O'Reilly & Associates, ISBN 1-56592-262-X. Also required, but if you wait they might come out with a 3rd edition. You can buy this book just about anywhere.
URL for this course: http://www.netaxs.com/people/nerp/proglang/index.html.