Project Ideas
This file last modified .
Project suggestion: Get an early start!
You do not have to wait until the due date for picking a paper topic in order to discuss it with me. Since you or your team must choose a topic different from those of your classmates, the earlier you decide, the more latitude you will have. Some good languages to analyze include APL, Smalltalk, Snobol4, Haskell, ML, Python, or Common Lisp.
For the practically minded, ftp://gandalf.umcs.maine.edu/pub/msdos/compilers has public domain/shareware compilers for some languages that would be appropriate. If you need a computer to mount software on, you may arrange with me to use a computer in Frey 366.
For the theoretically minded, some programming language issues are discussed in the Alan M. Turing awards, an annual award that is sometimes considered the “Nobel prize” of Computer Science. I’d be glad to discuss them with you. Here is a list of award winners: < http://en.wikipedia.org/wiki/Turing_award >. You can see how many of the papers address programming language issues by the names that we will meet in our course: Edsger Dijkstra (Algol, parallel construction), Robert Floyd (axiomatic semantics), John Backus (Fortran, functional programming), Ken Iverson (APL), Ted Codd (SQL), Robin Milner (ML), Alan Kay (object-oriented programming, or Dana Scott (denotational semantics).
I’m a “programming languages junkie,” so I’d be delighted to go on a journey with you to a topic that I don’t know anything about.
The language Octave
What are some good characteristics of a language for graphics?
That’s a good question to ask if you are taking both Organization of Programming Languages (OPL) and Computer Graphics (CG) in the same semester, and you want to have a single project that spans both interests.
In other years in this course, students have discussed the expensive graphics language Flash Action Script by Macromedia and the free ray-tracing language POVRay 3.1. You might be interested in the new XML graphics standard language SVG, although by itself, it’s slim pickings as programming languages go: no local variables, no event handling, no subroutines, and no complex data types. You might be interested in the Virtual Reality Modeling Language (VRML), which actually does have an event-handling model that you could contrast with Java’s.
One language used for graphics mostly, but a variety of engineering and mathematical applications more generally is Matlab. We have Matlab in our labs. It is not free.
Octave is free software to run under Linux whose programming language is largely compatible with Matlab. Visit < http://www.octave.org > to download it. Octave is sometimes misspelled Octive–just a heads-up for you if you are using a search engine to learn more.
I haven’t had much experience with Matlab. I published one article using Matlab back in 1992, and I tried using Matlab without success to draw the data for Dr. Douglas Phillippy’s dissertation in 3D for him one time.
So here’s my suggested two-course project: for CG draw Dr. Phillippy’s data; for OPL, discuss the suitability of the features of the language that you used, based on Sebesta’s criteria for a good language, supplemented by our class discussion of Sebesta. If you want to use this as an opportunity to learn a little Linux in the process, using Octave would be a nice supplement, either in our Frey 366 laboratory, or on your personal box.
The semantic web
Is Prolog a suitable language for the “Semantic Web” project? See < http://www.w3.org/RDF/ >
We will be learning some Prolog in this course. I got the idea for this question from the article “Back to the Future,” by Michael Swaine, the editor of Dr. Dobb’s Journal. It was in the August 2001 issue, on pages 97-102. Our Library has a copy.
Information about the Resource Description Framework (RDF) is available at < http://www.xml.org > What would a good Resource Description Language (RDL)— to use Swain’s term—look like? Is Prolog better than SQL?
COBOL
We joke about how old fashioned COBOL is: No recursion; limited scoping options. But it supports random access files and indexed sequential files. Both industry and government have thousands of lines of COBOL to maintain. If you are interested in a resume-builder, you might want to learn COBOL. It’s an easy language to learn. I have a free copy of Realia COBOL and a book about the language. Flexus offers a free Java front ends to allow COBOL to use a browser as its client < http://www.infogoal.com/cbd/cbdz001.htm >. There are COBOL compilers that compile to the Java Virtual Machine. A 10-day evaluation version of one is available.
< http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html > Obviously with that short a window of opportunity, you would probably be best-served by learning COBOL using Realia and then switching to see how it performs under the JVM. By the time that you read this, a free COBOL compiler might be available for the JVM.
Other languages
The site < http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html > just mentioned lists scores of languages that run under the JVM, giving hints for other appropriate languages to study as a project for OPL. There are functional languages like Scheme and ML; object-oriented languages like Smalltalk and Eiffel; scripting languages like Tcl and Perl; stack-oriented graphics languages like Forth (or like Postscript, although that’s not available to run under the JVM yet).
Ideas from previous semesters
Don’t use these ideas directly. I’ve commented on them to help you see what would make a good project.
Why Mercury is a better functional language than Prolog (Jason Barkanic)
How strong typing can improve a functional language. Mercury is being used by Microsoft, so it was a good choice. Jason did a great job defending his position.
Why Smalltalk is the wave of the future (Scott Benedict)
Since Smalltalk (1972) was probably the second object-oriented (OO) language after the original Simula I (1962) and Simula 67, it sounds funny at first to say that an old language is better than the most recently invented OO language. That’s what made Scott’s paper so interesting. He defended his thesis well.
Java for databases (Chad Braun-Duin)
The title is deceptive, since it doesn’t make clear that the paper in fact is evaluating and comparing three approaches to putting Java in a database: SQLJ is now an ANSI standard in syntax, semantics, and binary compatibility; JDBC is a call-level SQL API based on ODBC; and then Chad did a third that I forget right now.
JavaSpaces (Erica Brubaker)
JavaSpaces is a parallel programming language based on the language Linda, the work of Yale University’s David Gelerntner in 1989 (see Nicholas Carriero and David Gelernter, “Linda in context,” Communications of the ACM, Vol. 32, No. 4, April 1989; see also http://www.cs.yale.edu/Linda/linda.html ). IBM has a similar language, TSpaces. Erica discussed the programming language aspects of JavaSpaces.
Is Delphi better than Visual Basic for business applications? (Emily Clepper)
Is C++ better than Eiffel? (David Clymer)
PHP3 is a good alternative to ASP and is open source (Jamie Detweiler)
How C# is better than C++ or Java (Joe Hoot)
How Perl is better than Java for server-side CGI (Mike Horst)
How Prolog models relational databases well (Melissa Kofroth)
Is Perl better than JavaScript? (Graham Wert)
It’s not that these other examples don’t deserve a paragraph of explanation, but by now you get the idea that an excellent project will evaluate a computer language, you get the idea that one way to evaluate something is to compare it with something else, and you get the idea that the best comparison requires a context: Better for what?