chansonnier / data-structures-final-project

Final project for CSCI 2270: Data Structures, University of Colorado Boulder

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CSCI 2270: Data Structures - Final Project

Project Summary

The goal of this project was to compare a set of data structures to find the one that strikes the best balance in run-time performance in a fictitious contagion tracking application. The candidate data structures were doubly-linked lists and three variants of hash table. The three hash tables vary in their means of collision resolution: a hash table with a linear probing open addressing scheme for collision resolution, another with a quadratic probing open addressing scheme, and another using linked-list chaining for collision resolution.

Two data sets were provided, both of which had to be run through our implementations of the requested data structures. The instructions were to 1) implement each of the data structures, 2) plot the data structures' insert and search performance against each other (in addition to insert collision performance and search collision performance for the hash table variants), and 3) write a report to analyze their performance, summarize the findings, and give a recommendation for an optimal data structure for the contagion tracking application's handling of patient ID numbers.

We were allowed to choose any plotting tool or library, so I used matplotlib with NumPy in iPython Notebooks/Jupyter Notebooks to create the plots required for the project. The finalpaper.pdf above was my final submission.

Directory structure

Finalpaper.pdf was the end result and my final submission (along with all the C++ implementations and driver files).

About

Final project for CSCI 2270: Data Structures, University of Colorado Boulder


Languages

Language:Jupyter Notebook 93.7%Language:C++ 6.3%