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.