A team of professors in the University of North Carolina, Charlotte, have been developing a Data Structures library called BRIDGES. This library interfaces between the data structure implementation and three large datasets (Bacon Numbers, Earthquake Magnitudes and IMDB data) that are cached on a private server. During SIGCSE 2017 in Seattle, Washington, the instructor attended a workshop for BRIDGES and would love to use it in future offerings of the course, alongside proper unit-testing of the submission code on submit.cs.umd.edu.
The issue with BRIDGES is that its current demos and available libraries are quite elementary in terms of Data Structures: it only deals with data structures usually taught at most at the sophomore level, such as binary trees, graphs, lists, queues. In fact, according to the documentation, the most complex data structure they deal with is AVL Trees which we will probably talk about on the first day of class.
This project consists of forking the BRIDGES project and enhancing the source code with data structures that we learn about in the course, as long as they have not already been implemented by the UNCC team (e.g AVL Trees). The minimum number of data structures to be implemented as well as a detailed plan of action can be discussed during a private meeting with the instructor.
- Since it is likely that some information will need to be exchanged between the BRIDGES group and the instructor/student regarding permissions, pull requests, anticipated status of the project over the summer, server uptime or downtime schedule, etc, it is suggested that interested students contact the instructor as fast as possible, for example during the May inter-semester (this page will be published ahead of time and the students notified of the Honor's options) to express their interest.
- To ensure compatibility with the BRIDGES project, the implementation can only be on C++ or Java.
- It is suggested that you first implement tree-based structures, such as Balanced Binary Trees or B-Trees. Or, if you choose to show some result on the earthquake dataset, quadtrees / KD-trees! You will likely benefit off of
- It is required that your modules are accompanied with documentation up to par with that of BRIDGES. You would be contributors to an open-source project, with whatever requirements of code readability, re-useability and documentation that might imply.
- Before pulling the current stable code from the BRIDGES GitHub repository, you should probably familarize yourselves with both Git and GitHub. Don't waste too much time on this: just learn what forking means, what a pull request is, how to branch away from master, when to branch back into master, and the differences between working directory, staging area and commit database. You probably don't want to know things about alias, logs, and rebasing. Also please understand that if you don't have code pushed somewhere online for a long time and your hard drive fails, you're what Computer Scientists call "s**t out of luck".
- 1 data structure implemented: 50%.
- 2 and above data structures implemented: 100%.
- From the data structures aspect things are obvious: implement different hash tables, Spatial Data Structures like PR-Quadtrees, Region Quadtrees, etc. We cannot stress unit-testing and documenting enough in an Open-Source project.
- There's work that can be done on the dataset side also. If you would like to work with the UNCC team on adding more datasets for developers of BRIDGES to test on, please drop them a line, referencing the instructor.