The final exam for this class was on Friday, 22 March, in Center Hall 218, from 3:00 pm to 5:59 pm; here is an online copy . For those doing projects instead of the exam, the paper was due on the last day of class.
The midterm of 7 February is on the class website, in postscript, and a solution page for the second problem is available. The average was 60.2 and the variance was 43.42. (Here is a link to the ML code that produced these numbers; let me know if you find a bug!)
Note: Some linked material may point to pages from the last time I taught this class; this will be gradually updated as the quarter progresses.
Grades will be based on the larger of: 60% for the final, 20% for the homework, and 20% for the midterm; or else 40% for the final, 30% for the homework, and 30% for the midterm. The grader is a volunteer, Monica Marcus, so please do not ask too much of her. The final exam can possibly be replaced by a final project in some cases; to exercise this option, you must obtain my permission, based on a detailed outline of the project given to me by the end of the fourth week of classes; some suggestions are given on the projects page.
Prerequesites for this class are CSE 130, CSE 100, CSE 20, CSE 12, and one of the basic programming courses. If you are not familiar with the discrete mathematics in CSE 20, you should review it; a good CSE 20 textbook is Discrete Mathematics with Applications, by Susanna Epp (Brooks/Cole 1999).
If you are not a CSE student, you can email firstname.lastname@example.org to request a CSE student account.
If you find bugs in the lecture notes or textbooks, please send me email; I want to include a comprehensive bug list for the texts in the class notes.
My office hours are right after class, or by appointment.
ML (Standard ML of New Jersey, version 110.0.6) is available on all CSE
Unix machines at
/net/cs/class/development/elkan/cse230/sml-110/bin/sml, which you
can either define as an alias for
sml, or else you can add the
path for its directory to the
PATH variable of your environment.
Binary for BinProlog 4.00 for Solaris machines (such as the CSE instructional machines beowulf, bintijua, kongo, or the machines in the APE lab) can be found at /net/cs/class/wi99/cse230/prolog/bp, and also as a backup, at /net/cat/disk1/prolog/bp; the latter directory also contains many other files, including some relevant to exercises, so that you don't have to do all the typing yourself. Some basic notes on using BinProlog 4.00 are at binpro.html, where you will also find some examples.
The programming language semantics code, including the number definition
ZZ, is collected in the file obj/ZZetc.obj.html, and without the html
wrappings in the file obj/ZZetc.obj.
OBJ3 binary is on the CSE network at /net/cs/class/wi99/cse230/obj on the machine butinja, and also at /net/cat/disk1/goguen/obj on cat, but the cat is an older slower machine, so please don't run it there. If you can't access the CSE local network, you can get binary for Sun machines, source code, and documentation at ftp://ftp.cs.ucsd.edu/pub/fac/goguen/obj3, and you can get the latest (June 2000) open source release, OBJ3 version 2.06, cleaned up from version 2.04 (from 1992), engineered by Joseph Kiniry and Sula Ma, and built and supported by Joseph Kiniry; this runs under GCL 2.2.2. The OBJ3 Survival Guide. should be consulted for help getting started, and of course the OBJ3 Manual (there is also a pdf version) provides many details, including the OBJ3 standard prelude, which is the code that provides the builtin modules; from this you should be able to guess what each builtin module does. All this information and more is also available via the OBJ homepage.
If you have troubles with OBJ3, an alternative is the BOBJ system, which has nearly all of OBJ3 as a sublanguage, with fewer bugs, plus some more advanced features. You can get it running with
java -cp /net/cat/disk1/bobj0.9/bobj.jar bobj.BOBJfrom CSE unix machines on campus, and you can also download the system using the ftp link on the BOBJ homepage.