1
0
mirror of https://github.com/kamranahmedse/developer-roadmap.git synced 2025-08-21 00:21:35 +02:00

Add content for common algorithms in computer science roadmap

This commit is contained in:
Kamran Ahmed
2022-11-08 16:19:13 +04:00
parent 2b4dede970
commit 09b95f30d7
19 changed files with 132 additions and 19 deletions

View File

@@ -13,7 +13,6 @@ Go is an open source programming language supported by Google. Go can be used to
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/tour/welcome/1'>A Tour of Go Go Basics</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/doc/'>Go Reference Documentation</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://gobyexample.com/'>Go by Example - annotated example programs</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://boot.dev/learn/learn-golang'>Learn Go | Boot.dev </BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.codecademy.com/learn/learn-go'>Learn Go | Codecademy</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.w3schools.com/go/'>W3Schools Go Tutorial </BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://thenewstack.io/make-a-restful-json-api-go/'>Making a RESTful JSON API in Go</BadgeLink>

View File

@@ -13,7 +13,6 @@ Go is an open source programming language supported by Google. Go can be used to
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/tour/welcome/1'>A Tour of Go Go Basics</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/doc/'>Go Reference Documentation</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://gobyexample.com/'>Go by Example - annotated example programs</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://boot.dev/learn/learn-golang'>Learn Go | Boot.dev </BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.codecademy.com/learn/learn-go'>Learn Go | Codecademy</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.w3schools.com/go/'>W3Schools Go Tutorial </BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://thenewstack.io/make-a-restful-json-api-go/'>Making a RESTful JSON API in Go</BadgeLink>

View File

