|
These are a list of project abstracts from work I have completed during my
studies. |
- Snake Game (Java) - Fall 2003
The first major program I created. This game was a single player "snake"
game similar to the ones found on mobile phones. Input was given using the
keyboard and a graphical interface was provided.
- Carcassonne (Java) - Spring 2004
An excellent of team-based programming - Carcassonne was an extremely
complicated board game that we were assigned to model in Java. The final
implementation had graphics, pattern testing, graph testing (to determine
enclosed regions) and a computer player complete with artificial
intelligence (albeit not much of an intelligence). The key to success was
working with a group of programmers and interfacing our separate work to be
successful.
- UB Path Detector (Prolog) - Spring 2004
A neat little program written in Prolog that detects to see if two
buildings can be traveled between on UB North Campus without going outdoors.
This was my first foray into logical programming.
- Logic Translator (Java) - Spring 2004
This device builds logical statements in Java given certain method
calls. It had the ability to display Well Formed Formulas from the given
input.
- Logic Tester (Java) - Spring 2004
Given an input, this program was able to determine among other things if
it was a greatest common factor, Fibonacci sequence, or palindrome.
- Huffman Coding Algorithm (Java) - Spring 2004
The keystone of my computational logic course - this program takes text
input and compresses it using the Huffman Coding Algorithm. After
compression, the text could be restored using a reverse algorithm I
programmed. All of this was done using well defined binary trees.
- Text Comparison Dictionary (C++) - Spring 2006
This C++ gem took three file inputs. It constructed a dictionary using
the first file and counted how many times each word appeared in the second
file. The output was a list of the words and their occurrences formatted in
alphabetical order.
- Dijkstra's Algorithm for Solving Mazes (C++) - Spring 2006
One of my favorite solutions - this program inputted an ASCII maze,
complete with teleporters, one-way walls, uni-directional and bi-directional
jumps, and clear hallways. The program read the ASCII maze and converted it
into a directional map (no simple task mind you). Then the program ran
Dijkstra's Algorithm to find a path from the beginning to end of the maze if
it existed. Not only that, but it always finds the shortest route possible!
I have not found a maze that this algorithm could not beat (of course unless
there is no path, in which case the program tells you of).
- File Reader/Writer (Prolog, Erlang, ML, Scheme, Perl) - Fall 2006
In an effort to learn multiple languages at once, we were ordered to
develop a program that would read and write every odd line in a text
document to an output file.
- Word Counter (Prolog, Erlang, ML, Scheme, Perl) - Fall 2006
One step up from the File Reader/Writer, these programs create a
dictionary of the inputted words in file and output them in alphabetical
order with word counts and correct punctuation.
- Blackjack Odds Calculator (Java) - Spring 2005
By far the most lucrative program I have assembled, this project
successfully calculated the EXACT odds given a certain combination in
Blackjack. Not only could it do this much better than card counting, but
also much quicker. The worst case scenario is O(n*ln(n)). The program can
take into account the number of decks in play and the cards previously
played.
- Space Invaders (ARM Assembly) - Spring 2006
Space Invaders may be simple to program in a high-level language, but in
assembly, the difficulty increases. The final implementation of this program
used the onboard timer in the ARM chip to drive an ASCII representation of
Space Invaders to the terminal. The player can shoot, be shot, is awarded
points, has lives (as indicated by the LED) and increases in difficulty with
each level. Unfortunately, the ARM board did not come with an onboard
speaker...
- Stopwatch (ARM Assembly) - Spring 2006
A tremendously useful module - this program acted as a microsecond
stopwatch for...well whatever needed to be timed. I added a timer mode that
would cease operation after an end time was specified.
- Function Evaluator (MIPS Assembly) - Spring 2007
Another project that seems simple, but is extremely taxing in a
low-level environment. The specifications required that any equation could
be inputted to the evaluator as well as 3 variables. I parsed through the
user string, converted the expression to postfix and evaluated the final
equation with a stack based algorithm.
- Thread Manipulation (C++) - Spring 2007
This operating systems tutorial asked us to create a variety of programs
that worked with threads and processes in a Unix environment. Variable
passing as well as shared memory concepts were used.
- Socket Based File-Server, Disk Simulator (C++) - Spring 2007
For this major project, I developed a socket based client and server
that simulated the functional equivalent of a hard drive. Data was stored
using my own system of data allocation (a derivative of FAT) and I also
created a file system (JFS) in order to simulate a working hard disk.
|
|