CS 4704 Software Engineering - Fall 2000
Project Groups and Contact Information

Project Title
Grp #
Full Name
Online Rubik's Cube 1 Child, Matt Matt 552-1458 mchild@vt.edu
1 Matyas, Steve Steve 553-3191 smatyas@vt.edu
1 Forcier, Sid Sid 552-6515 sid@vt.edu
Bitman 2 Venkatesan, Subhangan Subhangan 961-4715 suvenkat@vt.edu
2 Rodriguez, Edgar Edgar 557-1271 edrodri2@vt.edu
2 Mross, Daniel Dan 961-7367 hacker@vt.edu
Hokie Heros 3 Luebke, William William 953-5545 wluebke@vt.edu
3 Belanger, Mike Mike 558-2299 mbelange@vt.edu
3 Gunsolley, Shawn Shawn 558-2420 sgunsoll@vt.edu
Clue 4 Dennison, Diane Diane ddenniso@vt.edu
4 Jones, Matt Matt 200-1501 majone10@vt.edu
4 Keppel, Dave Dave 553-3611 dkeppel@vt.edu
Programming Teacher 5 Roden, Laura Laura 953-0848 lroden@vt.edu
5 Adams, Rob Rob 552-5491 roadams5@vt.edu
5 Mescher, Kevin Kevin 961-0543 kmescher@vt.edu
Multiplayer 'Pac-man' 6 Oberhardt, Andrew Andrew 552-5449 aoberhar@vt.edu
6 Cooper, Sean Sean 553-3227 secooper@vt.edu
6 Hinkle, Mark Mark 951-6903 mhinkle@vt.edu
Procedural 3D World in OpenGL 7 Hardin, Andrew Andrew 233-4533 anhardin@vt.edu
7 Foughner, Tom Tom 232-1982 tfoughne@vt.edu
7 Damon, Will Will 558-2121 wdamon@vt.edu
UIML IDE 8 Lawrence, Steve Steve 382-1003 slawrenc@vt.edu
8 Kochmar, Alex Alex 232-4664 akochmar@vt.edu
8 Pappas, Nick Nick 553-3057 npappas@vt.edu
OASIS 9 Gifford, Sol Sol ? - sgifford@vt.edu
9 Ha, Liem Liem 232-1839 lha@vt.edu
9 Buonomano, Lisa Lisa 961-2332 lbuonoma@vt.edu

Project Descriptions

Group 1 - Online Rubik's Cube

