Sep 1, 2011
At my university every bachelor student of a computer science degree has to do a project in a team. For one semester you plan the project, do requirements engineering, etc. in a team of 3 students. In the next semester you actually code the project in a team of 6 students.
All teams had to implement the same project. The project was to build a route planner for the university terrain from ground up.
There were some things that were quite tricky: Things like multiple floors on top of each other.
About the routing: Usual algorithms for routing problems (Dijkstra, Bellman-Ford, etc.) take the approach of a weighted graph. Our team decided to go for a graph-based NoSQL database: Neo4J. Since we were going to build a route planner we might as well use a database that is inherently constructed using a graph.
Many of the other teams had problems with the routing algorithms.
If you were going to use some relational database, this was going to get quite ugly.
Don’t choose your technologies just because it is the only technology you happen to know! Choose the technologies based on the fact that it fits the job best.
We also wrote a standalone desktop application for uploading and editing maps. But since we splitted the tasks I was only involved in the synchronization with the web app (which we did using git, see my article Git as an Update mechanism).
Other technologies involved: For printing PDFs we decided to go with LaTeX. We used node.js to scrape the university address book. This way we gathered a large amount of reasonable data for the database.
The student-projects will not be used productive. However the institute works on an example implementation that will be used.