parent
0ac616d18e
commit
9f7d902e5c
202 changed files with 8602 additions and 12303 deletions
File diff suppressed because it is too large
Load Diff
@ -1,5 +0,0 @@ |
|||||||
# Readme |
|
||||||
|
|
||||||
Please note that this is a study plan for Computer Science, not web development, we have [separate roadmaps for web development](/). Also, note that this is not an exhaustive list and is a highly opinionated list of topics. |
|
||||||
|
|
||||||
We are continuously working on improving the roadmaps. Please [create an issue with your suggestions](https://github.com/kamranahmedse/developer-roadmap/issues) or [reach out to me on twitter](https://twitter.com/kamrify) with your feedback and suggestions for improving this roadmap further. |
|
@ -1,18 +0,0 @@ |
|||||||
# Common Runtimes |
|
||||||
|
|
||||||
Given below is the list of common algorithmic runtimes. The runtimes are listed in ascending order of their complexity. |
|
||||||
|
|
||||||
- O(1) - Constant |
|
||||||
- O(log n) - Logarithmic |
|
||||||
- O(n) - Linear |
|
||||||
- O(n log n) - Linearithmic |
|
||||||
- O(n^2) - Quadratic |
|
||||||
- O(n^3) - Cubic |
|
||||||
- O(2^n) - Exponential |
|
||||||
- O(n!) - Factorial |
|
||||||
- O(n^k) - Polynomial |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@video@Big O Notation — Calculating Time Complexity](https://www.youtube.com/watch?v=Z0bH0cMY0E8) |
|
||||||
- [@video@Big O Notations](https://www.youtube.com/watch?v=V6mKVRU1evU) |
|
@ -1,13 +0,0 @@ |
|||||||
# Sorting Algorithms |
|
||||||
|
|
||||||
Sorting algorithms are used to sort data in a collection. Sorting is a very common task in computer science, and it is also a very common interview question. There are many different ways to sort data, and different algorithms have different advantages and disadvantages. |
|
||||||
|
|
||||||
Learn about the sorting algorithms and know the best case/worst case, average complexity of each. Also, learn about the stability of sorting algorithms. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@article@CS 61B Lecture 29: Sorting I](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) |
|
||||||
- [@article@CS 61B Lecture 30: Sorting II](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) |
|
||||||
- [@article@CS 61B Lecture 32: Sorting III](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) |
|
||||||
- [@article@CS 61B Lecture 33: Sorting V](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) |
|
||||||
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) |
|
@ -1,12 +0,0 @@ |
|||||||
# Tree Algorithms |
|
||||||
|
|
||||||
A tree is non-linear and a hierarchical data structure consisting of a collection of nodes such that each node of the tree stores a value and a list of references to other nodes (the “children”). |
|
||||||
|
|
||||||
Here is the list of common tree algorithms: |
|
||||||
|
|
||||||
- Tree Traversal: |
|
||||||
- Pre-Order Traversal |
|
||||||
- In-Order Traversal |
|
||||||
- Post-Order Traversal |
|
||||||
- Breadth First Search |
|
||||||
- Depth First Search |
|
@ -1,15 +0,0 @@ |
|||||||
# Graph Algorithms |
|
||||||
|
|
||||||
Graphs in data structures are non-linear data structures made up of a finite number of nodes or vertices and the edges that connect them. Graphs in data structures are used to address real-world problems in which it represents the problem area as a network like telephone networks, circuit networks, and social networks. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@video@Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prims Algorithm - Lecture 6](https://www.youtube.com/watch?v=i_AQT_XfvD8\&index=6\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) |
|
||||||
- [@video@Graph Algorithms II - DFS, BFS, Kruskals Algorithm, Union Find Data Structure - Lecture 7](https://www.youtube.com/watch?v=ufj5_bppBsA\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=7) |
|
||||||
- [@video@Graph Algorithms III: Shortest Path - Lecture 8](https://www.youtube.com/watch?v=DiedsPsMKXc\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=8) |
|
||||||
- [@video@Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://www.youtube.com/watch?v=XIAQRlNkJAw\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=9) |
|
||||||
- [@video@Strongly Connected Components Kosarajus Algorithm Graph Algorithm](https://www.youtube.com/watch?v=RpgcYiky7uw) |
|
||||||
- [@video@Shortest Path Algorithms (playlist) in 16 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) |
|
||||||
- [@video@Minimum Spanning Trees (playlist) in 4 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) |
|
||||||
- [@course@Algorithms on Graphs - Coursera](https://www.coursera.org/learn/algorithms-on-graphs) |
|
||||||
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) |
|
@ -1,10 +0,0 @@ |
|||||||
# Greedy Algorithms |
|
||||||
|
|
||||||
Greedy algorithms are a type of algorithm that always makes the choice that seems to be the best at that moment. This means that it makes a locally-optimal choice in the hope that this choice will lead to a globally-optimal solution. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@article@Greedy Algorithms - Geeks for Geeks](https://www.geeksforgeeks.org/greedy-algorithms/) |
|
||||||
- [@article@Greedy Algorithms - Programiz](https://www.programiz.com/dsa/greedy-algorithm) |
|
||||||
- [@video@Greedy Algorithms Tutorial – Solve Coding Challenges](https://www.youtube.com/watch?v=bC7o8P_Ste4) |
|
||||||
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) |
|
@ -1,9 +0,0 @@ |
|||||||
# Back Tracking Algorithm |
|
||||||
|
|
||||||
Back tracking algorithms are used to solve problems that can be broken down into smaller sub-problems. The algorithm tries to solve each sub-problem and if it fails, it backtracks and tries to solve the sub-problem in a different way. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@article@Backtracking Algorithms](https://www.geeksforgeeks.org/backtracking-algorithms) |
|
||||||
- [@article@Backtracking Algorithm](https://www.programiz.com/dsa/backtracking-algorithm) |
|
||||||
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) |
|
@ -1,13 +0,0 @@ |
|||||||
# Recursion |
|
||||||
|
|
||||||
Recursion is a method of solving problems where the solution depends on solutions to smaller instances of the same problem. A recursive algorithm must have a base case. A recursive algorithm calls itself, recursively. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@video@Recursion in 100 Seconds](https://www.youtube.com/watch?v=rf60MejMz3E) |
|
||||||
- [@video@Lecture 8 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=gl3emqCuueQ\&list=PLFE6E58F856038C69\&index=9) |
|
||||||
- [@video@Lecture 9 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=uFJhEPrbycQ\&list=PLFE6E58F856038C69\&index=10) |
|
||||||
- [@video@Lecture 10 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=NdF1QDTRkck\&list=PLFE6E58F856038C69\&index=11) |
|
||||||
- [@video@Lecture 11 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=p-gpaIGRCQI\&list=PLFE6E58F856038C69\&index=12) |
|
||||||
- [@video@5 Simple Steps for Solving Any Recursive Problem](https://www.youtube.com/watch?v=ngCos392W4w) |
|
||||||
- [@feed@Explore top posts about Recursion](https://app.daily.dev/tags/recursion?ref=roadmapsh) |
|
@ -1,9 +0,0 @@ |
|||||||
# Search Algorithms |
|
||||||
|
|
||||||
Search algorithms are used to find a specific item in a collection of items. For example, if you have a list of names and you want to find a specific name, you can use a search algorithm to find that name. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@article@Searching Algorithms](https://www.geeksforgeeks.org/searching-algorithms/) |
|
||||||
- [@article@Search Algorithms – Linear Search and Binary Search](https://www.freecodecamp.org/news/search-algorithms-linear-and-binary-search-explained/) |
|
||||||
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) |
|
@ -1,9 +0,0 @@ |
|||||||
# Cache Algorithms |
|
||||||
|
|
||||||
Cache algorithms are used to manage the cache memory of a computer. Cache memory is a small amount of memory that is used to store data that is frequently accessed. This allows the computer to access the data faster than if it had to go to the main memory. Cache algorithms are used to determine which data should be stored in the cache memory and which data should be removed from the cache memory. |
|
||||||
|
|
||||||
Visit the following resources to learn more: |
|
||||||
|
|
||||||
- [@article@Cache Replacement Algorithms: How To Efficiently Manage The Cache Storage](https://dev.to/satrobit/cache-replacement-algorithms-how-to-efficiently-manage-the-cache-storage-2ne1) |
|
||||||
- [@video@14. Caching and Cache-Efficient Algorithms](https://www.youtube.com/watch?v=xDKnMXtZKq8) |
|
||||||
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) |
|
@ -0,0 +1 @@ |
|||||||
|
# Adjacency Matrix |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue