For this course, you will be submitting one portion of each project into the GitHub repository for your portfolio. From Project One, submit your analysis of the run-time and memory for the data structures. From Project Two, submit the working code that will sort and print out a list of the courses in the Computer Science program in alphanumeric order. Together, these documents showcase your work in data structures and algorithms.
What was the problem you were solving in the projects for this course?
ABC University (ABCU) is looking for software to help its computer science advisors access course information for students. Given a CSV, I had to design software to parse, and store the information using various data structures for display to the user.
How did you approach the problem? Consider why data structures are important to understand.
I took a logical, step by step approach to accomplish the tasks. Much of this was reading from the textbook and applying step by step instructions on how to handle the data being parsed. Data structures are important to understand because certain use cases benefit from different data structures. Hash tables are best for fast searches, the BST is best for ordered output, and the vector is easiest to implement but scales poorly with large datasets.
How did you overcome any roadblocks you encountered while going through the activities or project?
While going through the project, I would encounter roadblocks where I couldn’t focus. Since these were logic intensive I had to take frequent breaks. If it was something I was stuck on with logic, I referred to the textbook or searched for examples from my previous DSA course which utilized Java; then converted this to C++.
How has your work on this project expanded your approach to designing software and developing programs?
First, I’d like to mention working on this project has taught me much more about C++; between common mistakes I used to make, and more about headers and dependencies. This has also helped me understand the software design process more in depth from gathering resources, designing, gathering feedback, and applying an initial development iteration.
How has your work on this project evolved the way you write programs that are maintainable, readable, and adaptable?
The work on this project further cemented a practice of modularity I like to exercise when possible. By writing clean modular code, we can maintain the software efficiently. By practicing this, we can adapt additional logic like a menu to take advantage of core functions of an application (ex. Loading a .CSV to parse)