Our project will be an online Rubik’s Cube. Upon entering our website, the user will be presented with a 3x3x3 cube floating on the screen with a different color on each side of the cube. Below the cube will be the command interface. All actions and options will be located in the command interface area with the exception of the “real life” manipulation of the cube which will be explained later. The options available in the command interface will be as follows (all toggles will display only one action at a time):

  • Scramble/Reset (toggled button): When the button “Scramble” is pressed, this will instantly randomize the colors on the cube. The moves required to scramble the cube will not be animated so that the user cannot easily determine the solution. When the button “Reset” is pressed, the cube will instantly return to its configuration of all sides being a different solid color.
  • Solve/Stop (toggled button): This will have the computer solve the cube, or stop solving the cube if it is currently doing so. The computer will make all moves visually so that the user has time to see the moves as they occur. This is to add credibility to the computer’s ability to solve the solution without cheating.
  • Big Cube/Small Cube (toggled button): Initially (since the user will first see a 3x3x3 cube), this button will be labeled “Big Cube”. This button will toggle between the 3x3x3 cube (small) and the 5x5x5 cube (large). When the user toggles from one cube to the next, the cube will be reset. As such, there will be a notification dialog allowing the user to cancel his/her action.
  • Help (Hyperlink): This will bring the user to an HTML page that describes how to use the Rubik’s Cube simulator.

    The “real life” manipulation of the cube will operate as follows:

  • Right clicking and dragging will rotate the cube around a central point
  • Right clicking and pressing the left or right arrow keys will rotate the cube around a horizontal central line
  • Right clicking and pressing the up or down keys will rotate the cube around a vertical central line
  • Right clicking and pressing the Space Bar will rotate the cube around a central line that would extend perpendicularly out of the screen
  • Left clicking and dragging to an adjacent square will rotate a row of the cube while leaving the cube’s orientation intact. If the user drags in an invalid direction, an “illegal move” noise will sound. If the user drags in a valid direction, the row will visibly turn into place just like a normal Rubik’s cube accompanied by a “legal move” noise.

    When the cube is solved, we will perhaps have the cube spin around and maybe do some wacky stuff, like flash or something.

    Online Rubik's Cube

    Group 2 - Bitman!

    Our project is called "Bitman!". It is a multiplayer game that will support two to four players. The game is based in an arena that is modeled as an over head view of a computer network. There are systems and nodes, and paths between the two. The object of the game is to hack different systems in order to gain power-ups which can be used to eliminate other players. The main method of attack is to send a virus over the network. Any player caught in the path of the virus will be eliminated. The basic power-ups are speed, virus power, and firewalls. Speed allows players to move throughout the network faster. Virus power allows a players virus attacks to travel farther, and firewalls are power-ups that can be placed on nodes in order to block virus attacks.

    There are also special power-ups within the game. These are worm viruses, branch viruses, distributed attacks, anti-viruses, and back doors. These special power-ups are gained by picking them up when they randomly appear throughtout the level.

    Bitman will be played on a round to round basis. The last player remaining alive at the end of a round will win.


    Group 3 - Hokie Heros

    The story begins when the Virginia Tech campus becomes over run by UVA Mascots and Tek-Tow scum, having taken the Virginia Tech flag from Burruss. In addition, the Blacksburg Police are out in full force to hunt down the good guys. Choose your hero carefully, for each have strengths and weaknesses which will aid and hurt them along their quest. Your choice between a member of the Corp, a VT football player, and the Hokie Bird will ultimately decide whether you have what it takes to recover the VT flag from the forces of evil.

    Hokie Heros

    Group 4 - Clue

    Our project is to make a computerized version of Clue. The program will be able to be run in three modes. The first is as a stand alone program. A single player can run the program and play against multiple computer players. The next is as a 'server'. This means they start the applications and other players across the network can join the game to play against each other, and the computer. The final mode is as a client, where a user can connect to a 'server' and play against a game started by another player. We also want to focus on the AI aspect of the game rather than graphics. Our computer players will use one of three strategies to play the game. In addition, we will have intelligence that tries to prevent other people from winning if they are getting close.


    Group 5 - Programming Teacher

    Our project will be a tutor for students who are having a hard time understanding basic programming concepts. The program will allow the student to enter a block of computer code, and it will parse it. Then the user can step through the code, or create a visual representation for that computer code (referred to as the program machine). There will also be a section for viewing variables, much like a debugger's watch window. The user will also have the ability to create a program using the visual representation (the "program machine") to create computer code. The program machine will be based on a few basic parts: declarations, basic operations, and program constructs. Since most programming students are learning C, the program will be written to parse, step through, and convert C code. It will also be able to create C code from the visual representation (program machine).

    Programming Teacher

    Group 6 - Multiplayer 'Pac-man'

    For those of you that are unfamiliar with the game, pac-man is a simple maze game. A character (represented as a yellow face) runs around the maze eating small pellets for points. This icon is being chased by 4 ghosts who kill him when they meet. The figure can retaliate against the ghosts by eating a power-up, which is represented by a really big pulsating dot, which gives him the power to eat the ghosts for points as well, but it runs out quickly.

    The Mazes

    The mazes will be created randomly using graph theory. The different AI's for the ghosts (and pac-man himself) will also use graph theory to wander through the maze.

    The AIs

    Each ghost will have their own AI level of difficulty which will attempt to target pac-man in a shortest path algorithm. In the more advanced levels of the AI, the ghosts will attempt to track pac-man's next moves and head him off. There will also be a simple pac-man AI for the game screen saver so when no game is being played it will cycle between the opening screen and an AId pac-man frantically trying to avoid the ghosts and get the dots on the screen.


    There will be a few different modes of multiplayer:

    Double Pac: where there will be two pac-man's running around the screen controlled by the two different players. They will work together to clear out the maze.

    Pac & Ghost: where one person plays the pac-man character running around the maze, and the other player(s) play the ghosts whose aim is to destroy the pac-man character.

    Knockout: The goal of this is to collect points up to an arbitrary number first. There is only one person playing the pac-man character and only the pac-man character can gain points. The other player(s) will be playing the ghosts. Whomever kills pac-man then becomes pac-man and then can start racking up points. When an AI'd ghost kills pac-man a random player will then become pac-man.

    Single Player

    Single player will be modelled after the classic 'pac-man'. The different colored ghosts would have different levels of AI, which would in turn get harder each level completed. Also, the mazes themselves would be randomly generated using graph theory instead of being hard coded.

    Multiplayer 'Pac-man'

    Group 7 - Procedural 3D World in OpenGL

    Today, 3D titles are becoming larger, and more complicated with more details, more layers of textures, etc... With all these great enhancements, however, bandwidth becomes a serious issue. Why not harness the power of client processors?

    Nature tends to lend itself to much symmetry, and as such it is possible to unload lots of "busy" work onto the processor saving artist development time, and bandwidth consumption. Using the power of OpenGL we algorithmically generate everything in this world from terrain geometry to cloud textures at startup, and on the fly. Currently we are focusing on Windows 2000 as our main platform, but because OpenGL is so portable, we may port our work to other platforms (if it catches on as the next greatest thing since sliced bread ;-).

    Procedural 3D World in OpenGL

    Group 8 - UIML IDE: User Interface Markup Language Integrated Development Environment

    UIML is a language used in developing a single user interface that can be converted to multiple languages. The purpose of this project is to generate UIML code through a graphical user interface created with Java. The user will be able to place objects through the use of buttons/toolbars and modify the attributes of these objects. When everything appears as desired, the user will have the ability to export the interface created into UIML code. The UIML code can then be converted back into Java or any other suitable language based on your features.


    Group 9 - OASIS - Online Administrative System for Interactive Software Engineering

    The purpose of the project would be to REPLACE the current auctioning process of project pieces with an online auction, and in addition, to create an online environment that allows the teams and "employees" to communicate, share data, and "learn" about each other. Of course, presenting a project would have to still be done in class, so this project is not being designed to be a substitute for the presentation of a project, just the auctioning process and point system, including addition of other features.


    1. Team accounts (password protected), including allowing teams to post an online team project web page, to create separate folders for employees to access (file transfer for project pieces).

    2. Individual accounts, including a resume web page (automatically generated by signup questionnaire, scale of 1 to 10).

    3. Online auction for posting of project piece descriptions, allowing bidding by individual users. (Each piece may come with a calendar of important dates.)

    4. Suggestive Matching. When teams post project pieces, they will be prompted to fill out a questionnaire of skills (scale 1 to 10) needed by employee for piece. This will be matched to individual with closest match (algorithm for this matching not yet decided).

    5. Point system maintained. (Individuals cannot contract more than 100 points before certain date, teams must contract out certain number of points, etc.) When contract is complete, allows "transaction" of points, i.e., user is assigned points by team. (Separate accounting for contracted and acquired points.)

    6. Chat room for communication between members to discuss projects, etc.

    7. HCI is an important emphasis in designing the web interface. We would want this system to REALLY work if so chosen by future classes, and with ease. The interface would be one of the most important aspects.

    8. Lastly, we would implement the walkthrough (keep track of peoples credits as designers, programmers, and outsiders).