Project 2 Ideas

Applications

Distributed raytracer (group project)
For this project, I will supply you with the equations necessary to implement raytracing and some skeleton code. First, you will implement a single-threaded raytracer and get that working. Then, you will make it a distributed program by writing a client and server program. The server program will contain all information about the scene to be rendered and will assign specific tasks to the processes of the client program. These processes will be running on separate computers.
The goal of this project is to investigate roughly how fast each node must be to have real-time raytracing hardware.
Advanced Instant Messaging
Write an instant messaging program that has a centralized network structure. In other words, there will be a centralized server which maintains information about users and may route messages between users. All users will have a password. Things to consider implementing are social networking types of things (look at a friend's buddy list or something like that) or direct file transfer between users.
Database-driven web application
Most web applications are connected to a database on the backend, so a web application (servlet or JSP) connected to a database server would be good practice. The only caveat is that this project will require you to get a web server/servlet engine running, such as Apache Tomcat, and a database server running, such as MySQL or PostgreSQL.
Custom GUI
Write a custom GUI using manual drawing and listening for low-level events (mouse/mouse motion/keyboard). Such a user interface might be used in an HTPC device, such as playing DVDs, CDs, and watching TV.
Your work or research
If you have an application that would be useful in your job or with some research you do, that might be acceptable.
Word prediction software
Implement a basic text editor that uses word prediction. Word prediction is basically when you give the user the option to auto-complete the current word they're typing. Rather than the autocomplete of MS Word, you will give the user a list of options to choose from. I can provide many more details about the prediction methods you could use on request.
Specialized search engine
Implement a specialized search engine. An example of a specialized search engine is one that searches all the source code you've written, one that searches academic papers, or one that searches news articles, rather than just the entire internet. There is a standard algorithm to implement for generic searching, such as you would use in searching for articles or webpages. you would use this algorithm or modify it in a specialized system.
Jungloid mining
The idea here is that you have an object of one class, but need an object of another class. This is certainly true for reading character data using an old style of Java. Supposing you have a String as a filename, you might have to call
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
. The idea with this project is to use the Reflection API to create a list of methods and constructors, then search for a sequence that gets you from the specified starting class to the ending class. In this example, we might specify the input as "convert from a String to a BufferedReader"

Topics