Here are some examples of the projects I worked on in VCU Computer Science
Back To Homepage

CMSC 312 - Introduction to Operating Systems

DiningPhilosophers.java The Dining Philosophers problem is a synchronization problem. A certain number of philosphers are sitting around a table with a bowl of noodles in the center. Each one thinks for a random amount of time, then eats for a random amount of time, and then thinks and eats again until it has eaten a specified number of times. The rub is that a philosopher may only eat if both of his chopsticks are available, and this will only be true if his left and right neighbors are thinking.
Check out this site for an Applet showing the Dining Philosophers problem.

CMSC 355 - Program Design and Implementation Practicum

Train Video This is the video documentation I did for our final project in this class.

Track Builder This video shows how I built a track builder IDE to make models of the actual train tracks.

CMSC 401 - Algorithm Analysis with Advanced Data Structures

Boat Crossings This Java project solves the Missionaries and Cannibals Problem. The solution to the problem requires the use of a tree data structure. This is because there are many possible paths that can be taken in the problem, and the tree contains all of them. The tree was build breadth-first, meaning that all the possible moves from a state were considered first before moving on to explore the new states. You can also think of it as the levels of the tree being built first, rather than the leaves being found one by one.
To run the program, download Boat Crossings and from the \boatcrossings directory on the command line type >java River.
Here is the javadoc documentation for the Boat Crossings project.

CMSC 591 - Advanced Algorithms in Computational Systems Biology

Suffix Tree Project This was a group project was done in C by myself and Shom Paul, a graduate student of bioinformatics. It was an implementation of a suffix tree, an incredible data structure that allows you to find a substring of length m inside a string of length n in O(m) time. So if I wanted to know if the string "AGTC" appeared in the 3.3 billion character long human genome I could do it in 4 character comparisons. The catch is that it takes a long time to build the suffix tree.

CMSC 511 - Computer Graphics

Room Clues Video Game This is a video game I made for my computer graphics class. To play it, download the file from the link above, and navigate to its directory from the command line (start->run->cmd) and enter >java -jar RoomClues.jar Walk up to the person in the courtyard and they will give you a clue about the room they are thinking of. Examine the rooms closely and walk up to the character in a room to find out if you have chosen the right room. Try to minimize the number of guesses to get all seven rooms. You must have Java installed on your machine to run this program.

CMSC 519 - Software Engineering: Specification and Design

MyTube website presentation For the MyTube project one of our assignments was to show a walkthrough of the MyTube website user infterface. Our presentation showed features such as registering a new user, creating a profile, searching the database and viewing search results. The web pages are non functional but are intended to show the customer that our software design team understood the project requirements, as well as to show them our idea of what the look and feel of the web site might be.

MyTube user map sketch This image was a sketch to show the basic layout of the MyTube system, and to specify what sort of paths a user can take through the web space of MyTube. Shown in the boxes are the functions of the system, as well as where they are specified in the requirements documents.

SRS_1.doc SRS_2.doc These two word files were Software Requirements Specification documents put together by other groups in the class. Out of the 7 or so groups out of the class the professor picked these two as the best. The professor was pretending to be a customer who could not decide between the two documents, and our next assignment was to compare the two and find conflicting or vague requirements. Here is our groups critique of the two documents.

Here is our Software Requirements Specification for the MyTube product.