# My learnings on Algorithms Specialization by Stanford University on Coursera. Is it worth learning?

## Data Structures and Algorithms

Hey everyone ๐! 2 days back, I completed a specialization on Algorithms via Coursera. This article is to share my learnings on the bunch of courses, which come under this specialization. This article will highly motivate you to learn Data Structures and Algorithms. So read this post to the end

If you are feeling hard to understand data structures and algorithms. Then let me motivate you by saying one thing. I am not pursuing a computer science degree. I am undergoing a degree in electrical and electronics. **If I can take an interest in and study data structures and algorithms, why can't you?** You definitely can! Keep up the ๐ฅ

Throughout this post, I refer to Data Structures and Algorithms as DSA

Alright, you can learn DSA anywhere. There are plenty of resources available online. I took this Specialization on Coursera, **" Algorithms Specialization by Stanford "**. The Instructor of this specialization is **Tim Roughgarden**. He is from Stanford. Let me say you one thing, If you're from India, then you will surely miss the Indian accent. It takes some time to match the mindset of the Instructor. This specialization comprises four courses,

๐ฉ Divide and Conquer, Sorting and Searching, and Randomized Algorithms

๐ฉ Graph Search, Shortest Paths, and Data Structures

๐ฉ Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming

๐ฉ Shortest Paths Revisited, NP-Complete Problems and What to do about them

uhh, these are the 4 courses you are going to study under this specialization. You can't enroll in this course as a complete noob. You should be familiar with some data structures like Linked lists, Stacks, Queues, etc. Though the instructor mentioned Data Structures in the second course, he will only teach you data structures like Heap, Binary Search Trees, and Hash Tables. Also, you should familiar with anyone programming language. That may be JavaScript, Python, C, C++, or Java. The instructor will not provide any specific code to any programming language. He'll only provide the pseudo-code. You should implement the data structure or the algorithm on your own with your favorite programming language. So, be strong in your favorite language. Mine is **JavaScript** ๐ช

Alright, as this specialization is focused on algorithms. You will learn A to Z about algorithms from this specialization. In the first course, you'll face the Divide and Conquer algorithm. There you'll learn sorting techniques like merge and quick sort. Also, you'll learn about fascinating terms like Big O, Big Omega, and Big Theta notations. This introduces you to the time and space complexity. From here onwards your view on computer science will completely change. Trust me, here you feel that why the knowledge of DSA is very important for every computer science engineer or self-learning developer.

In the second course, you'll learn about Graphs and it's applications. Here you'll learn how to implement a graph data structure and how to traverse a graph using BFS and DFS techniques. Also, you will learn how to find the shortest paths between nodes (also known as vertex) using **Dijkstra's Algorithm**.

You'll learn the paradigms like Greedy Algorithms, Dynamic Programming, and Minimum Spanning Trees in the third course. In greedy algorithms, you'll learn about **Huffman's algorithm**. In short, Huffman's algorithm is used to compress data. Also, you'll learn to solve optimization problems in both greedy and dynamic programming. eg: Knapsack problems

The fourth course is the continuation of the graph. Here you'll learn many more algorithms like **Bellman-Ford Algorithm**, **Floyd-Warshall Algorithm**, etc.

Done. Here I have compressed my learnings on this specialization. I hope you got some idea about the courses and it's content. If you ask me to share the algorithms that I have implemented through JavaScript, I'll do it for sure by sharing a Github repo. Post your thoughts in the comment section below.

Here is my last piece of suggestion on learning DSA. As I said before, your point of view on computer science will completely change after gaining some knowledge in DSA. So, invest some time to learn DSA. I won't say, you should take this course. But If you decide to take this course, then consider the points as stated above.

Finally, I would like to end this article by sharing one quote by **Linus Torvalds**,

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

Before you leave, share your thoughts in the comment section below. And, if you liked this article, be sure to โค it.