CSE 230: Principles of Programming Languages
Project Suggestions

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 course.

  1. 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 stack.
     
  2. 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.
     
  3. 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.
     
  4. 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.
     
  5. 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.
     
  6. 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.
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.


To CSE 230 homepage
Maintained by Joseph Goguen
© 2000, 2001, 2002 Joseph Goguen
Last modified: Thu Jan 17 18:16:34 PST 2002