Experience‎ > ‎

Project Abstracts

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.