CPSC663 Final Project

Campus Map

See Project Time Line for Updates


Table of Contents

Functions Nodes Algorithms Database Map API Interface Security Authoring Tool ||| Old Project Ideas

Project Time Line

Project Time Line View the SVN Repository!

List of Members

~ Dru Tucker Scott Derick Kris
Phone# (803) 316-8108 (804) 683-0840 (864) 858-4333 (843) 858-4241 (843) 902-8246
Main Focus Security Admin Tool Web Services GUI and Java Underlying Functions
Secondary Topic Database Database Field Testing GUI Techincal Writer
Thirdary Topic ApI Researcher Main API Researcher Web Services and SMS Alternitive Technologies Researcher API Researcher
Persional Log Logs Discontinued 4/19/07 Logs Discontinued 4/19/07 Logs Discontinued 4/19/07 Logs Discontinued 4/19/07 Logs Discontinued 4/19/07

Message Grid Reference

Message Grid is avaliable to the group here. You will have access to two or three grids each with a specific topic for discussion as well as one general discussion grid. Please post your comments and commentaries on the grid. I hope that this software will be a useful tool that keeps us in contact. Please send me ideas for future grids and topics you would like to see discussed. Thank you.

Security information on web pages avaliable here.

Interduction to Campus Map

Possible new name to come (eCampus or iCampus)

The goals of this Final Project for CPSC663 (which will here after be refered to as Campus Map) are to create a scaleable, portable easl to impliment map program that uses a map API as a palet for the implimentation for a graph algorithm, and to create an authoring tool that can easly generate new maps for use with the main program. Campus Map will be used to make a map for Clemson and offer various options for map traversal, includeing but not limited to: Campus tour, handicap acessable campus tour, homeland security terrorism mode, emergency due to fire mode, emergency due to weather mode, football day mode, * sport day mode. Templets are the extra functions that are avaliable to combine with the base functions to add extra functionality to the base program. Preliminary information and ideas are below, if you have questions email me at .

Functions and Functionality

What functionality would we like to see in Campus Map and in the Authoring Tool?

Nodes

How are we defineing a node and what properties does it have?

The node, being the basis of this whole project, will need to have enough information stored in it to define all of the edeges and functions from it. Edges are defined by the connection between two nodes. Should all nodes be this robust or should they be dynamic based on their type? The only prblem with this is having a database with different types of entries over multiple tables. This could be fixed with a custom datastructure to keep track of the database, but I would rather stay away from this if we can. The easiest and most wastful solution is the let all nodes have a field for each value even if it is null and not used. (Memory is fairly cheap today anyway).

//The structure of a node could look like this.  
struct node() //structure for a node.
{
variable Unique_Name  //Each node will need a unique name to distinguish it from other nodes
variable common name  //A common name that can be displayed for the user.
variable type;        //can equal Nutral, Handicap, Non-Handicap or Vehicle or building.
variable long;        //longitude and latitude (will need to be some kind of large float)
variable lat;
//variable map; //Variable REMOVED - Reference from database to what map these nodes belong to. 
variable structure;   //what does this node represent? can equal Stairs, Building, Ramp, Door, etc
array adjacent_nodes; //This will contain a list of adjacent nodes if we use Dijkstra's Algorithm 
                      //so that we do not have to iliterate throught the whole graph every time 
                      //we want to check an adjacency. (good for time, not good for dynamic adding
                      //nodes)
//variable Change_time   //variable REMOVED - Can a node change it's function at a certain time every day?  If it does, why not make it autmatic? 
                      //Should this information be kept in the node or should it be part of a stored procedure (macro)?
variable condition;   //What is the status of this node?  Is it under construction, on fire, radiated, 
                      //infected with biological wepons, frozen, etc?
variable Audio;       //We may want to add an audio component for visually challenged users or 
                      //just to inforce what the normal user is seeing on the screen, this would be a reference.
variable comments;    //We always need comments :).
variable maker;       //We need some degree of auditing to enforce responciability so each 
                      //node will need to have a date, time and user stamp to deturmine who made it and when.
variable url;         //Extra information or pictures associated with a node that need to be stored seperatly
                      //can be kept at a url to be accessed when needed by the user.
variable dynamic_1    //can be used as needed for other appilcations. The existance of these should be choosable by the creater of the map.
variable dynamic_2    //can be used as needed for other appilcations.
variable dynamic_etc  //as many as is needed at database creation time.

} //node

We will need the most thought on this, so everyone start thinking of what we will need to define a node as.

Algorithms

Possible Algorithms to impliment that traverse the graph, keeping in mind that there might be the need for negative edges in buildings with multiple stories or basements

