Yesterday afternoon I started the challenges for week two of the Data Structures and Algorithms course, and they served to take up most of my afternoon and the early evening which lead me to not participating in the after school pairing club. When I had got the first challenge working though, it was still surpisingly early which left me with a little free time. How exciting. How did I spend this free time? I began one of the blog posts I’ve been wanting to write! One of my remaining stories for the week is to apply package principles to my Tic Tac Toe, so what better topic to research for my blog post? So that is in the works and hopefully will be finished early next week.

This week’s data algorithm challenges have been just as challenging as last weeks, if not more so. One thing I have noticed an improvement in since starting the course has been my ablity to understand pseudocode. All of the algorithms mentioned in the course are written in pseudocode and I have found myself often having to pause the video and work out what the algorithm is doing and how. Sometimes I think I have a tendency to understand the gist of the algorithm and move on, but I am trying to be more diligent in my understanding. The course will be more worthwhile if I spend longer on it and make sure that I really understand what’s happening.

So yesterday I was working on an algorithm to build a min heap. I had the pseudocode to build a max heap, and I knew that changing it wouldn’t be too difficult. It was a matter of changing greater than to less than, but did I really understand what the rest of the algorithm was doing? Could I talk someone else through what I was trying to achieve with the code, and how it was doing it? Not really. So, although I was sure that I could pass the challenge, I spent a good hour with the white board understanding exactly what was happening where. The idea of studying an algorithm is so foreign to me, it feels very novel, and it is something I have to work at, but after a while of studying this particular algorithm, following a set of data through the code and seeing what was happening to it, I really understood it. Sometimes it happens when something that seems alien and complex suddenly becomes simple. That’s what happened yesterday, and it felt great.

Because I know very little about computer science and I am very bad at maths, the idea of an algorithm seemed a bit scary when I was starting the course. There have often been times where the formulae in the videos make me laugh because I have no idea what they mean. Of course, now I know that I have been writing algorithms for the entirety of my coding career, but with this course I almost felt that there was no way I was going to understand it. Last week I felt like I fluked getting the solutions to the challenges, but actually, thinking about the code I wrote, I understood it all. The problems felt simple, and even though the code started off feeling like a real challenge, by the time I finished, I understood it. The same has happened this week, and it feels good to know that I can understand algorithms. They’re not scary. They’re just code.