Data Structures and Algorithms, Simplified! 📐
Can we simplify how we teach the two most complicated topics in computer science?
I majored in Computer Science. I probably shouldn’t have, but echoing back to an earlier newsletter topic, it sent the right signals to potential recruiters that made my path to “big tech” easier.
My disdain for computer science wasn’t because I disliked the material. Far from it. I love working with computers and learning all about the hardware, the software, and how complex problems can be broken into chunks a computer can solve. The problem was (and still is) that I am a visual learner.
If you show me walls of text, numbers, and equations, my brain has no idea of what is going on:
You show me the same information visually, and it’s a different ball game. Things make sense:
Unfortunately, the former was the entirety of my computer science education in a nutshell. I have nothing against the legendary CLRS book and its walls of text that generations of students have benefitted from. It wasn’t for me.
We can do better!
I am a big fan of explaining things visually. That is probably no surprise to many of you. I’ve historically focused on explaining front-end topics, and these topics have the good fortune of being easy to describe in a visual way. It’s easy to explain something whose final output and numerous intermediate steps are something we can see and play with:
With computer science material, the output is not an app or code snippet or something we can easily see, share, or play with. The output is something more abstract. It is often knowledge for the sake of building intuition and mental models, far removed from the day-to-day things we rely on computers for.
Here is where I am going to take a gamble. I have a strong hunch that there are many visual learners (kinda like me) who want to learn computer science but have difficulty understanding the material because of how the information is presented. I want to fix this, and I want to start by tackling the most difficult of computer science subjects: Data Structures and Algorithms. My goal is to have this be the ideal learning resource that many visual learners like me never had.
Real Talk: What might the content look like?
The content here will span both tutorial and video forms, all available freely as always, with no sign-ups or nags on KIRUPA. There will also be a physical book version published by my long-time publisher friends at Pearson:
What will the content cover?
I am still finalizing the topics I want to cover, and I have shared the tentative table of contents in this thread. Feel free to take a look and provide your thoughts. If there are topics that you found especially confusing from your past, I’d like to hear more so that I can attempt to explain those topics in a less confusing way:
![90's Flowchart 90's Flowchart](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b7e7124-222d-400c-9336-73bc40f97894_400x397.png)
Taking many steps back, the goal isn’t for this content to replace lectures or books like Introduction to Algorithms by CLRS, Algorithms by Robert Sedgewick, and others. It is designed to be a pre-read of sorts that helps simplify the difficult first few moments of encountering a new topic:
What I’ve found from many years of teaching is that everybody is capable of learning very complicated topics. The first few moments with a topic and helping learners cross this initial complexity hump is important. If the learning material doesn’t do a good job here, large groups of learners will be left behind. If we give visual learners the same material that is optimized for non-visual learners, they don’t cross this initial complexity hump. I want to help fix this.
If I am successful, by the time you encounter a complex topic in the traditional computer science world, you will have already encountered the same topic at a more approachable and visual level. A spark will have already been lit. That initial complexity hump would now just be a whimper. At least, that is the goal I’m going to strive for.
Till Next Time!
As always, I will be creating the content in the open and sharing along the way. If you want to be kept in the loop, follow me on Twitter or subscribe to the site’s RSS feed.
Cheers,
Kirupa 😊
Interestingly, the notion of visual vs other types of “learners” has been mostly debunked by modern investigations - but that’s more to say that… probably _everyone_ would benefit from this kind of diversity of learning material (not just those who consider themselves more visual).
Here’s the vid I watched quite recently which goes into it: https://youtu.be/rhgwIhB58PA
This would be precisely what I'm looking for.
I've been following your blogs since way back in the AS3 world and have always found them easy to consume. I think this is probably why.
I wonder if us visual learners are drawn to front end development for this very reason. I certainly believe it to be the main motivation behind my urge to create better UIs.