I have three separate project ideas for CISC 499. Please feel free to come and talk with me about any of them. My office hours are listed on my home page, or send mail to make an appointment.
1. Investigating Prolog Graphics Libraries
2. Investigating Fruit, a GUI Library for Haskell
3. Teaching Tool: Computational Complexity
Project 1. Investigating Prolog Graphics Libraries
For this project, you will investigate and compare these options and
recommend one as the most suitable for beginning Prolog programmers.
What I'm after is a system that allows us to write some simple
graphics and is fairly easy to learn and use. Ease of use is more
important than fancy features.
Deliverables will include a report comparing the options, a
non-trivial sample program, and a web site with clear instructions,
suitable
for interested CISC 260 students.
If time and schedules permit, you will give a short presentation of
this project during the last week of CISC 260 in the winter term.
A few years ago, a 499 student did a similar project for the Haskell
language. You can view his web site at
http://astroboyqu.googlepages.com/what%3F
Project 2: Investigating Fruit, a GUI Library for Haskell
As mentioned under Project 1, a 499 student did a project about a
Haskell graphics library last term. He did a great job, but the
library he used -- like most Haskell graphics possibilities -- got its
job done by stepping outside of the functional paradigm. The notes on
his web page
mention a system called Fruit
which models user interfaces based on mathematical functions of
continuous time. It sounds like it would be possible to program a GUI
program entirely within the functional portion of the Haskell
language. I would like someone to do a follow-up project to
investigate Fruit. Deliverables will include a web page with
instructions on how to use Fruit, an example program, a report
comparing Fruit to the more imperative stragegy used in the previous project,
and possibly a presentation to the CISC 260 class.
The Fruit web site warns that it is a research prototype. If it turns
out not to be easily usable, the project would turn into a report on
the shortcomings of Fruit plus a shorter investigation into some other
possible functional Haskell graphics libraries.
The Prolog language provides only very simple I/O functions which are
a bit awkward to use. As part of my mission to convince students that
Prolog is not just a "toy language", I'd like to be able to produce
Prolog programs that look good. The SWI-Prolog web page lists a few
options for writing GUI applications with Prolog. One approach to
write the GUI part in another language such as Java or C++, and the
SWI-Prolog page describes communication mechanisms for this purpose.
Another is to use a graphical library called XPCE, also described on
the SWI-Prolog page.