Sketch: Algorithms and Data Structures

Sketch: Algorithms and Data Structures

!UPDATE: i'm now publishing here

What is an algorithm? Is it a magical creature that only exists in interviews never to be directly seen again? You meet its fraternal twin—the grand linguistic libraries—on the other side I’m told.

It’s currently a major employment gatekeeper everywhere I look. It feels like an all or nothing production where you are right or wrong, which fits well into certain instructional models used around the world.

Though within this all or nothing count down, I feel a nugget of joy. It’s a puzzle. How can you solve it? It's the relish of that exploration that's made algorithms interesting in its role as my gatekeeper.

By the way, if you make your applicants code in Word, then are you sure you have a clear grasp of what you’re assessing? How does that decision reflect your organization?

I use Structy to build a base. It’s an entry point to learning how to think about — and yes, solve — algorithmic questions, but it's most valuable aspect has been the "how." (Though I cannot stand hearing the intro tagline, "Hello programmers..." anymore times.)

The course is organized, covering all the big areas (arrays, linked list, binary trees, graphs, etc.), and it’s well paced. Each question has a walkthrough video breaking it down and a video watch through where you can watch the instructor code through line by line with narration.

Plus, there’s a logical order to the lessons. As a new learner, I appreciate that the sequencing--at the macro level but also within each question--is broken down but still connected. While proficient coders may have memorized many algorithmic structures, I struggle to remember basic syntax for all the parts that go into constructing the algorithm.

Of note, what has made Structy even more helpful is that I pushed through Berkeley’s CS 61B and have some conceptual understanding of these data structures. Paired with the approach videos and just continuous coding practice, I feel like more dots have been connected.

Though, I don’t think that someone who aces CS 61B would necessarily do well with a Leetcode hard level question. I bet there are certain patterns or feels to these coding questions that come with practice on these platforms. You build an intuitive sense.

Put another way, I have a strong feeling that explicit instruction is important to learn how to solve these gatekeeping questions. It's not a case of meandering around the internet, and just bashing your head--though this strategy is widely lauded in this field I've noticed. Just build it. Use it to learn it. This line of thinking pays no mind to cognitive load and prior knowledge. At a certain point, yes, it will be quite unremarkable for proficient programmers to augment their skills. They know how to decide upon a small enough project to learn the basic syntax and semantics. They have a confidence that grounds them. But I digress into another topic.

Did you find this article valuable?

Support Jia-Jia Zhu by becoming a sponsor. Any amount is appreciated!