# Algorithms and Data Structure.

In this article we’re going to talk about algorithms and some of my recommendations for learning algorithms and data structure. But before talking about algorithms let’s dive into my journey with it.

### This code is redundant

2 years ago when I started my journey to learn programming, and in the middle of my enthusiasm of writing simple scripts. I showed my code to a friend. He looked at the code for 30 seconds and he cleared it all and started writing his own. I was astonished when I looked at his code, it was a couple of lines that performed the same functionality of my 100 line code, It was even faster. After a long discussion about how he did that and where I can learn Algorithms, I started to discover algorithms….

But when I started my first course to learn algorithms the instructor started writing mathematical equations, I couldn’t understand a lot of them So I quit and Decided not to learn algorithms -for now at least- I was in the beginning of my journey so I was so excited to just make things work.

### Do we Really need to learn Algorithms…?!

I asked myself why I learn algorithms …?! Do I really need it to be a better programmer …?! By the time I realized that algorithms aren’t just a bunch of complex equations that I need to implement and convert into code. Algorithms are more than that, **It’s a way of thinking.** Learning algorithms will teach you how to think before starting write any code. How to analyze the problem you need to solve and even how to choose between the solutions and finding the best one.

Of Course it’s recommend to learn Algorithms as early as possible, when you start learning computer science basics. It’ll expand your thinking and it’ll make you think about the best solution, not just any solutions. But as we say, **It’s never too late.**

### OK, Where can I learn Algorithms…?!

There are a lot of tutorials and courses about algorithms, It doesn’t matter which one you choose all of them are great, But It’s all about getting your hands dirty and starting to apply and solve problems.

Right now I’m studying algorithms on coursera The Course is an Algorithmic toolbox. It’s the first course of a Data structures and Algorithms specialization from a university in San Diego, California. It gives you a variety of programming languages for implementing Algorithms (Python, Java, C#, C++). I’ll review each course after I finish it.

You can also check Problem Solving with Algorithms and Data Structures using Python, It’s a great book, everyone recommended it to me to start with. The beauty of this book is that you don’t have to read it from the beginning, you can choose the chapter you want, and read it.

But if you prefer the hard way of learning algorithms you can start right away by solving problems on some online judge websites like Hackerrank.

Of Course there are a lot of other resources to learn from, I’ll provide some links of them below. But these are what I’m learning from right now.

Thanks.

**Other Resources :**

#### Books :

- Algorithms (4th edition)
- Python Algorithms Mastering Basic Algorithms in the Python Language
- Introduction to Algorithms, Third Edition

#### Courses :

- Algorithms, Part 1
- Analysis of Algorithms
- Algorithmic Thinking (Part 1)
- Fundamentals of Computing Specialization

*Feel free to add another resources bellow*.