Hello again, aspiring programmer!
👩💻How to Apply Algorithmic Design in Structured Programs
When developing structured programs throughout your journey, it is imperative to consider which algorithms and data structures will address and provide an efficient solution, along with quality performance on the specific task at hand. An algorithm is a step-by-step process for solving a problem whose steps are concrete and unambiguous, which is why it's important to first analyze the problem to determine performance goals to be achieved, and only then can we hope to select the right data structure. A data structure by definition is an organization of structuring for a collection of data items. When designing a program, a data structure requires a certain amount of memory to be used, time to perform operations, and programming effort known as time & space complexity in which we represent using Big O notation for the upper bound and Omega notation for the lower bound. Using the proper data structure can make the difference between a program running in a few seconds and one requiring many days (Shaffer, 2013, pp. 5, Chapter 1). Data Structures and algorithms are one of the core components of computer software engineering, and being knowledgeable of which algorithms work best with certain data structures will only solidify yourself more as an up-and-coming programmer.
🗂️ Why Some Algorithms and Data Structures Are Better Than Others
I believe that there is not one data structure or algorithm
that is necessarily better than another for you in all situations, but I think
after evaluation and careful analysis of the characteristics of the problem, we
can best determine which data structure and algorithm work best for that task.
Each algorithm and data structure has its own efficiency trade-offs, and really
comes down to applying the design that is not only functional but also scalable
and efficient. An example would be working on a small data set on a group of 20
students. If we needed to insert, delete, or search specific student names,
grades, and see if they have a book checked out from the library, which data
structure and algorithm would you choose to implement when building the
program? A linear search through a list may work for small lists, but it becomes
inefficient for larger datasets. A hash table allows for very fast access to
data, but requires more memory than a simple list. These are the kind of things
you want to think of when comparing one applicable design to another.
⚙️ Applying These Techniques in Developing Programs
Personally, my application of algorithmic design and data
structure requires many steps of planning and preparation before I can even
begin to work on a task. I'm a visual learner, so I would make diagrams and
flow charts either online or physically using a whiteboard, so that I can see
the breakdown from the main task into subtasks, and determine basic operations
that must be supported. From there, I just need to quantify the resource constraints
for each operation and try to pair the algorithm and the data structure that
best meet these requirements.
No universal "best" algorithm or data structure
exists for all scenarios. Rather, the good programmer looks at the
problem, trades off efficiency when necessary, and implements the most
appropriate design. Programs become correct and scalable once you learn to
thoughtfully apply data structures and algorithmic design techniques.