The purpose of these projects was to compare and contrast several different data structures and algorithms in regards to their usefulness for a particular use case. Our given prompt dealt with a fictional school that was seeking assistance in creating a course management system. We were tasked with determining the most advantageuos data structures for carrying out the developement of the system.
In approaching the problem, it was important to have a thorough understanding of each data structure, including inherent strengths and weakenesses. These strengths and weaknesses were assesed by performing time and space complexity analysis to determine the most efficient algorithm. While no algorithm or data strucute is completely perfect, it is important to choose the best compromise in terms speed, and ease of maintainability. In my opinion, the biggest challenge was the planning process and developing the pseudocode. Once these milestones had been completed, I had a really good idea of how to proceed and the actual coding of the project took very little time.
In the end, I chose to implement a binary search tree to handle the problem, as it offered the best compromise in terms of speed and ease of implementation. The program is a simple console app that takes in a csv file, parses the data, and inserts it into a binary search tree to be accessed.
Developing the program has taught me some valuable lessons about the importance of modularity and maintainability in code. Breaking logic into seperate files and methods and keeping them as simple and concise as possible makes the project much easier to follow and understand. Naming conventions are also extremely important in this regard.