@@ -1 +1,9 @@
# Finding hamiltonian paths
# Finding Hamiltonian Paths
Hamiltonian paths are paths that visit every node in a graph exactly once. They are named after the famous mathematician [Hamilton](https://en.wikipedia.org/wiki/William_Rowan_Hamilton). Hamiltonian paths are a special case of [Hamiltonian cycles](https://en.wikipedia.org/wiki/Hamiltonian_cycle), which are cycles that visit every node in a graph exactly once.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.hackerearth.com/practice/algorithms/graphs/hamiltonian-path/tutorial/'>Hamiltonian Path</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/hamiltonian-cycle-backtracking-6/'>Hamiltonian Cycle | Backtracking-6</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://medium.com/stamatics-iit-kanpur/hamiltonian-paths-and-cycles-4f233bfbc53a'>Hamiltonian Paths and Cycles</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://people.csail.mit.edu/virgi/6.s078/lecture17.pdf'>Hamiltonian Paths - Lecture 7</BadgeLink>

View File

@@ -1 +1,8 @@
# Solving n queen problem
# Solving n Queen Problem
N Queen Problem is a famous problem in Computer Science. It is a problem of placing n queens on an n x n chessboard such that no two queens attack each other. The problem is to find all possible solutions to the problem.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.digitalocean.com/community/tutorials/n-queens-problem-java-c-plus-plus'>N-Queens problem using backtracking in Java/C++</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/n-queen-problem-backtracking-3/'>N Queen Problem | Backtracking-3</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=xFv_Hl4B83A'>6.1 N Queens Problem using Backtracking</BadgeLink>

View File

@@ -1 +1,9 @@
# Maze solving problem
# Maze Solving Problem
Maze solving problem is a classic problem in computer science. It is a problem where we have to find a path from a starting point to an end point in a maze. The maze is represented as a grid of cells. Each cell can be either a wall or a path. The path cells are connected to each other. The starting point and the end point are also given. The goal is to find a path from the starting point to the end point. The path can only be made up of path cells. The path cannot go through the wall cells.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://github.com/john-science/mazelib/blob/main/docs/MAZE_SOLVE_ALGOS.md'>Maze Solving Algorithms</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://kidscodecs.com/maze-solving-algorithms/'>Maze Solving Algorithms</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=rop0W4QDOUI'>Maze Solving - Computerphile</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=XP94WC_XnZc'>Python Maze Solving Tutorial (Using Recursion)</BadgeLink>

View File

@@ -1 +1,9 @@
# Knights tour problem
# Knight's Tour Problem
Knight's Tour Problem is a problem where we have to find a path for a knight to visit all the cells of a chessboard without visiting any cell twice.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/the-knights-tour-problem-backtracking-1/'>The Knights tour problem | Backtracking-1</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://bradfieldcs.com/algos/graphs/knights-tour/'>Knight's Tour</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.codesdope.com/course/algorithms-knights-tour-problem/'>Knight's Tour Proble</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.codingninjas.com/codestudio/library/backtracking-the-knights-tour-problem'>Backtracking: The Knights Tour Problem</BadgeLink>

View File

@@ -1 +1,7 @@
# Back tracking algorithms
# 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.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/backtracking-algorithms'>Backtracking Algorithms</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.programiz.com/dsa/backtracking-algorithm'>Backtracking Algorithm</BadgeLink>

View File

@@ -1 +1,10 @@
# Robin karp algorithm
# Rabin-Karp's algorithm
Rabin-Karp algorithm is a string searching algorithm that uses hashing to find any one of a set of pattern strings in a text. For strings of average length `n`, it performs in `O(n+m)` time with `O(m)` space, where `m` is the length of the pattern. It is often used in bioinformatics to search for DNA patterns.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw'>Rabin Karp's Algorithm</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation'>Optimization: Precomputation</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis'>Optimization: Implementation and Analysis</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9'>Lecture 9: Table Doubling, Karp-Rabin</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=33'>Rolling Hashes, Amortized Analysis</BadgeLink>

View File

@@ -1 +1,7 @@
# Tail recursion
# Tail Recursion
Tail recursion is a special kind of recursion where the recursive call is the very last thing in the function. It's a function that does not do anything at all after recursing.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad'>What is tail recursion? Why is it so bad?</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1'>Tail Recursion</BadgeLink>

View File

@@ -1 +1,11 @@
# Non tail recursion
# Non-tail recursion
Tail recursion is when a function can directly return the result of a recursive call - there are no outstanding operations, and there is no need for the call stack frame to be preserved. So it can be translated to a “goto with arguments”, and the stack usage will be constant.
In “non-tail recursion”, there are outstanding operations after the recursive call, and the stack frame cannot be nuked.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.quora.com/What-is-non-tail-recursion'>What is non-tail recursion?</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.baeldung.com/cs/tail-vs-non-tail-recursion'>Tail vs Non-Tail Recursion</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=IVLUGb_gDDE'>Recursion (Solved Problem 1)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=HIt_GPuD7wk'>Types of Recursion (Part 2) | Tail & Non-tail Recursion</BadgeLink>

View File

@@ -1 +1,11 @@
# Recursion
# 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.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=rf60MejMz3E'>Recursion in 100 Seconds</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=9'>Lecture 8 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=10'>Lecture 9 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=NdF1QDTRkck&list=PLFE6E58F856038C69&index=11'>Lecture 10 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=12'>Lecture 11 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=ngCos392W4w'>5 Simple Steps for Solving Any Recursive Problem</BadgeLink>

View File

@@ -1 +1,9 @@
# Binary search
# Binary Search
Binary search is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target value, and repeating this until the target value is found. If the search ends with the remaining half being empty, the target is not in the array.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=fDKIpRe8GW4&feature=youtu.be'>Binary Search in 4 Minutes</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=D5SrAga1pno'>Binary Search - CS50</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search'>Binary Search - Khan Academy</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.topcoder.com/thrive/articles/Binary%20Search'>Binary Search</BadgeLink>

View File

@@ -1 +1,6 @@
# Linear search
# Linear Search
Linear search is a very simple algorithm that is used to search for a value in an array. It sequentially checks each element of the array until a match is found or until all the elements have been searched.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/linear-search/'>Linear Search Algorithm</BadgeLink>

View File

@@ -1 +1,7 @@
# Search algorithms
# 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.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/searching-algorithms/'>Searching Algorithms</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.freecodecamp.org/news/search-algorithms-linear-and-binary-search-explained/'>Search Algorithms Linear Search and Binary Search</BadgeLink>

View File

@@ -1 +1,8 @@
# Lru cache
# LRU Cache
LRU cache is a cache that evicts the least recently used item first. It is a very common cache algorithm. It is used in many places, such as in the browser cache, the database cache, and the cache of the operating system.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=R5ON3iwx78M'>The Magic of LRU Cache (100 Days of Google Dev)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=bq6N7Ym81iI'>Implementing LRU - Udacity</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=8-FZRAjR7qU'>LeetCode | 146 LRU Cache | C++ | Explanation</BadgeLink>

View File

@@ -1 +1,7 @@
# Lfu cache
# LFU Cache
LFU Cache is a data structure that stores key-value pairs. It has a fixed size and when it is full, it removes the least frequently used key-value pair. It is a variation of the LRU Cache and is used in many applications such as caching web pages, caching database queries, and caching images.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/least-frequently-used-lfu-cache-implementation/'>Least Frequently Used (LFU) Cache Implementation</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://jojozhuang.github.io/algorithm/data-structure-lfu-cache/'>1117. Data Structure - LFU Cache</BadgeLink>

View File

@@ -1 +1,7 @@
# Mfu cache
# MFU Cache
MFU Cache is a variation of the LRU Cache. The difference is that instead of deleting the least recently used entry, the MFU Cache deletes the least frequently used entry.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://stackoverflow.com/questions/13597246/comparison-of-mfu-and-lru-page-replacement-algorithms'>Comparison of MFU and LRU page replacement algorithms</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://stackoverflow.com/questions/5088128/why-does-cache-use-most-recently-used-mru-algorithm-as-evict-policy'>Why does cache use Most Recently Used (MRU) algorithm as evict policy?</BadgeLink>

View File

@@ -1 +1,7 @@
# Cache algorithms
# 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.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://dev.to/satrobit/cache-replacement-algorithms-how-to-efficiently-manage-the-cache-storage-2ne1'>Cache Replacement Algorithms: How To Efficiently Manage The Cache Storage</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=xDKnMXtZKq8'>14. Caching and Cache-Efficient Algorithms</BadgeLink>

View File

@@ -4,7 +4,6 @@ A binary search tree, also called an ordered or sorted binary tree, is a rooted
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=S2W3SXGPVyU'>Tree Data Structure | Illustrated Data Structures</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://blog.boot.dev/computer-science/binary-search-tree-in-python/'>Writing a Binary Search Tree in Python with Examples</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.section.io/engineering-education/implementing-binary-search-tree-using-python/'>How to Implement Binary Search Tree in Python</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/binary-search-tree-data-structure/?ref=gcse'>Problem Set</BadgeLink>