You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What was the problem you were solving in the projects for this course?
Throughout the duration of this course, we were presented with a number of projects requiring the implementation of data structures such as vectors, linked lists, hash tables, and binary search trees. The implementation of these data structures enabled sorting of a given data set. For Project 2 (ABCU Vector Assignment) we had the option to implement a data structure of our choosing to load a list of college courses from a text file. Our program was expected to produce a menu to load data from the text file into the data structure, display the courses within the text file alphanumerically, then search for specific courses and display any prerequisites that were required for that specific course.
How did you approach the problem? Consider why data structures are important to understand.
I began with the intention to utilize a Binary Search Tree for Project 2 but struggled with the actual implementation of the search feature. I ultimately used a Vector data structure, as my comprehension of how to implement code for a Vector from scratch was greater than my understanding of the implementation of a Binary Search Tree. It is important to understand how each data structure sorts data, as the type of structure you use has an impact on how efficiently it organizes a set of data. Utilizing the most appropriate data structure has a significant impact on how efficient the data is accessed and organized, processing the data in a meaningful format.
How did you overcome any roadblocks you encountered while going through the activities or project?
When encountering any roadblocks throughout these assignments and projects, I focused on doing everything one step at a time. It is important to look at the program as a whole and understand it's intended functionality. However, the best problem solving methods usually involve breaking down each step and working on the program in chunks. If I found myself stuck on one specific problem, I would take a ten minute break, clear my head, then revisit the problem. The definition of insanity is doing the same thing over and over while expecting different results. It is important to problem-solve by thinking "outside the box". Any problem I encountered usually involved lengthy research from a variety of sources such as our textbook, YouTube videos, and StackOverflow. More often than not, utilizing a forum where others are searching for a similar problem was ultimately the most beneficial as these were "real-world" problems and applications as opposed to hypothetical scenarios found in a lot of YouTube instructional videos or textbook examples.
How has your work on this project expanded your approach to designing software and developing programs?
The ABCU project has expanded my approach to desigining software and developing programs in a number of ways. The first, and what I deem the most important, is troubleshooting and debugging. This project was fairly challenging, as most of my time spent on this project was focusing on implementing a data structure I was not entirely comfortable with (Binary Search Trees). I understand how they function but struggled with composing the actual program. Albeit I did have components that did actually work, through plenty of time spent researching how to get it to work, the program was not producing the output I was expecting. Due to the time sensitive nature of this project, I ultimately determined it was best to go the route I was more comfortable with, Vectors. This brings me to my next point in answering the question "how has your work on this project expanded your apprach to designing software?" which is the want and need to complete and fix the problem. With this term coming to an end, I still find myself wondering why my Binary Search Tree search function does not work. Even though the term will be over soon, I know I will continue to work on this project until it compiles and runs how it should. Designing software and developing programs is not for the faint of heart, as more often than not what you decide to try to implement does not work. A key trait for approaching the design of software is to be willing to accept failure over and over again but not be willing to give up until it is complete and functional. Knowing how to use external resources and attempt to solve problems in ways you normally would not is imperative to developing your skillset and approach to difficult problems. Over the course of the next few weeks, I intend to continue focusing on trying to develop a working program for the same project with the use of a Binary Search Tree like I originally intended.
How has your work on this project evolved the way you write programs that are maintainable, readable, and adaptable?
My work on this project has evolved the way I write programs by focusing on how to properly handle errors and refactoring my code for maintability. My successes in this course, more than any other I have taken, has really stemmed from the use of in-line comments. I never truly utilized in-line comments as I should have in previous courses, and it has allowed me to stay focused on how the program should function. Using these comments have allowed me to plan and outline step-by-step how I should begin implementing each data structure. Before even designing the program I would make in-line comments similarly to that of a pseudocode assignment then follow along step-by-step. This ultimately made it easier to debug and put emphasis on the importance of modular design. The skills I have learned and obtained throughout the duration of this course will aid in my comprehension and bettering my skills in future courses and work on future projects.
About
Coursework & Projects for CS-300, Data Structures and Algorithms