Big O

December 17th, 2019
online

Few More Days of Classes

After a longer day at work, I'm just about to start the second day of week 2 of Codesmith's CS Prep. Overall, this has been a really nice course and I feel like I've learned quite a bit. Given there is only 3 hours of lecture, or less really if you factor in the time to finish the problem of the day and do the pair programming, we've certainly crammed a lot of information into a short amount of time. If I had one critique of the course, I would say the breadth of information is too wide, leaving little time to go deeper on some rather advanced topics. I've found, out of the 28 people in the class, that I've been studying JavaScript much longer than most, and still find myself grasping at some of these concepts. For example, we introduced and covered recursion in about an hour and a quarter yesterday and then broke out into pair programming. For me, recursion has been a really tough topic to wrap my head around. I felt, by the end of this class that I had a much better understanding of the topic than when I started. However, if this was the first time being introduced to the topic, I think you would really struggle here, and understandably so. I think, in most bootcamps or universities, you might spend an entire week of intensive focus on recursion, and you might still lose some students along the way.

recursion

I think the most valuable part of the whole experience is the pair programming, as I expected it would be. Will Sentance really stumbled upon a golden theory basing his way of learning of JavaScript or any programming language around this basic tenant of learning with someone else. Pair programming forces you to verbalize exactly what you're trying to do and reason through every step. There are no shortcuts; you just have to suffer through, hit blocks, and work through them. Hopefully, between the two people in the partnership, one of you can figure out what's going on and help the other get to a point of understanding, as well. It also really helps with communicating in a highly technical way. This is imperative in any high-level technical interview. You have to understand the inner workings of JavaScript and be able to explain exactly what's going on. Even senior developers struggle with this, but I think what Will and Codesmith are getting at is kind of the idea of cracking the coding interview. There is a certain way that the people conducting the interview expect you to explain an idea or concept, and without proper skills in technical communication, this is impossible.

bigO

Today, I believe we are going over Big O notation, which I really haven't delved into too much. This should be a great lecture and I'm hoping to take a lot away from it. From what I understand about Big O notation at this point, and this might be totally off base, we are referring to the amount of time different actions take in JavaScript. The goal overall in working with algorithms is to try to find the solution that will be the most efficient, taking the computer the least amount of time to come up with the solution. For example, if using a for loop, the computer would have to iterate through each element once. If using a nested loop, it would have to iterate through each element one time for each element in the array, meaning it would be the square of just iterating through once. This would be much less efficient than iterating through it just once. There are other ways to look at arrays and other data structures, with some scenarios where you wouldn't need to look at every element in the array, but just enough to find the answer you need. That was really confusing, but to sum it up, there are a lot of ways to iterate through a data structure, and given the scenario, some are more efficient than others. I think I've talked myself into a corner, so I'm just going to leave it at that.

Until tomorrow!

Created by Sam Thoyre, © 2019