CSE 230: Principles of Programming Languages
It may be possible to substitute a final project for the final examination;
for this to happen, you must obtain permission from me for a specific project,
based on a detailed written project proposal, due at the end of fourth week.
You may work in a team of up to three people on the same project, but again
permission is required. Some suggested topics are given below, but you may
propose others; projects that are mainly programming are not suitable for this
Your written report should conform to the usual standards of good
academic computer science publications, and in particular should include clear
explanations for all programming examples, and should have a bibliography with
precise citations for all works used. In addition, there should be
introduction and conclusions sections. References should be at the end, in a
standard academic format, with title, author, date, publisher, etc.; do not
just give a URL! You must not recycle a paper written for some other class,
or (of course) something found on the internet. You must make good use of
concepts introduced in this class.
- Do a semantics for a fragment of ML that includes integers, lists and
first order recursive functions, using OBJ. Use it to prove the correctness
of simple ML programs like reverse. You will have to model the run-time
- Write an applet for Post systems that can be used by students in CSE 130
to learn how they work; it should be possible to define any Post system and
then do proofs in it; you should use graphics in a natural way, not some
command line syntax.
- Write new material to be inserted into Stansifer's book on the Java
language; you only need to write inserts for places where special features of
Java are germaine and/or interesting, not at every possible place. It would
be useful to replace examples that use Ada by examples that use Java wherever
possible, because Ada is now less important than Java.
- Write new material to be inserted into Stansifer's book on C and/or C++;
you only need to write inserts for places where particular features of these
language are germaine and/or interesting, not at every possible place.
- Give a semantics for a language like that in the Algebraic
Semantics textbook, but with pointers, and with both environments and
stores in its semantics.
- Develop some interesting examples of higher order parameterized
programming, along the lines of (but different from) the induction examples
linked on the BOBJ system homepage.
To CSE 230 homepage
Maintained by Joseph Goguen
© 2000, 2001, 2002 Joseph Goguen
Last modified: Thu Jan 17 18:16:34 PST 2002