I can’t explain how happy I am, having received the final outcome of my Data Structures and Algorithms (DS&A) course. It’s deeply satisfying to achieve goals, especially when the adversity you face seems overwhelming. Thankfully I haven’t been cursed with having too much quit in my personality!
DS&A is a challenging topic, probably more so in an online learning environment. It requires persistence and discipline to overcome the learning challenges associated with the study.
Part of the challenge that comes with learning DS&A is the fact that most people are not predisposed to thinking in ways that the subject area demands. I may be a little biased though; I don’t fit the mold of your typical tech type. I have an artistic personality, and numbers don’t come as naturally to me as they do my peers.
If you want to succeed in DS&A it helps to have some familiarity with Object Oriented Programming (OOP), and mathematical subjects like Precalculus.
To the uninitiated a study of DS&A may seem like any another programming course, but in fact it’s so much more than that. When learning to program you basically venture into how computers talk, DS&A is a study in how a computer thinks.
My challenges in this course were compounded by the fact that the entire study was laid out in Java; which up until the last 6 months I had little exposure to. To overcome the obstacles in this course I basically had to learn the fundamentals of Java on the fly. Having to learn new technology quickly is not uncommon in the tech field, but it’s still difficult.
If you’re going to make it in tech you need to be adaptable and open minded to overcome the challenges of the job.
My journey in this course exposed my strengths and my weaknesses; and it forced me to grow. I found that my mind was quickly able to wrap itself around the different data structures we discussed. This helped me to understand the various structures, how they were used, and their limitations.
I struggled a bit more in the analysis portion of the course.
I was able to decipher how many steps a program took to execute, and how one effected the other, but determining speed of execution pressed the limits of my mathematical ability. This still proved beneficial though, because even with a rudimentary idea of how an algorithm performs you can gain some understanding of how efficient the overall program will complete its task.
When it’s all said and done I felt this course was extremely beneficial for me as both a professional in the information systems field, and as an academic study of how a computer performs the task we impose on it.