Awesome Open Source
Awesome Open Source

Coursera: Data Structures and Algorithms Specialization

Progress: 4/6 courses completed

This repository contains almost all the solutions for Data Structures and Algorithms Specialization. The language of choice is Python3, but I tend to switch to Ruby/Rust in the future. All program assignments can be found inside the course weeks directory.

Disclaimer: The below solutions is for reference only. Please design and implement your own algorithms to pass the courses.

Course 1. Algorithmic Toolbox

Week 1. Introduction

Week 2. Greedy Algorithms

Week 3. Divide and Conquer

Week 4. Dynamic Programming

Course 2. Data Structures

Week 1. Basic Data Structures

Week 2. Priority Queues and Disjoint Sets

Week 3. Hash Tables and Hash Functions

Week 4. Binary Search Trees

Course 3. Algorithms on Graphs

Week 1. Decomposition of Graphs 1

Week 2. Decomposition of Graphs 2

Week 3. Paths in Graphs 1

Week 4. Paths in Graphs 2

Week 5. Minimum Spanning Trees

Week 6. Advanced Shortest Paths Project (Optional)

Course 4. Algorithms on Strings

Week 1. Suffix Trees

Week 2. BWT and Suffix Arrays

Week 3-4. Algorithmic Challenges


All contributions are welcome. Just make a PR. Below is a list of general improvements that need to be added that I would love help with:

  • Improve documentation
  • Clean up code (by fixing pep8 errors)
  • Better algorithms that reduce time complexity (espescially for course #3 & #4)
Alternatives To Coursera Dsa
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (807,639
Algorithms (37,445
Graph (24,364
Tree (20,455
Data Structure (9,596
Heap (3,064
Coursera (2,492
Hashtable (1,193
Graph Algorithms (999
Sorting Algorithms (781
Dynamic Programming (717
Tree Structure (678
Search Algorithm (567
Priority Queue (468
Binary Search Tree (276
Heuristics (197
Greedy Algorithms (170
Shortest Paths (143
Minimum Spanning Trees (69
Hash Algorithm (39
Efficient Algorithm (29
String Algorithms (22
Disjoint (4