As a Software Engineer, the hardest concept for me to understand is Algorithms. Since I do not have a traditional CS background, I have never learned about Algorithms until I started prepping for technical interviews. In fact, very few technical programs/bootcamps focus on teaching students Algorithms.
In order to become comfortable with Algorithms, I googled online, attended meetups, and attended a Girl Develop It workshop called Introduction to Algorithms. This workshop really helped me understand Algorithms more clearly and I want to share with you what I learned.
What is a Algorithm?
An algorithm is a repeatable process for determining the solution to a problem. An example is show below:
Do we use Algorithms daily?
We actually do. Here are some ways we use Algorithms on a day to day basis:
- Find a cereal in the grocery store.
- Re-organizing your closet to make finding stuff easier.
- Finding something good to watch on TV.
In fact, let’s use watching TV as an example. There are several ways we find something to watch on TV. Here is one approach:
Finding something to watch on TV: Version 1 (v1)
- Turn on TV.
- Watch what is on.
Another approach is:
Finding something to watch on TV: Version 2 (v2)
- Turn on TV.
- Flip through every channel and rate what is on.
- Find the highest rated channel.
- Watch
Here is another way as well:
Finding something to watch on TV: Version 3 (v3)
- Turn on TV.
- Check 5 favorite channels and rate what is on .
- Find the highest rated channel
- Watch
As you can see there are several ways to finding something to watch on TV and the same goes for solving an Algorithm.
So the goal of Algorithms is to solve a problem in a repeatable way. What I touch upon in this blog post is just the tip of the iceberg. There is much more to come. I plan on writing a series of blogposts regarding Algorithms and will go in further detail about Data Structures, Time Complexity, Big O Notation, and various sorting methods.
Top comments (1)
This is a good place to learn about algorithms: khanacademy.org/computing/computer....
Another important topic is about the complexity of the algorithms Big-O notation.