Overview-
Having successfully moved out of the Data Science program, we start down the road of the Computer Science track. This is an interesting experience since we’re approaching a lot of problems directly with code. Its all about finding solutions to problems in a very real-world sort of way. Our Teams are doing LeetCode challenges daily, and we are a mix of DS and Web students, so everyone has a different experience to bring to the table. While some of this was review, I will say that this also contained possibly the hardest week in Lambda.
Sprint 1- Intro to Python and OOP
This sprint was all about getting the web students up to date on Python, so for the DS guys it was pretty mellow. We spent very little time with pandas, and a lot of time with OOP. Which was probably good, since we only had a week of it, I greatly enjoyed the refresher. That said, it was pretty mellow, and I was able to help many of my fellow students get caught up on what they needed to do and where they needed to be.
Sprint 2- Data Structures
This was where we started to get into a lot of interesting concepts. We did some runtime complexity and spacetime complexity overviews, but really what we dialed in was how binary search trees, linked lists, and doubly linked lists. This was fascinating. Not because they were hard, but because they ran so fast compared to what I thought they would. I didn’t realize that lists were so hard on runtime. Having a class with pointers, and then writing functions with two points was a wild concept. We covered queues and stacks, which is more or less the same just which end you pull things off. Mostly this was playing on the theme of how do you operate
Sprint 3- Algorithms
This was the hard sprint. If this wasn’t the hardest sprint in Lambda, it was the second. It started off easy enough, but once we hit algorithms that could crash your computer, things got very difficult. From the knapsack problem, to Fubinacci numbers, to binary search (and agnostic), this was tricky. What I appreciated was the word problems and how to approach different things logically. While I am still working to wrap my head around the proper big O notation on individual functions, I am grasping pretty readily the bigger ones vs the smaller ones. Relative scale is easy to see now, even if the exact computation time isn’t. A lot of these stretch goals kept me up late at night, though. I will forever be haunted by the knapsack. Which I did conquer, but it took longer than any other problem that I have addressed in Lambda to date. Given the wealth of resources available, this was a bit frustrating. Now it isn’t just about finding help on a problem, but also ensuring that those resources are giving you something that you can use to get the proper answer you need.
Closing Thoughts
This was a hard unit. What I really liked was the logic of it, that made me feel good. Leetcode challenges are making me feel good about myself. I understand much better than I used to. And now I can look at strange code and understand what it is trying to say rather that just replicating it. I can alter things more readily, and things like for/while loops aren’t even phasing me, functions are simple, and I’m willing to use classes/OOP far more than I used to. I call this a complete win.