Available Projects

These projects are ideas generated either by students and staff or by U.C. professors. Project ideas listed here by students and staff are ideas only. Project ideas listed here by faculty may be worked on for CS 199 credit. CS 199 credit for other projects listed below requires that you convince a faculty member to sponsor your project. CS 199 credit is not required to work on a project though.

XCF Projects

Extensible Web Crawler An extensible web crawler would provide a basic architecture for crawling the web. It could be implemented as a C library, allowing extensions in C/C++, or it could have an embedded Tcl or Perl interpreter, allowing people to write a web crawler in a common scripting language. This project would be useful anytime you are doing an in depth search for information on the web. Heuristics could be developed to order documents by importance. Mail Tracy for a more detailed description.
Mime Type Resource Server This would be a server that archived information based on its mime type. The general idea is that the server provides a well maintained, read-only archive of data, searchable by mime type. An example application would be a network enabled drawing program that could connect to the resource server and allow the drawing program user to browse available clip art. This moves the clip art archive maintenance to a central location, which is likely to improve the quality and organization of the information. Mail Tracy for a more detailed description.
Mbone Juke Box An internet jukebox which allows people on the net to make their CD-ROM players available to the world, registering CD titles on the Mbone, and allowing users from the net at large to vote on which song title should be played from the the pool of disks. Mail Ali for a more detailed description.
Standard easy X-interface and start-up configuration
  • design an easy window manager/w.m. config file for beginning users
  • design a suntools look-alike window manager and start-up script
  • write a suntools compatibility library
  • set up reasonable default X-resources files (which will serve also as a template)
A Music Notation System for X This project would provide software for the production of music scores. One would be able to use a workstation running X to draft scores by hand, utilizing an object- oriented graphical interface. This interface would probably be similar to "MacPaint", "idraw", etc. Alternatively, one could load in Musical Instrument Digital Interface (MIDI) data and get it displayed, with various options for note quantization, suppression of dynamic markings, etc. Then, one could modify this data graphically for display on terminal or printer (probably in PostScript form), or retranslation into MIDI data. latta@XCF.Berkeley.EDU
A Control and Data Flowcharter for C Source Files The goal of this project is to provide an application which will make clear the data and control flows of C source files. A clear, extendable protocol for producing graphical and typographical output will be developed and used. latta@XCF.Berkeley.EDU
Melvyl/Gladis client Provide a system to query the Melvyl and Gladis databases, including creating reference lists for later hard-copy printout or save to a regular file. This would be a more efficient tool than the current "telnet gladis" interface. An HTML interface sounds like a good idea.
SADT tools "SADT" stands for Structured Analysis and Design Technique, a system of graphically outlining a plan, or more specifically a program. There are several books on structured analysis, and IEEE Computer or Spectrum had an issue on this a year or two back. It's the next step beyond flowcharts.
Help and documentation database Design a database for holding documentation of all depths on any and all programs. Design an 'oracle' to browse through this database, include a facility for message passing to/from other programs and for indexing and cross-referencing. The objective is for a help service to hold documentation, not individual programs -- this allows cross referencing. This could be rolled up into a Web Publication/Documentation System.
Spreadsheet program (for X) Something lacking in the UNIX public domain realm.
Foreign language/multiple font terminal For use by, e.g., a Webster Database viewer, or for people interested in using French, German, or even Chinese/Japanese, etc.. This supposedly exists for Japanese ("Jterm").
The XCF X-Map Project X11 Client using the recent fast database Remove the annoying outward growing business. Clean it up and make it ready for a release.
X Control Panel Ala MacIntosh, and for modifying your resource database. HP Vue has something similar.
Visual Profilers Both run-time and memory. A freeware copy of purify.
Network Databases Distributed Databases, A better alternative to yp/the nameserver -- security considerations. This project has many potential problems and needs more background than can be given here. [See "dap". In fact, a project in itself would be to finish the dap protocol spec. --Phil]
Mail compression/aging utility to keep archives, and to keep archives from growing too large interface to existing mail front ends (Mail, mh, mush).
Integrated Calendar/reminder program For both X and tty. Should be able to send mail to you x number of days in advance. See the "month" program.
Enhance the current calculator programs Programmable, storage, check-book balancing, neat graphical user interface? This would be extremeley useful.
Geometric Data Base Definition and Interface Combine data with locations on a plane or in three dimensions, and displaying the information in a screen. First example utility: browser for the periodic table of the elements. (more utilities should be thought of).
Transparent Athena Widget Set Replacement Everyone knows the athena widget set sucks (the one that xrn, xterm, and almost everything else in the X distribution). The idea is to write a widget library with an interface identical to Xaw's, but with niftier rendering, like motif. This requires much less work than you might think. Ali for more detail.
RPC for Scheme Wouldn't it be neat if you could have remote execution of scheme functions with parameter passing and the whole works? Contact Ali for more info.

Faculty Sponsored

Top 40 simulator (Mike Clancy) I'm looking for someone to write a simulation program that generates a sequence of top-40 music listings. Prerequisite background includes completion of CS 61B or equivalent, plus a statistics course; the latter is needed to figure out how to model the appearance and disappearance of songs in each week's top 40. I expect that 1 unit of CS 199 will be appropriate for the work required. For more information, contact me at clancy@CS.Berkeley.EDU or 2-7017.
Berkeley Logo Interpreter (Brian Harvey) Berkeley Logo is an interpreter for the Logo programming language that was developed by me and several former Berkeley students; it is distributed as freeware and widely used around the world. There are versions for DOS, Mac, and Unix.

I'm looking for help in maintaining/developing this program; both small and large projects are available. Alas, I have no funds, but CS 199 credit is possible. Here are some things on my list:

  • Fixing bugs! I have a long list of them.
  • Platform-specific user interface improvements. Implement things like cross-program copy and paste, resizing windows with the mouse, and stuff like that. (But it's important that the Logo programs people write remain compatible across platforms.)
  • Platform-independent UI improvements. A Logo-savvy integrated editor, for example.
  • Rewrite the core evaluator. It's gotten pretty messy.
  • Rewrite the entire thing in Java, for easier platform-independence.
  • Write a compiler: either a GCC front end or a compiler to java bytecode.
Since Logo is a dialect of Lisp, it doesn't have much syntax; things like LALR parsing aren't going to help much, but understanding garbage collection will help. Expertise on PCs or Macs will help for certain tasks. The best preparation for working on Berkeley Logo is to understand the explicit-control evaluator in chapter 5 of Abelson and Sussman, because that's where we started in writing the Logo evaluator. And of course I want people who'll really get the work done and not flake off! :-)

For more information on these projects, or new project ideas, please get in touch with director@XCF.Berkeley.EDU