Java

RandomMP3s
A quick program that I wrote because I was unsatisfied with Windows Media Player's ability to fill an MP3 player with random music files. (The main reason when I began writing this was I noticed that music transferred to the player slower than it should).

This program allows a user to add music files (individually, and by directory) to a main list. Then, the attached MP3 player (assuming Windows sees it as a hard drive) can be cleared, and reloaded with random music up to the player's capacity.

So basically, with this program and a small MP3 player (e.g. 512MB/ 1GB), it's easier to keep the music on the player "fresh." Opening this program and clicking one button will refresh the music on an MP3 player that Windows recognizes as a drive in My Computer.

Download (JAR - JRE required). Includes source.

FoldSim
From the report: The problem was to write a program to determine all of the ways that a protein can fold in 3D, and then find the most “stable” shapes out of all the possible ones. In this simulation, a protein is represented by a chain of amino acids, where each amino acid is simply designated as H or P. H means hydrophobic, while P means hydrophilic. The most stable state is that where there is a maximum number of adjacent Hs, that are not physically bonded.

Project Report - Download
Final Project - Download


MSBilliardComputer
From the report: The problem was to simulate a quantum computer logic gate (Fredkin classical reversible logic gate) using a billiard ball model. In this model, there are bumpers in specific places on the "pool table," resulting in a combination of 3 input "balls" to end up at 3 predetermined places. The Fredkin gate is simple: If you start with 0 or 1 balls, they end up at the same y position they started from (i.e., according to the diagram, A ends at A', B ends at B', C ends at C'). If both A and B are present, or A and B and C, they end at their respective positions. However, if C and A are present, A ends at B'. Similarly, if C and B are present, B ends at A'.

Project Report - Download
Final Project - Download


MSWorld
MSWorld is an adaptation and extension of the java maze raycaster. Basically,
the following are the changes and improvements over java maze:
* Variable size maps
* External map loading (maps are created with Tile Studio, from
http://tilestudio.sourceforge.net )
* Single-color floor/ceilings only - the floor mapping support was somewhat
broken, especially when I added variable size maps.
* Extreme restructuring and modularizing of the code. This is the basic
structure now:
Raycaster interface->Raycaster256 implementation (is-a Raycaster)->MSWorld main program (has-a Raycaster256)<-client simulations
* Client simulations with dynamic class loading, the most notable improvement.
I wrote several simulations to implement basic artificial intelligence in enemies in the maze, such as "blind" pathfinding, tracking by waypoints, and using the A* pathfinding algorithm to find the shortest path from a start point to a goal. Basically, you could add whatever "gametype" you want to MSWorld as a simulation.


Original Proposal   Midpoint Summary
Final Project - Download

© Malcolm Smith