Picture courtesy of Shahadat Rahman from Unsplash
I remember being in my first Algorithms class for Computer Science at Elizabeth City State University (ECSU) thinking, “What have I gotten myself into?!”. The material was daunting, and (most of the time) I felt incompetent doing it. On top of these feelings, each student had to present a solution to their coding problem utilizing algorithms learned that semester. This included documenting its Big-O notation, while our teacher is grading us on the material AND the number of times we say “ummm” (thank you Professor Rook, I’ve grown into a better presenter because of your classes 😂). To say that I was under pressure, is an understatement!
So why create a series on a topic that caused so much stress?! Because I believe coming back to a once difficult topic with my current skill set/experience will yield not only understanding but improve my coding overall (also, I would say I am a more confident software engineer than junior me ha). I also think that going through this series, my own unique way of explaining topics might help someone out there on their on CS/engineer journey or on tech interviews.
During this series, I will be following the template laid out by Fahim UI Haq on codinginterview.com, which is a great resource! They have lined up what one should be learning week by week in preparation for a technical interview. Their outline is as follows:
- Week 0- Choose What Programming Language Should You Use
- Week 1- Brush on the Basics w/ Programming Language
- Week 2/3- Data Structures and Algorithms
- Week 4/5- Practice Simple Data Structures Algorithmic Challenges
- Week 6/7/8- Practice More Complex Coding Interview Problems
- Week 9/10- System Design Interviews
- Week 11- OS and Concurrency Concepts
- Week 12- Object Oriented Interviews
I will cover the topics on the schedule in a detailed manner (low level — I’m seeking to breaking down more complex topics so anyone can understand) and will end the blog post off with free resources that can solidify any misunderstandings. Though I will be approaching the material in an sequential manner, some topics will take more than one blog post and will be split into parts accordingly. The language I will be using will be Python 3. However, you should be able to apply the concepts in the language you choose to work in, if you have a good handle on the basics of said language.
The hope is that this blog post series on DS and algorithms will be one of the best free resources alongside many others that have helped me during this time. Let me know your thoughts in the comments below!
If your interest was peaked and/or have been in encouraged/helped by this blog post, follow me on Twitter (@jeff_ridgeway4)!