Structuring Data Algorithmically

An Ever Recurring Big-O Notion Feb 11, 2018

This will be a short entry, but I wanted to talk about what I’ve been learning as of late. Data structures and algorithms. People who know me know that I love learning and knowing how things work on a fundamental level (I plan on learning Assembly sometime this year or next year). I’m not content on simply learning the latest in development trends, I want to learn about software, I want to learn how to be a great programmer in any language. And algorithms have always been something I found interesting and I wanted to know more. I’ve been knee deep into algorithms and data structures since February going for as much as 10hrs a day, and while I still have so much to learn, I finally got recursion to click. Keep in mind this isn’t my first introduction to algorithms, I tried learning them back in 2015 alongside design patterns, but I definitely wasn’t at a level to understand anything. Recursion isn’t nearly as hard to grapple the point of it as many of these textbooks make it out to be, and I really blame the most used example that being…fibonacci numbers. I feel like this is terrible first example as in order to understand how recursion works, the user/student/person has to understand what fibonacci numbers are, and I’ve noticed that many people are terrible at explaining it verbally and written. I would like to put forth that people be taught recursion with factorials. Factorials are easy to explain and thus people will be able to understand how recursion works out factorials. With that stated, when recursion finally did click, I honestly felt dumb for taking so long to understand to be honest. But apparently many people even those who went to a traditional 4 year struggled with understanding recursion (there’s a great joke about searching for what recursion is somewhere).

Else on the docket has been binary search trees and depth first and transversal first searches. The basis of BST feels like linked lists but with more freedom. I’m still learning about implementation and usage but I’m often told by fellow developers that they find themselves using BST many times at work, I’m excited to be placed in a position where I can actively utilize these data structures as a way of helping to solidify my knowledge of them.