While Dijkstra can not be implimented with negative distances on nodes I do not see a reason that the edges could not all have positive values. They are only lables in the view of the algorithm. Primm is a broken down version of Dijkstra which might be simpler to impliment, but only in that it does not check for the smallest value and is ileterative in the respect. I have included my implimentation of Dijkstra for anyone who is unfarmilliar with how it works as well as a link to the Wiki page (mine is more intuitive). I have also found the other algorithm that takes negative edges as well as positive edges and will not infinite look like dijkstra. It is called Folyd-Warshall and is a outlined in the Wiki page I have referenced below. I am partial to dijkstra, but wanted to leave this open to debate. If anyone knows of a better algorithm please let me know.

Wiki Dijkstra

Here is the code for my Implimentation of Dijkstra. It may not make since so you may review this power point to try and make it clearer.
//I will add comments by tomorrow
int dijkstra(int first){
	int i,cvw,index;
	int tag = 0;
	initVertexArray();
	vertexArray[first].dist = 0;
	vertexArray[first].prev = -1;
	while(tag!= 1){
		if(smallestDist()!=-1){
			index = smallestDist();	
		}
		else{
			tag = 1;
			break;
		}

		vertexArray[index].known = 1;
		
		for(i=0;i '<' SIZE;i++){
			if(map[index][i]!=INFINITY){
				cvw = map[index][i];
				if(cvw + vertexArray[index].dist '<' vertexArray[i].dist)
				{
					vertexArray[i].dist = vertexArray[index].dist + cvw;
					vertexArray[i].prev = index;
				}
			}
		}
	}
}

Wiki Floyd-Warshall

Research any other algorithms that we may want to consider

Database

Which kind of database we will be useing, what design and to what standard will this database be held.

The actual database may be on a Microsoft SQL database or on a MySql database. After talking with Dr. Pargas it appears that MySql does not support stored procedures. This is a potential problem of the database must be switched from Microsoft SQL to MySql as the project evolvs. Work arounds must be explored if there is any chance that the database platform might be changed or we could simply start with MySql. I also believe that this data base should adhere to 2NF (Second Normal Form) at least or 3NF. If you do not know what this is, you should look it up here. We need to sit down as a group and hash out the behavior of this database and how all of the dependencys work. This is a VERY ROUGH example of how this database should look. It is not a final product and may not even be close to the end design.

Update 3/26/07

We have decided to use MySql, but because of time issues and the April second deadline we are going to user MSSql for now and switch after we have MySql up and running on a server.

New ERD as of 3/13/07

New ERD as of 3/26/07

New ERD as of 4/09/07

Final ERD as of 4/17/07

Final ERD as of 4/25/07

DataBase Schema

pre(3/5/07) There are a few changes that need to be made to it before it is places on Ravenclaw. There may need to be several more tables to support the node class to cut down on overhead.

(3/27/07) Updated Information on Database The database is not up and running on ravenclaw. All passwords are cpsc123 and have not been changed from their defaults. If you have any information please contact me by phone or by email. Please do not give out my phone number to non group members. Phone Numbers are available at the top of this page.

(4-06-07)Thanks to Kris's suggestion, the database is now up and running with a new way of handeling the adjacancy table. I will continue to work on stored procedures and my next addition will be a cascadeing delete and cascadeing update for dsepulv.TableNode.

(4/25/07) There have been many updates to the database in the last few hours. A new database will be needed to express some of the changes. Cascadeing deleates DOWN have been implimented for the node tabel. When you delete a node from the node list it removes all of the references to it from the Adjacency List Table. This is acomplished through triggers that can be viewed in the SVN repository. I have implimented a database backup that would work if I had administrator privilages on ravenclaw.

Map API

Google, Yahoo, Microsoft, Mapquest API's?

Dr. Pargas would like to see a working version with each of these API's, more research to come from Derick.

Interfaces

To what will will this program be deployed, and what specific known problems might we experience knowing what we know about mobile deviecs? Webforms?

Laptop, Mobile Device. This will be decided on when we get more info on what technologies we are useing.

Security and Authentication

What kind of security and log on information will need to be maintained for this project. Will we need to use cirtificates, X.509, PKCS#12 or other? What databse apps and controles will we need to impliment to do this?

Security avaliable through authentication with X.509 cirtificates tranalated to pcks#12 for persional information exchange. Auditing avaliable through loging. There is a good bit of information on WSE which is the development took kit for X.509 creation and parsing in Visual Studio.Net. This will be decided on when we get more info on what technologies we are useing.

Authoring Tool

Must be simple, additive and easy to use.

This tool will be written in .Net (most likley in Visual C#.NET) and will be a intuitive, easy to use interface that allows users to easly see their position and select positions to go to along with any templets they would like to use ontop of it. There can be several different types of these tools, Includeing a field version and a desktop version. This can be decided on when we get the basics down.