From 58c066905263c2cdb489e47302020326400071d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 18:19:53 +0200 Subject: [PATCH] chore: sync content to repo (#10283) Co-authored-by: nilbuild <4921183+nilbuild@users.noreply.github.com> --- .../2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md | 4 +--- .../a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md | 3 +-- .../adjacency-list@rTnKJcPniUtqvfOyC88N0.md | 10 +++----- .../content/array@TwW6SO2IXqkxJXVjLzdwU.md | 7 ++---- ...ymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md | 9 +------- .../avl-trees@OUistS7H7hQQxVV-lOg39.md | 7 ++---- .../content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md | 8 ++----- .../balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md | 2 +- .../content/base@q3nRhTYS5wg9tYnQe2sCF.md | 6 +---- ...basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md | 15 ++---------- .../content/big-o@c-NrTtJuNihbHzyPEOKTW.md | 4 +--- .../big-omega@X33735aeAVSlJ6yv9GS-h.md | 2 +- .../big-theta@ThLpVZQIJ4diY5m0dik8m.md | 2 +- ...inary-search-tree@et7l85gnxjvzD2tDyHT_T.md | 10 ++------ .../binary-search@8kTg4O9MrTHRUrp6U-ctA.md | 3 +-- .../binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md | 5 ++-- .../bubble-sort@4wGBYFZpcdTt97WTbSazx.md | 4 ++-- .../content/c@1kQJs-3Aw8Bi7d_Xh67zS.md | 6 ++--- .../content/c@jHKCLfLml8oZyj4829gx0.md | 5 ++-- .../content/c@n4IsklfYJXFIyF1rGWuEa.md | 6 ++--- .../cap-theorem@uqfeiQ9K--QkGNwks4kjk.md | 3 +-- ...aracter-encodings@DtG9EJonWi4_2oQ4fWOKY.md | 2 +- ...d-design-patterns@YMO9oD_sbzyDZPNU2xZwe.md | 7 ++---- .../content/co-np@pLBfkzi0qfgVRqi_4AmMI.md | 4 +--- .../combinatorics@lWnAY0DgrUOmT6yqnxeBN.md | 2 +- ...common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md | 16 ++----------- ...plete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md | 2 +- ...omplexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md | 4 +--- .../content/constant@3F_QBv_sU39ehOxpurF88.md | 2 +- .../cpu-cache@DjTQjMbika4_yTzrBpcmB.md | 3 +-- .../cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md | 3 +-- .../data-structures@NM7q5REW1sJgMhxJhPpLT.md | 5 ++-- ...tabase-federation@3r21avMlo0xFB9i7PHccX.md | 3 +-- .../databases@zvlTQ0A-My4QDrslp_lru.md | 3 +-- ...endency-injection@J7DKRklMtJ94Y-18Jo50r.md | 3 +-- .../design-patterns@-De1hU2ONGwhQmUpsyrCO.md | 3 +-- ...jkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md | 3 +-- ...jkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md | 5 ++-- .../content/dns@fYjoXB4rnkM5gg46sqVz5.md | 4 +--- .../content/dql@05lkb3B86Won7Rkf-8DeD.md | 2 +- .../exponential@5mMLr6tWbiSZuox1lx0_B.md | 12 ++-------- .../factorial@m0umGQNdvg95UiNpQZsQN.md | 23 +------------------ ...lkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md | 3 +-- .../full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md | 2 +- .../content/go@mWW88VnkqWgDz02qw5zU-.md | 7 ++---- .../content/graph@vQm046o6ozcvLoqg9L6eL.md | 8 +------ .../content/graphql@DeE_dZecLmKCjePovTfFS.md | 3 +-- .../content/grpc@M4vdwAbjLPrLjWUsG_P1I.md | 9 ++------ .../hash-table@G2dN2FO0SN_I-5AhO_EUk.md | 6 ++--- ...ryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md | 9 ++------ ...ashing-algorithms@EX_e4B6G07zTb4JjJ7482.md | 3 +-- .../content/heap@pw3ZCC3HKU7D5SQwte4vE.md | 5 ++-- ...mputers-calculate@GDLKJkKgB-i7n0YcV2NDa.md | 2 +- ...ow-computers-work@-emdKpD5uRNuvem5rbFXJ.md | 3 +-- ...executes-programs@1eglba39q426Nh0E0qcdj.md | 3 +-- .../content/http@2tUwl-br-SRuwADSzmQag.md | 2 -- .../content/java@1lQSUFrrIGq19nUnM92-I.md | 5 ++-- ...k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md | 6 +---- ...nuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md | 7 +----- ...ruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md | 3 +-- .../linked-list@gr8BK6vq4AVwp_aUozZmf.md | 7 +----- ...-mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md | 6 +---- .../logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md | 2 +- ...gest-path-problem@4QVVYjDODMWsjnrE-4UBs.md | 2 +- .../networking@zG5t3HqbZnh9CGRqp1Sb-.md | 4 ++-- ...on-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md | 11 ++++----- ...--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md | 4 +--- .../np-complete@Lwkz7qozXRlVNA20zJbSw.md | 5 +--- .../content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md | 7 +----- .../content/np@ewXUHpOnjm8YrLhce1dAQ.md | 7 +----- .../owasp-top-10@3rPSp135TdSCyvXzEzn4p.md | 3 +-- .../content/p--np@0btHNkzWL1w_-pUgU_k2y.md | 8 +------ .../content/p@3aM17dPKNi8tRJsW8lesI.md | 6 ++--- .../pick-a-language@tU4Umtnfu01t9gLlnlK6b.md | 14 +++-------- .../polynomial@sVFvpsAO1_ZH9aliEj9aF.md | 7 +----- .../prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md | 3 +-- .../probability@HZ3_xyphbjhBPwwQo_rHH.md | 2 +- ...-key-cryptography@bDZ34BPm3lX06ERSE10cY.md | 3 +-- .../content/python@RlKZzs44biQPgxD0tK1qx.md | 7 +----- .../content/queue@JI990pDX2jjNe6IH_Y_t0.md | 2 +- ...in-karp-algorithm@l5--4opvZoc_seVn__5R3.md | 4 +--- .../red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md | 13 ++++------- .../content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md | 3 +-- .../robin-karp@Km5LvcJpyntrW2iA8h5e3.md | 3 +-- .../content/rust@1bDjg-KBDKRmE6f1MWY8l.md | 6 ++--- ...duling-algorithms@Ge2nagN86ofa2y-yYR1lv.md | 14 +---------- .../content/security@JnJbJtsqKbVETY2vdLqCO.md | 6 +---- ...sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md | 2 +- .../content/sharding@3K65efPag2076dy-MeTg4.md | 3 +-- .../content/small-o@2cg5PogENPhiYFXQnV9xC.md | 2 +- .../small-omega@dUBRG_5aUYlICsjPbRlTf.md | 2 +- ...s-nosql-databases@nprZscHdC_RdRIcGeGyVk.md | 8 +++---- .../content/sse@JckRqZA8C6IqQLPpTCgf4.md | 3 +-- .../suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md | 3 +-- .../system-design@w-fvEiSJysywR3AOAB0ve.md | 6 ++--- .../content/tree@_eWqiWUmOj0zUo_Ix3j1O.md | 2 +- .../content/tries@4qUVacMEz3XFiL_dMre6P.md | 7 +----- .../unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md | 2 +- .../usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md | 8 +------ .../web-sockets@bVjI14VismTHNCyA0mEBP.md | 1 + 100 files changed, 136 insertions(+), 390 deletions(-) diff --git a/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md b/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md index 6b6c8cf95..47b928161 100644 --- a/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md +++ b/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md @@ -1,8 +1,6 @@ # 2-3 Search Trees -In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - -You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. +In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md b/roadmaps/computer-science/content/a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md index 5133f7f1a..9749e386f 100644 --- a/roadmaps/computer-science/content/a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md +++ b/roadmaps/computer-science/content/a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@Introduction to the A* Algorithm - Red Blob Games](https://www.redblobgames.com/pathfinding/a-star/introduction.html) - [@article@A* Search Algorithm - Wikipedia](https://en.wikipedia.org/wiki/A*_search_algorithm) -- [@video@A* Pathfinding (E01: algorithm explanation)](https://www.youtube.com/watch?v=-L-WgKMFuhE) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@video@A* Pathfinding (E01: algorithm explanation)](https://www.youtube.com/watch?v=-L-WgKMFuhE) \ No newline at end of file diff --git a/roadmaps/computer-science/content/adjacency-list@rTnKJcPniUtqvfOyC88N0.md b/roadmaps/computer-science/content/adjacency-list@rTnKJcPniUtqvfOyC88N0.md index 3cee5789f..adbed8985 100644 --- a/roadmaps/computer-science/content/adjacency-list@rTnKJcPniUtqvfOyC88N0.md +++ b/roadmaps/computer-science/content/adjacency-list@rTnKJcPniUtqvfOyC88N0.md @@ -1,10 +1,6 @@ -# Graph Representation - -A graph can either be represented as an adjacency matrix or an adjacency list. - -The adjacency matrix is a 2D array of size `V x V` where `V` is the number of vertices in a graph. Let the 2D array be `adj[][]`, a slot `adj[i][j] = 1` indicates that there is an edge from vertex `i` to vertex `j`. - -Adjacency list is an array of vectors. Size of the array is equal to the number of vertices. Let the array be `array[]`. An entry `array[i]` represents the list of vertices adjacent to the ith vertex. This representation can also be used to represent a weighted graph. The weights of edges can be represented as lists of pairs. +# Adjacency List + +An adjacency list represents a graph by storing, for each vertex, a list of the vertices it connects to. This representation uses memory proportional to the number of edges, which makes it efficient for sparse graphs where most vertices are not directly connected to each other. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/array@TwW6SO2IXqkxJXVjLzdwU.md b/roadmaps/computer-science/content/array@TwW6SO2IXqkxJXVjLzdwU.md index fecf700ef..b621c4571 100644 --- a/roadmaps/computer-science/content/array@TwW6SO2IXqkxJXVjLzdwU.md +++ b/roadmaps/computer-science/content/array@TwW6SO2IXqkxJXVjLzdwU.md @@ -1,13 +1,10 @@ # Array -Arrays store elements in contiguous memory locations, resulting in easily calculable addresses for the elements stored and this allows faster access to an element at a specific index. +An array stores a fixed-size sequence of elements in contiguous memory, where each element is accessed directly by its index. This contiguous layout makes reading or writing any element an O(1) operation. Inserting or removing an element in the middle is slower, since it requires shifting the elements after it. Visit the following resources to learn more: - [@course@Array Data Structure - Coursera](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - [@article@What is Array in Data Structure? Types & Syntax](https://www.simplilearn.com/tutorials/data-structure-tutorial/arrays-in-data-structure) - [@video@Array Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=QJNwK2uJyGs) -- [@video@Jagged Arrays](https://www.youtube.com/watch?v=1jtrQqYpt7g) -- [@video@Dynamic and Static Arrays](https://www.youtube.com/watch?v=PEnFFiQe1pM&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=6) -- [@video@Dynamic Array Code](https://www.youtube.com/watch?v=tvw4v7FEF1w&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=5) -- [@video@UC Berkeley CS61B - Linear and Multi-Dim Arrays (Start watching from 15m 32s)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) \ No newline at end of file +- [@video@Dynamic and Static Arrays](https://www.youtube.com/watch?v=PEnFFiQe1pM&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=6) \ No newline at end of file diff --git a/roadmaps/computer-science/content/asymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md b/roadmaps/computer-science/content/asymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md index d24d667dd..84061865f 100644 --- a/roadmaps/computer-science/content/asymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md +++ b/roadmaps/computer-science/content/asymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md @@ -1,17 +1,10 @@ # Asymptotic Notation -The efficiency of an algorithm depends on the amount of time, storage and other resources required to execute the algorithm. The efficiency is measured with the help of asymptotic notations. - -An algorithm may not have the same performance for different types of inputs. With the increase in the input size, the performance will change. - -The study of change in performance of the algorithm with the change in the order of the input size is defined as asymptotic analysis. +Asymptotic notation describes how the running time or memory usage of an algorithm grows as the size of its input increases, without tying the description to a specific machine or implementation detail. It focuses on the dominant term as input size approaches infinity, ignoring constants and lower-order terms. This makes it possible to compare algorithms independent of hardware or programming language. Visit the following resources to learn more: - [@article@Asymptotic Analysis: Big-O Notation and More](https://www.programiz.com/dsa/asymptotic-notations) - [@article@Big-O Cheat Sheet](https://www.bigocheatsheet.com/) -- [@article@Big O Notation | Brilliant Math & Science Wiki](https://brilliant.org/wiki/big-o-notation/) - [@video@Big O Notation — Calculating Time Complexity](https://www.youtube.com/watch?v=Z0bH0cMY0E8) -- [@video@Big O Notation in 5 Minutes](https://www.youtube.com/watch?v=__vX2sjlpXU) -- [@video@Asymptotic Notation - CS50](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [@video@CS 61B Lecture 19: Asymptotic Analysis](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) \ No newline at end of file diff --git a/roadmaps/computer-science/content/avl-trees@OUistS7H7hQQxVV-lOg39.md b/roadmaps/computer-science/content/avl-trees@OUistS7H7hQQxVV-lOg39.md index aed497290..04bbc1a79 100644 --- a/roadmaps/computer-science/content/avl-trees@OUistS7H7hQQxVV-lOg39.md +++ b/roadmaps/computer-science/content/avl-trees@OUistS7H7hQQxVV-lOg39.md @@ -1,13 +1,10 @@ # AVL Trees -AVL trees are a type of self-balancing binary search tree. They are named after their inventors, Adelson-Velskii and Landis. AVL trees are the most popular self-balancing binary search tree. - -In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) +An AVL tree is a self-balancing binary search tree where the heights of the left and right subtrees of any node differ by at most one. When an insertion or deletion violates this balance, the tree performs rotations to restore it, guaranteeing O(log n) time for search, insert, and delete. Visit the following resources to learn more: - [@course@AVL Trees](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [@course@AVL Tree Implementation](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [@course@Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) -- [@article@AVL Tree - Programiz](https://www.programiz.com/dsa/avl-tree) -- [@video@MIT AVL Trees / AVL Sort](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) \ No newline at end of file +- [@article@AVL Tree - Programiz](https://www.programiz.com/dsa/avl-tree) \ No newline at end of file diff --git a/roadmaps/computer-science/content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md b/roadmaps/computer-science/content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md index b348867fd..8d361e37d 100644 --- a/roadmaps/computer-science/content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md +++ b/roadmaps/computer-science/content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md @@ -1,14 +1,10 @@ # B-Trees -Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - -In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is turning the file block i address into a disk block (or perhaps to a cylinder-head-sector) address +A B-tree is a self-balancing tree where each node can hold multiple keys and have multiple children, keeping the tree shallow even with a large number of elements. This makes B-trees well suited for storage systems like databases and file systems, where each node can be sized to match a disk block and minimize the number of disk reads needed to find data. Visit the following resources to learn more: - [@article@B-Tree - Wikipedia](https://en.wikipedia.org/wiki/B-tree) - [@article@B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [@video@Introduction to B-Trees](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) -- [@video@B-Tree Definition and Insertion](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) -- [@video@B-Tree Deletion](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) -- [@video@B-Trees (playlist) in 26 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) \ No newline at end of file +- [@video@B-Tree Definition and Insertion](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) \ No newline at end of file diff --git a/roadmaps/computer-science/content/balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md b/roadmaps/computer-science/content/balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md index 9cc6dea37..aec7fea45 100644 --- a/roadmaps/computer-science/content/balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md +++ b/roadmaps/computer-science/content/balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md @@ -1,6 +1,6 @@ # Balanced Tree -A balanced binary tree, also referred to as a height-balanced binary tree, is defined as a binary tree in which the height of the left and right subtree of any node differ by not more than 1. +A balanced tree keeps the height difference between subtrees small, typically bounded by a constant, so no path from root to leaf is much longer than another. This guarantees that operations like search, insert, and delete stay close to O(log n) regardless of insertion order. AVL trees and red-black trees are common implementations that enforce balance automatically. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md b/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md index f46304e07..93820dacf 100644 --- a/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md +++ b/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md @@ -1,10 +1,6 @@ # BASE Model -The rise in popularity of NoSQL databases provided flexibility and fluidity in manipulating data, and as a result a new database model was designed that reflects these properties. The acronym BASE is slightly more confusing than ACID; however, the words behind it highlight how the BASE model differs. BASE stands for: - -* **B**asically **A**vailable -* **S**oft state -* **E**ventual consistency +BASE describes an alternative to the ACID model used by many distributed and NoSQL databases, standing for basically available, soft state, and eventually consistent. It favors availability and scalability over the strict consistency guarantees of ACID, accepting that data may be temporarily inconsistent across nodes before converging. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md b/roadmaps/computer-science/content/basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md index fc524919c..1d3f97ca6 100644 --- a/roadmaps/computer-science/content/basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md +++ b/roadmaps/computer-science/content/basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md @@ -1,21 +1,10 @@ # Basic Math Skills -Math is a fundamental skill for computer science. +Basic math skills for computer science cover the mathematical foundations that algorithm analysis and design rely on, including logic, probability, and combinatorics. These skills come up when estimating an algorithm's performance, reasoning about randomized algorithms, or counting the number of possible outcomes in a problem. Visit the following resources to learn more: - [@article@Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - [@article@Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - [@video@Lec 1 | MIT 6.042J Mathematics for Computer Science, Fall 2010](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [@video@Integer Arithmetic, Karatsuba Multiplication](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [@video@The Chinese Remainder Theorem (used in cryptography)](https://www.youtube.com/watch?v=ru7mWZJlRQg) -- [@video@Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) -- [@video@MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) -- [@video@MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) -- [@video@MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) -- [@video@MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) -- [@video@MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) -- [@video@MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) -- [@video@MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) -- [@video@MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [@feed@Explore top posts about Math](https://app.daily.dev/tags/math?ref=roadmapsh) \ No newline at end of file +- [@video@Integer Arithmetic, Karatsuba Multiplication](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) \ No newline at end of file diff --git a/roadmaps/computer-science/content/big-o@c-NrTtJuNihbHzyPEOKTW.md b/roadmaps/computer-science/content/big-o@c-NrTtJuNihbHzyPEOKTW.md index 11052a591..55be3e786 100644 --- a/roadmaps/computer-science/content/big-o@c-NrTtJuNihbHzyPEOKTW.md +++ b/roadmaps/computer-science/content/big-o@c-NrTtJuNihbHzyPEOKTW.md @@ -7,6 +7,4 @@ Visit the following resources to learn more: - [@article@Big-O Notation: A Simple Explanation with Examples](https://medium.com/better-programming/big-o-notation-a-simple-explanation-with-examples-a56347d1daca) - [@article@CS 61B Lecture 19: Asymptotic Analysis](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [@article@Big O Notation | Brilliant Math & Science Wiki](https://brilliant.org/wiki/big-o-notation/) -- [@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) -- [@video@Big Oh Notation (and Omega and Theta)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN&index=3) \ No newline at end of file +- [@video@Big O Notation — Calculating Time Complexity](https://www.youtube.com/watch?v=Z0bH0cMY0E8) \ No newline at end of file diff --git a/roadmaps/computer-science/content/big-omega@X33735aeAVSlJ6yv9GS-h.md b/roadmaps/computer-science/content/big-omega@X33735aeAVSlJ6yv9GS-h.md index 75f74a907..d97590955 100644 --- a/roadmaps/computer-science/content/big-omega@X33735aeAVSlJ6yv9GS-h.md +++ b/roadmaps/computer-science/content/big-omega@X33735aeAVSlJ6yv9GS-h.md @@ -1,6 +1,6 @@ # Big Omega Notation -The Big Omega notation is similar to the Big O notation. The only difference is that it denotes the lower bound on the growth rate of a function. +Big Omega (Ω) notation describes a lower bound on an algorithm's growth rate, meaning the algorithm will take at least this much time or space in the best case. It is used to express the minimum amount of work an algorithm is guaranteed to do for a given input size. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/big-theta@ThLpVZQIJ4diY5m0dik8m.md b/roadmaps/computer-science/content/big-theta@ThLpVZQIJ4diY5m0dik8m.md index 53404f5d3..867436e76 100644 --- a/roadmaps/computer-science/content/big-theta@ThLpVZQIJ4diY5m0dik8m.md +++ b/roadmaps/computer-science/content/big-theta@ThLpVZQIJ4diY5m0dik8m.md @@ -1,6 +1,6 @@ # Big Theta Notation -If a function has the same Big O and Big Omega, they also become the function's Big Theta. Big Theta is used to describe the exact growth rate of a function. It is denoted by the symbol Θ. +Big-Theta (Θ) notation describes a tight bound on an algorithm's growth rate, meaning the algorithm's running time grows at the same rate as the given function in both the best and worst case. It gives the most precise asymptotic description when an algorithm's upper and lower bounds match. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/binary-search-tree@et7l85gnxjvzD2tDyHT_T.md b/roadmaps/computer-science/content/binary-search-tree@et7l85gnxjvzD2tDyHT_T.md index 21317953d..cdace4e6f 100644 --- a/roadmaps/computer-science/content/binary-search-tree@et7l85gnxjvzD2tDyHT_T.md +++ b/roadmaps/computer-science/content/binary-search-tree@et7l85gnxjvzD2tDyHT_T.md @@ -1,16 +1,10 @@ # Binary Search Tree -A binary search tree, also called an ordered or sorted binary tree, is a rooted binary tree data structure with the key of each internal node being greater than all the keys in the respective node's left subtree and less than the ones in its right subtree. +A binary search tree (BST) is a binary tree where, for every node, all values in its left subtree are smaller and all values in its right subtree are larger. This ordering allows searching, insertion, and deletion in O(log n) time on average, since each comparison rules out half of the remaining nodes. Without balancing, a BST can degrade into a linked list in the worst case, which slows every operation to O(n). Visit the following resources to learn more: - [@course@Binary Search Trees - Coursera](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [@video@Tree | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) - [@video@Binary Search Trees - MIT](https://www.youtube.com/watch?v=76dhtgZt38A) -- [@video@Binary Search Tree Implementation in C++](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) -- [@video@BST implementation - memory allocation in stack and heap](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=30) -- [@video@Find Min and Max Element in Binary Search Tree](https://www.youtube.com/watch?v=Ut90klNN264&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) -- [@video@Check if Given Tree is Binary Search Tree or Not](https://www.youtube.com/watch?v=yEwSGhSsT0U&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) -- [@video@Delete an Element from Binary Search Tree](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=37) -- [@video@Inorder Successor in a binary search tree](https://www.youtube.com/watch?v=5cPbNCrdotA&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=38) -- [@feed@Explore top posts about General Programming](https://app.daily.dev/tags/general-programming?ref=roadmapsh) \ No newline at end of file +- [@video@Binary Search Tree Implementation in C++](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) \ No newline at end of file diff --git a/roadmaps/computer-science/content/binary-search@8kTg4O9MrTHRUrp6U-ctA.md b/roadmaps/computer-science/content/binary-search@8kTg4O9MrTHRUrp6U-ctA.md index eb336edae..77df79a63 100644 --- a/roadmaps/computer-science/content/binary-search@8kTg4O9MrTHRUrp6U-ctA.md +++ b/roadmaps/computer-science/content/binary-search@8kTg4O9MrTHRUrp6U-ctA.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@article@Binary Search - Khan Academy](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [@article@Binary Search](https://www.topcoder.com/thrive/articles/Binary%20Search) - [@video@Binary Search in 4 Minutes](https://www.youtube.com/watch?v=fDKIpRe8GW4&feature=youtu.be) -- [@video@Binary Search - CS50](https://www.youtube.com/watch?v=D5SrAga1pno) -- [@feed@Explore top posts about Binary Search](https://app.daily.dev/tags/binary-search?ref=roadmapsh) \ No newline at end of file +- [@video@Binary Search - CS50](https://www.youtube.com/watch?v=D5SrAga1pno) \ No newline at end of file diff --git a/roadmaps/computer-science/content/binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md b/roadmaps/computer-science/content/binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md index c859d0558..ad5f995c5 100644 --- a/roadmaps/computer-science/content/binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md +++ b/roadmaps/computer-science/content/binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md @@ -1,9 +1,8 @@ # Binary Tree -A binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child. +A binary tree is a tree where each node has at most two children, usually called the left and right child. This constraint makes it simple to reason about and forms the basis for more specialized structures like binary search trees and heaps. Binary trees can be traversed in different orders depending on when the current node is visited relative to its children. Visit the following resources to learn more: - [@video@Binary Trees - Part 1](https://www.youtube.com/watch?v=76dhtgZt38A&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=9) -- [@video@Binary Trees - Part 2](https://www.youtube.com/watch?v=U1JYwHcFfso&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=10) -- [@feed@Explore top posts about Binary Tree](https://app.daily.dev/tags/binary-tree?ref=roadmapsh) \ No newline at end of file +- [@video@Binary Trees - Part 2](https://www.youtube.com/watch?v=U1JYwHcFfso&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=10) \ No newline at end of file diff --git a/roadmaps/computer-science/content/bubble-sort@4wGBYFZpcdTt97WTbSazx.md b/roadmaps/computer-science/content/bubble-sort@4wGBYFZpcdTt97WTbSazx.md index bdce8e2b0..94532629b 100644 --- a/roadmaps/computer-science/content/bubble-sort@4wGBYFZpcdTt97WTbSazx.md +++ b/roadmaps/computer-science/content/bubble-sort@4wGBYFZpcdTt97WTbSazx.md @@ -1,6 +1,6 @@ # Bubble Sort - -Bubble sort is a simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted. + +Bubble sort repeatedly steps through a list, comparing adjacent elements and swapping them if they are in the wrong order, until no swaps are needed. Each pass moves the largest unsorted element into its correct position, like a bubble rising to the top. It runs in O(n²) time in the average and worst case, which makes it inefficient for large datasets but simple to understand and implement. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/c@1kQJs-3Aw8Bi7d_Xh67zS.md b/roadmaps/computer-science/content/c@1kQJs-3Aw8Bi7d_Xh67zS.md index 94a4cba00..34d3efc02 100644 --- a/roadmaps/computer-science/content/c@1kQJs-3Aw8Bi7d_Xh67zS.md +++ b/roadmaps/computer-science/content/c@1kQJs-3Aw8Bi7d_Xh67zS.md @@ -1,12 +1,10 @@ # C++ -C++ is a powerful general-purpose programming language. It can be used to develop operating systems, browsers, games, and so on. C++ supports different ways of programming like procedural, object-oriented, functional, and so on. This makes C++ powerful as well as flexible. +C++ extends the C language with object-oriented features like classes, inheritance, and templates, while keeping low-level memory control. It compiles to native machine code and gives direct access to hardware resources, making it a common choice for game engines, operating systems, and performance-critical software. Manual memory management gives more control but also more room for bugs like leaks or dangling pointers. Visit the following resources to learn more: - [@roadmap@Visit Dedicated C++ Roadmap](https://roadmap.sh/cpp) - [@article@Learn C++](https://learncpp.com/) -- [@article@Cpp Reference](https://en.cppreference.com/) - [@article@CPlusPlus](https://cplusplus.com/) -- [@article@C++ TutorialsPoint](https://www.tutorialspoint.com/cplusplus/index.htm) -- [@feed@Explore top posts about C++ Programming](https://app.daily.dev/tags/c++?ref=roadmapsh) \ No newline at end of file +- [@article@C++ TutorialsPoint](https://www.tutorialspoint.com/cplusplus/index.htm) \ No newline at end of file diff --git a/roadmaps/computer-science/content/c@jHKCLfLml8oZyj4829gx0.md b/roadmaps/computer-science/content/c@jHKCLfLml8oZyj4829gx0.md index e8985f144..a38a0c0cf 100644 --- a/roadmaps/computer-science/content/c@jHKCLfLml8oZyj4829gx0.md +++ b/roadmaps/computer-science/content/c@jHKCLfLml8oZyj4829gx0.md @@ -1,10 +1,9 @@ # C# -C# (pronounced "C sharp") is a general purpose programming language made by Microsoft. It is used to perform different tasks and can be used to create web apps, games, mobile apps, etc. +C# is an object-oriented language developed by Microsoft that runs on the .NET runtime. It combines a syntax similar to Java with features like properties, LINQ, and async/await for asynchronous programming. It is used heavily for Windows desktop apps, enterprise backends, and game development through Unity. Visit the following resources to learn more: - [@article@C# Learning Path](https://docs.microsoft.com/en-us/learn/paths/csharp-first-steps/?WT.mc_id=dotnet-35129-website) - [@article@Introduction to C#](https://docs.microsoft.com/en-us/shows/CSharp-101/?WT.mc_id=Educationalcsharp-c9-scottha) -- [@video@C# tutorials](https://www.youtube.com/watch?v=gfkTfcpWqAY&list=PLTjRvDozrdlz3_FPXwb6lX_HoGXa09Yef) -- [@feed@Explore top posts about C# Programming](https://app.daily.dev/tags/csharp?ref=roadmapsh) \ No newline at end of file +- [@video@C# tutorials](https://www.youtube.com/watch?v=gfkTfcpWqAY&list=PLTjRvDozrdlz3_FPXwb6lX_HoGXa09Yef) \ No newline at end of file diff --git a/roadmaps/computer-science/content/c@n4IsklfYJXFIyF1rGWuEa.md b/roadmaps/computer-science/content/c@n4IsklfYJXFIyF1rGWuEa.md index e1c010986..003d63ead 100644 --- a/roadmaps/computer-science/content/c@n4IsklfYJXFIyF1rGWuEa.md +++ b/roadmaps/computer-science/content/c@n4IsklfYJXFIyF1rGWuEa.md @@ -4,9 +4,7 @@ C is a general-purpose computer programming language. It was created in the 1970 Visit the following resources to learn more: -- [@book@Beej's Guide to C Programming](https://beej.us/guide/bgc/) +- [@roadmap@Visit Dedicated C+ Roadmap](https://roadmap.sh/c) - [@book@Beej's Guide to C Programming](https://beej.us/guide/bgc/) - [@article@Learn C - Tutorials Point](https://www.tutorialspoint.com/cprogramming/index.htm) -- [@video@C Programming Tutorial for Beginners](https://www.youtube.com/watch?v=KJgsSFOSQv0) -- [@video@Learn C Programming with Dr. Chuck](https://www.youtube.com/watch?v=j-_s8f5K30I) -- [@video@C Programming Full Course 2025 (Bro Code)](https://youtu.be/xND0t1pr3KY?si=sy-Xzz7JHMqS6ruA) \ No newline at end of file +- [@video@C Programming Tutorial for Beginners](https://www.youtube.com/watch?v=KJgsSFOSQv0) \ No newline at end of file diff --git a/roadmaps/computer-science/content/cap-theorem@uqfeiQ9K--QkGNwks4kjk.md b/roadmaps/computer-science/content/cap-theorem@uqfeiQ9K--QkGNwks4kjk.md index 00cef2d06..34c405103 100644 --- a/roadmaps/computer-science/content/cap-theorem@uqfeiQ9K--QkGNwks4kjk.md +++ b/roadmaps/computer-science/content/cap-theorem@uqfeiQ9K--QkGNwks4kjk.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@article@What is CAP Theorem?](https://www.bmc.com/blogs/cap-theorem/) - [@article@CAP Theorem - Wikipedia](https://en.wikipedia.org/wiki/CAP_theorem) - [@article@An Illustrated Proof of the CAP Theorem](https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/) -- [@article@CAP Theorem and its applications in NoSQL Databases](https://www.ibm.com/uk-en/cloud/learn/cap-theorem) -- [@video@What is CAP Theorem?](https://www.youtube.com/watch?v=_RbsFXWRZ10) \ No newline at end of file +- [@article@CAP Theorem and its applications in NoSQL Databases](https://www.ibm.com/uk-en/cloud/learn/cap-theorem) \ No newline at end of file diff --git a/roadmaps/computer-science/content/character-encodings@DtG9EJonWi4_2oQ4fWOKY.md b/roadmaps/computer-science/content/character-encodings@DtG9EJonWi4_2oQ4fWOKY.md index 29068287c..57ca33b74 100644 --- a/roadmaps/computer-science/content/character-encodings@DtG9EJonWi4_2oQ4fWOKY.md +++ b/roadmaps/computer-science/content/character-encodings@DtG9EJonWi4_2oQ4fWOKY.md @@ -1,6 +1,6 @@ # Character Encodings -Character encodings are a way of representing characters as numbers. They are used to store and transmit text. The most common character encoding is ASCII, which is a 7-bit encoding. This means that each character is represented by a number between 0 and 127. The ASCII character set contains 128 characters, including letters, numbers, punctuation, and control characters. The ASCII character set is a subset of the Unicode character set, which is a 16-bit encoding. Unicode is a superset of ASCII, so ASCII characters can be represented by Unicode. Unicode is the most common character encoding used on the web. +A character encoding maps characters, like letters, digits, and symbols, to numeric values that a computer can store and process as bytes. Different encodings can represent different sets of characters and use different numbers of bytes per character, which is why text can display as garbled symbols when read with the wrong encoding. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/cloud-design-patterns@YMO9oD_sbzyDZPNU2xZwe.md b/roadmaps/computer-science/content/cloud-design-patterns@YMO9oD_sbzyDZPNU2xZwe.md index 4a515561c..4ad9f2a3e 100644 --- a/roadmaps/computer-science/content/cloud-design-patterns@YMO9oD_sbzyDZPNU2xZwe.md +++ b/roadmaps/computer-science/content/cloud-design-patterns@YMO9oD_sbzyDZPNU2xZwe.md @@ -1,10 +1,7 @@ # Cloud Design Patterns -These design patterns are useful for building reliable, scalable, secure applications in the cloud. - -The link below has cloud design patterns where each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Most patterns include code samples or snippets that show how to implement the pattern on Azure. However, most patterns are relevant to any distributed system, whether hosted on Azure or other cloud platforms. +Cloud design patterns are reusable solutions for common problems that arise when building and operating applications on cloud infrastructure, such as handling transient failures, managing configuration across services, or scaling components independently. Patterns like circuit breaker, retry, and sidecar address the distributed and elastic nature of cloud environments. Visit the following resources to learn more: -- [@article@Cloud Design Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/) -- [@feed@Explore top posts about Cloud](https://app.daily.dev/tags/cloud?ref=roadmapsh) \ No newline at end of file +- [@article@Cloud Design Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md b/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md index 42d2a6dac..3bccaa421 100644 --- a/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md +++ b/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md @@ -7,6 +7,4 @@ Visit the following resources to learn more: - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) -- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [@video@Lecture 23: Computational Complexity](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=24) -- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) \ No newline at end of file +- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file diff --git a/roadmaps/computer-science/content/combinatorics@lWnAY0DgrUOmT6yqnxeBN.md b/roadmaps/computer-science/content/combinatorics@lWnAY0DgrUOmT6yqnxeBN.md index b4011afe2..2de68ee9f 100644 --- a/roadmaps/computer-science/content/combinatorics@lWnAY0DgrUOmT6yqnxeBN.md +++ b/roadmaps/computer-science/content/combinatorics@lWnAY0DgrUOmT6yqnxeBN.md @@ -1,6 +1,6 @@ # Combinatorics -Combinatorics is the study of counting. It is a branch of mathematics that is used to solve problems in a variety of fields, including computer science, statistics, and physics. In computer science, combinatorics is used to solve problems related to counting the number of possible outcomes of a given problem. For example, if you are given a set of 10 objects, how many different ways can you arrange them? Or, if you are given a set of 10 objects, how many different ways can you choose 3 objects from that set? These are examples of combinatorial problems. +Combinatorics is the branch of math concerned with counting, arranging, and combining objects according to given rules, covering concepts like permutations and combinations. It is used in algorithm analysis to count the number of possible states or configurations a problem can have, which often determines the feasibility of a brute-force approach. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md b/roadmaps/computer-science/content/common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md index 5637d60c0..675751964 100644 --- a/roadmaps/computer-science/content/common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md +++ b/roadmaps/computer-science/content/common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md @@ -1,18 +1,6 @@ # Common Algorithms - -Here are some common algorithms that you should know. You can find more information about them in the Algorithms section of the Computer Science course. - -* Sorting -* Recursion -* Searching -* Cache Algorithms -* Tree Algorithms -* Graph Algorithms -* Greedy Algorithms -* Backtracking -* Substring Search -* Suffix Arrays -* Dynamic Programming + +Common algorithms are well-established, reusable procedures for solving recurring problems like sorting a list, searching for a value, or finding a path through a graph. Studying them builds intuition for algorithm design and gives a shared vocabulary for discussing performance trade-offs, since most real-world problems can be broken down into variations of these known patterns. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md b/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md index 8eabb5ef2..1ee34b283 100644 --- a/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md +++ b/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md @@ -1,6 +1,6 @@ # Complete Binary Tree -A complete binary tree is a special type of binary tree where all the levels of the tree are filled completely except the lowest level nodes which are filled from as left as possible. +A complete binary tree fills every level from left to right, with all levels full except possibly the last, which is filled from the left. This shape allows the tree to be stored efficiently in an array, since a node's children can be found using simple index arithmetic instead of pointers. Binary heaps are usually implemented as complete binary trees for this reason. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md b/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md index a2b1ee2b9..c55260452 100644 --- a/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md +++ b/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md @@ -7,6 +7,4 @@ Visit the following resources to learn more: - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) -- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [@video@Lecture 23: Computational Complexity](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=24) -- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) \ No newline at end of file +- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file diff --git a/roadmaps/computer-science/content/constant@3F_QBv_sU39ehOxpurF88.md b/roadmaps/computer-science/content/constant@3F_QBv_sU39ehOxpurF88.md index 39d827332..a0b884c00 100644 --- a/roadmaps/computer-science/content/constant@3F_QBv_sU39ehOxpurF88.md +++ b/roadmaps/computer-science/content/constant@3F_QBv_sU39ehOxpurF88.md @@ -1,6 +1,6 @@ # Constant -Constant time algorithms are the simplest and most efficient algorithms. They are algorithms that always take the same amount of time to run, regardless of the size of the input. This is the best case scenario for an algorithm, and is the goal of all algorithms. +Constant time, written O(1), means an operation takes the same amount of time regardless of input size. Accessing an array element by index or reading a value from a hash table are typical examples, since neither depends on how much data the structure holds. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/cpu-cache@DjTQjMbika4_yTzrBpcmB.md b/roadmaps/computer-science/content/cpu-cache@DjTQjMbika4_yTzrBpcmB.md index 1adf6f32f..d00c25752 100644 --- a/roadmaps/computer-science/content/cpu-cache@DjTQjMbika4_yTzrBpcmB.md +++ b/roadmaps/computer-science/content/cpu-cache@DjTQjMbika4_yTzrBpcmB.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@What is CPU Cache](https://www.howtogeek.com/854138/what-is-cpu-cache/) - [@video@MIT 6.004 L15: The Memory Hierarchy](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) -- [@video@MIT 6.004 L16: Cache Issues](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- [@feed@Explore top posts about Computing](https://app.daily.dev/tags/computing?ref=roadmapsh) \ No newline at end of file +- [@video@MIT 6.004 L16: Cache Issues](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) \ No newline at end of file diff --git a/roadmaps/computer-science/content/cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md b/roadmaps/computer-science/content/cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md index e5209264b..725880498 100644 --- a/roadmaps/computer-science/content/cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md +++ b/roadmaps/computer-science/content/cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md @@ -5,5 +5,4 @@ CPU Interrupts are a way for the CPU to communicate with the rest of the compute Visit the following resources to learn more: - [@article@System Interrupts 100% CPU](https://www.wikihow.com/System-Interrupts-100-Cpu) -- [@video@Interrupts](https://youtu.be/iKlAWIKEyuw) -- [@feed@Explore top posts about Computing](https://app.daily.dev/tags/computing?ref=roadmapsh) \ No newline at end of file +- [@video@Interrupts](https://youtu.be/iKlAWIKEyuw) \ No newline at end of file diff --git a/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md b/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md index 50d574fb5..0b8cb6c75 100644 --- a/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md +++ b/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md @@ -1,11 +1,10 @@ # Data Structures -As the name indicates itself, a **Data Structure** is a way of organizing the data in the **memory** so that it can be used efficiently. Some common data structures are array, linked list, stack, hashtable, queue, tree, heap, and graph. +A data structure is a way of organizing and storing data so it can be accessed and modified efficiently. Different structures, like arrays, linked lists, trees, and hash tables, trade off speed for different operations: some are fast to search, others are fast to insert into. Picking the right one for a problem often has a bigger effect on performance than optimizing the code around it. Visit the following resources to learn more: - [@roadmap@Visit Dedicated DSA Roadmap](https://roadmap.sh/datastructures-and-algorithms) - [@course@Data Structures and Algorithms By Google](https://techdevguide.withgoogle.com/paths/data-structures-and-algorithms/) - [@video@Data Structures Illustrated](https://www.youtube.com/watch?v=9rhT3P1MDHk&list=PLkZYeFmDuaN2-KUIv-mvbjfKszIGJ4FaY) -- [@video@Data Structures playlist](https://youtube.com/playlist?list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&si=_EEf7x58G6lUcMGG) -- [@feed@Explore top posts about Data Structures](https://app.daily.dev/tags/data-structures?ref=roadmapsh) \ No newline at end of file +- [@video@Data Structures playlist](https://youtube.com/playlist?list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&si=_EEf7x58G6lUcMGG) \ No newline at end of file diff --git a/roadmaps/computer-science/content/database-federation@3r21avMlo0xFB9i7PHccX.md b/roadmaps/computer-science/content/database-federation@3r21avMlo0xFB9i7PHccX.md index 5e58c17ef..39145da6c 100644 --- a/roadmaps/computer-science/content/database-federation@3r21avMlo0xFB9i7PHccX.md +++ b/roadmaps/computer-science/content/database-federation@3r21avMlo0xFB9i7PHccX.md @@ -4,5 +4,4 @@ Federation (or functional partitioning) splits up databases by function. The fed Visit the following resources to learn more: -- [@article@Database Federation](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#database-federation) -- [@feed@Explore top posts about Database](https://app.daily.dev/tags/database?ref=roadmapsh) \ No newline at end of file +- [@article@Database Federation](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#database-federation) \ No newline at end of file diff --git a/roadmaps/computer-science/content/databases@zvlTQ0A-My4QDrslp_lru.md b/roadmaps/computer-science/content/databases@zvlTQ0A-My4QDrslp_lru.md index 4541fd55d..108108524 100644 --- a/roadmaps/computer-science/content/databases@zvlTQ0A-My4QDrslp_lru.md +++ b/roadmaps/computer-science/content/databases@zvlTQ0A-My4QDrslp_lru.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@What is a Database?](https://www.oracle.com/database/what-is-database/) - [@article@What are Databases?](https://www.prisma.io/dataguide/intro/what-are-databases) -- [@video@DBMS by Stanford](https://www.youtube.com/watch?v=D-k-h0GuFmE&list=PL9ysvtVnryGpnIj9rcIqNDxakUn6v72Hm) -- [@feed@Explore top posts about Backend Development](https://app.daily.dev/tags/backend?ref=roadmapsh) \ No newline at end of file +- [@video@DBMS by Stanford](https://www.youtube.com/watch?v=D-k-h0GuFmE&list=PL9ysvtVnryGpnIj9rcIqNDxakUn6v72Hm) \ No newline at end of file diff --git a/roadmaps/computer-science/content/dependency-injection@J7DKRklMtJ94Y-18Jo50r.md b/roadmaps/computer-science/content/dependency-injection@J7DKRklMtJ94Y-18Jo50r.md index 32f39a595..4316921b4 100644 --- a/roadmaps/computer-science/content/dependency-injection@J7DKRklMtJ94Y-18Jo50r.md +++ b/roadmaps/computer-science/content/dependency-injection@J7DKRklMtJ94Y-18Jo50r.md @@ -5,5 +5,4 @@ Dependency injection is a software design pattern that allows us to decouple the Visit the following resources to learn more: - [@article@Dependency Injection - StackOverflow](https://stackoverflow.com/questions/130794/what-is-dependency-injection) -- [@video@What is Dependency Injection?](https://www.youtube.com/watch?v=0yc2UANSDiw) -- [@feed@Explore top posts about Dependency Injection](https://app.daily.dev/tags/dependency-injection?ref=roadmapsh) \ No newline at end of file +- [@video@What is Dependency Injection?](https://www.youtube.com/watch?v=0yc2UANSDiw) \ No newline at end of file diff --git a/roadmaps/computer-science/content/design-patterns@-De1hU2ONGwhQmUpsyrCO.md b/roadmaps/computer-science/content/design-patterns@-De1hU2ONGwhQmUpsyrCO.md index 9b658e61e..ccf7d8091 100644 --- a/roadmaps/computer-science/content/design-patterns@-De1hU2ONGwhQmUpsyrCO.md +++ b/roadmaps/computer-science/content/design-patterns@-De1hU2ONGwhQmUpsyrCO.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@opensource@Design Patterns for Humans](https://github.com/nilbuild/design-patterns-for-humans) - [@article@Design Patterns](https://en.wikipedia.org/wiki/Software_design_pattern) -- [@article@Refactoring Guru - Design Patterns](https://refactoring.guru/design-patterns/) -- [@feed@Explore top posts about Design Patterns](https://app.daily.dev/tags/design-patterns?ref=roadmapsh) \ No newline at end of file +- [@article@Refactoring Guru - Design Patterns](https://refactoring.guru/design-patterns/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/dijkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md b/roadmaps/computer-science/content/dijkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md index 6de867945..c5170d19a 100644 --- a/roadmaps/computer-science/content/dijkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md +++ b/roadmaps/computer-science/content/dijkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@video@Dijkstras Algorithm in 3 Minutes](https://www.youtube.com/watch?v=_lHSawdgXpI) - [@video@Dijkstras Algorithm - MIT](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) -- [@video@Speeding Up Dijkstras Algorithm - MIT](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@video@Speeding Up Dijkstras Algorithm - MIT](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) \ No newline at end of file diff --git a/roadmaps/computer-science/content/dijkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md b/roadmaps/computer-science/content/dijkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md index d73508ec4..b43c81eab 100644 --- a/roadmaps/computer-science/content/dijkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md +++ b/roadmaps/computer-science/content/dijkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md @@ -1,9 +1,8 @@ # Dijkstra's Algorithm -Dijkstra's algorithm is a graph traversal algorithm that finds the shortest path between two nodes in a graph. It is a weighted graph algorithm, meaning that each edge in the graph has a weight associated with it. The algorithm works by finding the shortest path from the starting node to all other nodes in the graph. It does this by keeping track of the distance from the starting node to each node, and then choosing the node with the shortest distance from the starting node to visit next. It then updates the distance of each node from the starting node, and repeats the process until all nodes have been visited. +Dijkstra's algorithm finds the shortest path from a source vertex to all other vertices in a weighted graph with non-negative edge weights. It repeatedly picks the closest unvisited vertex and updates the shortest known distances to its neighbors, using a priority queue to make this selection efficient. It does not work correctly if the graph contains negative edge weights. Visit the following resources to learn more: - [@video@Dijkstras Algorithm - MIT](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) -- [@video@Dijkstras Algorithm in 3 Minutes](https://www.youtube.com/watch?v=_lHSawdgXpI) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@video@Dijkstras Algorithm in 3 Minutes](https://www.youtube.com/watch?v=_lHSawdgXpI) \ No newline at end of file diff --git a/roadmaps/computer-science/content/dns@fYjoXB4rnkM5gg46sqVz5.md b/roadmaps/computer-science/content/dns@fYjoXB4rnkM5gg46sqVz5.md index 6df3dd1e6..f6d5b3c82 100644 --- a/roadmaps/computer-science/content/dns@fYjoXB4rnkM5gg46sqVz5.md +++ b/roadmaps/computer-science/content/dns@fYjoXB4rnkM5gg46sqVz5.md @@ -7,6 +7,4 @@ Visit the following resources to learn more: - [@article@What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/) - [@article@How DNS works (comic)](https://howdns.works/) - [@video@DNS and How does it Work?](https://www.youtube.com/watch?v=Wj0od2ag5sk) -- [@video@DNS Records](https://www.youtube.com/watch?v=7lxgpKh_fRY) -- [@video@Complete DNS mini-series](https://www.youtube.com/watch?v=zEmUuNFBgN8&list=PLTk5ZYSbd9MhMmOiPhfRJNW7bhxHo4q-K) -- [@feed@Explore top posts about DNS](https://app.daily.dev/tags/dns?ref=roadmapsh) \ No newline at end of file +- [@video@DNS Records](https://www.youtube.com/watch?v=7lxgpKh_fRY) \ No newline at end of file diff --git a/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md b/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md index baac2997d..32b75c225 100644 --- a/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md +++ b/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md @@ -1,6 +1,6 @@ # DQL (Data Query Language) -DQL statements are used for performing queries on the data within schema objects. The purpose of the DQL Command is to get some schema relation based on the query passed to it. We can define DQL as follows it is a component of SQL statement that allows getting data from the database and imposing order upon it. It includes the SELECT statement. This command allows getting the data out of the database to perform operations with it. When a SELECT is fired against a table or tables the result is compiled into a further temporary table, which is displayed or perhaps received by the program i.e. a front-end. +DQL (Data Query Language) is the subset of SQL used to retrieve data from a database, primarily through the SELECT statement. It is used to read and filter existing data without modifying it. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/exponential@5mMLr6tWbiSZuox1lx0_B.md b/roadmaps/computer-science/content/exponential@5mMLr6tWbiSZuox1lx0_B.md index 1f3d4c1e3..f01eff215 100644 --- a/roadmaps/computer-science/content/exponential@5mMLr6tWbiSZuox1lx0_B.md +++ b/roadmaps/computer-science/content/exponential@5mMLr6tWbiSZuox1lx0_B.md @@ -1,14 +1,6 @@ # Exponential - -Exponential algorithms are those that grow at a rate of 2^n. This means that for each additional input, the algorithm will take twice as long to run. The following function is an example of an exponential algorithm: - - def exponential(n): - if n == 0: - return 1 - return exponential(n - 1) + exponential(n - 1) - - -As you can see, the algorithm's runtime grows exponentially. For each additional input, the algorithm will take twice as long to run. + +Exponential time, written O(2^n), means the work doubles with each additional unit of input size. Algorithms with exponential time complexity become impractical quickly as input grows, and they often show up in brute-force solutions to problems without known efficient algorithms. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/factorial@m0umGQNdvg95UiNpQZsQN.md b/roadmaps/computer-science/content/factorial@m0umGQNdvg95UiNpQZsQN.md index 0854e4b50..9e4a9bdb2 100644 --- a/roadmaps/computer-science/content/factorial@m0umGQNdvg95UiNpQZsQN.md +++ b/roadmaps/computer-science/content/factorial@m0umGQNdvg95UiNpQZsQN.md @@ -1,27 +1,6 @@ # Factorial -Factorial complexity algorithms have a runtime of `O(n!)`. This is the worst case scenario for an algorithm. Factorial complexity algorithms are very inefficient and should be avoided. - - def generate_permutations(s): - # Base case: If the string length is 1, return a list containing the string - if len(s) == 1: - return [s] - - # Initialize the result list - permutations = [] - - # Recursively generate all permutations - for i in range(len(s)): - # Current character - current_char = s[i] - # Remaining characters - remaining_chars = s[:i] + s[i + 1 :] - # Generate all permutations of the remaining characters - for perm in generate_permutations(remaining_chars): - # Add the current character to the front of each generated permutation - permutations.append(current_char + perm) - - return permutations +Factorial time, written O(n!), means the work grows by the factorial of the input size, making it impractical for anything but very small inputs. Algorithms that generate every possible permutation of a set, like a brute-force solution to the traveling salesman problem, run in factorial time. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md b/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md index 05156375b..167cbd0cf 100644 --- a/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md +++ b/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md @@ -5,5 +5,4 @@ Ford Fulkerson Algorithm is a greedy algorithm that is used to find the maximum Visit the following resources to learn more: - [@article@Ford-Fulkerson Algorithm](https://www.programiz.com/dsa/ford-fulkerson-algorithm) -- [@video@Ford-Fulkerson in 5 minutes](https://www.youtube.com/watch?v=Tl90tNtKvxs) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@video@Ford-Fulkerson in 5 minutes](https://www.youtube.com/watch?v=Tl90tNtKvxs) \ No newline at end of file diff --git a/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md b/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md index 5c2873981..babcd46e6 100644 --- a/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md +++ b/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md @@ -1,6 +1,6 @@ # Full Binary Tree -A full Binary tree is a special type of binary tree in which every parent node/internal node has either two or no children. It is also known as a proper binary tree. +A full binary tree is a binary tree where every node has either zero or two children, never just one. This property is used in some algorithm proofs and data structures, like certain heap implementations, where a strict shape simplifies reasoning about node counts and depth. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/go@mWW88VnkqWgDz02qw5zU-.md b/roadmaps/computer-science/content/go@mWW88VnkqWgDz02qw5zU-.md index 3d4142005..732fc7b76 100644 --- a/roadmaps/computer-science/content/go@mWW88VnkqWgDz02qw5zU-.md +++ b/roadmaps/computer-science/content/go@mWW88VnkqWgDz02qw5zU-.md @@ -1,13 +1,10 @@ # Go -Go is an open source programming language supported by Google. Go can be used to write cloud services, CLI tools, used for API development, and much more. +Go is a compiled, statically typed language created at Google to make concurrent, networked software simple to write and deploy. It has built-in support for concurrency through goroutines and channels, and it compiles to a single binary with no external runtime dependencies. Go is widely used for backend services, CLIs, and infrastructure tooling. Visit the following resources to learn more: - [@roadmap@Visit Dedicated Go Roadmap](https://roadmap.sh/golang) - [@official@A Tour of Go – Go Basics](https://go.dev/tour/welcome/1) -- [@official@Go Reference Documentation](https://go.dev/doc/) - [@article@Go by Example - annotated example programs](https://gobyexample.com/) -- [@article@Making a RESTful JSON API in Go](https://thenewstack.io/make-a-restful-json-api-go/) -- [@article@Go, the Programming Language of the Cloud](https://thenewstack.io/go-the-programming-language-of-the-cloud/) -- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh) \ No newline at end of file +- [@article@Making a RESTful JSON API in Go](https://thenewstack.io/make-a-restful-json-api-go/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/graph@vQm046o6ozcvLoqg9L6eL.md b/roadmaps/computer-science/content/graph@vQm046o6ozcvLoqg9L6eL.md index 017cb92da..27d73130a 100644 --- a/roadmaps/computer-science/content/graph@vQm046o6ozcvLoqg9L6eL.md +++ b/roadmaps/computer-science/content/graph@vQm046o6ozcvLoqg9L6eL.md @@ -6,10 +6,4 @@ Visit the following resources to learn more: - [@article@Graph Data Structure](https://www.simplilearn.com/tutorials/data-structure-tutorial/graphs-in-data-structure) - [@video@Graph Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=0sQE8zKhad0) -- [@video@CSE373 2020 - Lecture 10 - Graph Data Structures](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) -- [@video@CSE373 2020 - Lecture 11 - Graph Traversal](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) -- [@video@CSE373 2020 - Lecture 12 - Depth First Search](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) -- [@video@CSE373 2020 - Lecture 13 - Minimum Spanning Trees](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) -- [@video@CSE373 2020 - Lecture 14 - Minimum Spanning Trees (cont)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) -- [@video@CSE373 2020 - Lecture 15 - Graph Algorithms (cont 2)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) -- [@video@6.006 Single-Source Shortest Paths Problem](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) \ No newline at end of file +- [@video@CSE373 2020 - Lecture 10 - Graph Data Structures](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) \ No newline at end of file diff --git a/roadmaps/computer-science/content/graphql@DeE_dZecLmKCjePovTfFS.md b/roadmaps/computer-science/content/graphql@DeE_dZecLmKCjePovTfFS.md index c75b88b79..58375df2f 100644 --- a/roadmaps/computer-science/content/graphql@DeE_dZecLmKCjePovTfFS.md +++ b/roadmaps/computer-science/content/graphql@DeE_dZecLmKCjePovTfFS.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@roadmap@Visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql) - [@official@GraphQL](https://graphql.org/) - [@official@GraphQL Documentation](https://graphql.org/learn/) -- [@article@Apollo GraphQL Tutorials](https://www.apollographql.com/tutorials/) -- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh) \ No newline at end of file +- [@article@Apollo GraphQL Tutorials](https://www.apollographql.com/tutorials/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/grpc@M4vdwAbjLPrLjWUsG_P1I.md b/roadmaps/computer-science/content/grpc@M4vdwAbjLPrLjWUsG_P1I.md index 6ac415b96..a92cf909c 100644 --- a/roadmaps/computer-science/content/grpc@M4vdwAbjLPrLjWUsG_P1I.md +++ b/roadmaps/computer-science/content/grpc@M4vdwAbjLPrLjWUsG_P1I.md @@ -1,15 +1,10 @@ # gRPC -gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first. - -It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#. - -gRPC uses the protocol buffer language to define the structure of the data that is +gRPC is a remote procedure call framework that lets a client call methods on a server as if they were local function calls, using Protocol Buffers for efficient binary serialization. It runs over HTTP/2, which enables features like multiplexed streaming, and is commonly used for fast communication between internal microservices. Visit the following resources to learn more: - [@official@gRPC Website](https://grpc.io/) - [@official@gRPC Introduction](https://grpc.io/docs/what-is-grpc/introduction/) - [@official@gRPC Core Concepts](https://grpc.io/docs/what-is-grpc/core-concepts/) -- [@video@Stephane Maarek - gRPC Introduction](https://youtu.be/XRXTsQwyZSU) -- [@feed@Explore top posts about gRPC](https://app.daily.dev/tags/grpc?ref=roadmapsh) \ No newline at end of file +- [@video@Stephane Maarek - gRPC Introduction](https://youtu.be/XRXTsQwyZSU) \ No newline at end of file diff --git a/roadmaps/computer-science/content/hash-table@G2dN2FO0SN_I-5AhO_EUk.md b/roadmaps/computer-science/content/hash-table@G2dN2FO0SN_I-5AhO_EUk.md index 8d5cdbe28..af0854644 100644 --- a/roadmaps/computer-science/content/hash-table@G2dN2FO0SN_I-5AhO_EUk.md +++ b/roadmaps/computer-science/content/hash-table@G2dN2FO0SN_I-5AhO_EUk.md @@ -1,12 +1,10 @@ # Hash Table -Hash Table, Map, HashMap, Dictionary or Associative are all the names of the same data structure. It is one of the most commonly used data structures. +A hash table stores key-value pairs and uses a hash function to compute an index into an underlying array where each value is stored. This gives average-case O(1) time for lookups, insertions, and deletions. Collisions, where two keys hash to the same index, are handled with techniques like chaining or open addressing. Visit the following resources to learn more: - [@article@Hash Tables - Princeton University](https://algs4.cs.princeton.edu/34hash/) - [@video@Hash Table | Illustrated Data Structures](https://www.youtube.com/watch?v=jalSiaIi8j4) - [@video@Hash Table in 4 Minutes](https://youtu.be/knV86FlSXJ8) -- [@video@Hashing with Chaining](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) -- [@video@(Advanced) Randomization: Universal & Perfect Hashing](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) -- [@video@(Advanced) Perfect hashing](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) \ No newline at end of file +- [@video@Hashing with Chaining](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) \ No newline at end of file diff --git a/roadmaps/computer-science/content/hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md b/roadmaps/computer-science/content/hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md index 477393a82..708460b20 100644 --- a/roadmaps/computer-science/content/hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md +++ b/roadmaps/computer-science/content/hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md @@ -1,12 +1,7 @@ # Hashing/Encryption/Encoding -Hashing is a one-way function that takes an input and produces a fixed-length output. The output is called a hash. The hash is a unique representation of the input. The hash is deterministic, meaning that the same input will always produce the same hash. The hash is irreversible, meaning that it is impossible to go from the hash back to the original input. The hash is not collision-resistant, meaning that it is possible to find two different inputs that produce the same hash. - -Encryption is a two-way function that takes an input and produces an output. The output is called ciphertext. The ciphertext is a unique representation of the input. The ciphertext is deterministic, meaning that the same input will always produce the same ciphertext. The ciphertext is reversible, meaning that it is possible to go from the ciphertext back to the original input. The ciphertext is collision-resistant, meaning that it is impossible to find two different inputs that produce the same ciphertext. - -Encoding is a two-way function that takes an input and produces an output. The output is called encoded text. The encoded text is a unique representation of the input. The encoded text is deterministic, meaning that the same input will always produce the same encoded text. The encoded text is reversible, meaning that it is possible to go from the encoded text back to the original input. The encoded text is collision-resistant, meaning that it is impossible to find two different inputs that produce the same encoded text. +Hashing, encryption, and encoding are often confused but serve different purposes. Hashing produces a fixed-size, one-way output used to verify data integrity or store passwords securely, encryption transforms data reversibly so only someone with the right key can read it, and encoding transforms data into a different format for compatibility, with no security guarantee at all. Visit the following resources to learn more: -- [@video@Encoding, Encryption and Hashing -- What's the Difference?](https://www.youtube.com/watch?v=-bAnBzvMLig) -- [@feed@Explore top posts about Encryption](https://app.daily.dev/tags/encryption?ref=roadmapsh) \ No newline at end of file +- [@video@Encoding, Encryption and Hashing -- What's the Difference?](https://www.youtube.com/watch?v=-bAnBzvMLig) \ No newline at end of file diff --git a/roadmaps/computer-science/content/hashing-algorithms@EX_e4B6G07zTb4JjJ7482.md b/roadmaps/computer-science/content/hashing-algorithms@EX_e4B6G07zTb4JjJ7482.md index 2332f1914..77d85739b 100644 --- a/roadmaps/computer-science/content/hashing-algorithms@EX_e4B6G07zTb4JjJ7482.md +++ b/roadmaps/computer-science/content/hashing-algorithms@EX_e4B6G07zTb4JjJ7482.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@article@Hashing Algorithm Overview:](https://www.okta.com/identity-101/hashing-algorithms/) - [@video@Hashing Algorithms and Security - Computerphile](https://www.youtube.com/watch?v=b4b8ktEV4Bg) - [@video@Top Hashing Algorithms In Cryptography | MD5 and SHA 256 Algorithms Explained | Simplilearn](https://www.youtube.com/watch?v=Plp4F3ZfC7A) -- [@video@SHA: Secure Hashing Algorithm - Computerphile](https://www.youtube.com/watch?v=DMtFhACPnTY) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) \ No newline at end of file +- [@video@SHA: Secure Hashing Algorithm - Computerphile](https://www.youtube.com/watch?v=DMtFhACPnTY) \ No newline at end of file diff --git a/roadmaps/computer-science/content/heap@pw3ZCC3HKU7D5SQwte4vE.md b/roadmaps/computer-science/content/heap@pw3ZCC3HKU7D5SQwte4vE.md index c73fcd24b..5f4c5e4f0 100644 --- a/roadmaps/computer-science/content/heap@pw3ZCC3HKU7D5SQwte4vE.md +++ b/roadmaps/computer-science/content/heap@pw3ZCC3HKU7D5SQwte4vE.md @@ -1,11 +1,10 @@ # Heap -Heap is a tree-based data structure that follows the properties of a complete binary tree and is either a Min Heap or a Max Heap. +A heap is a tree-based structure that satisfies the heap property: in a max heap, every parent is greater than or equal to its children, and in a min heap, every parent is smaller than or equal to its children. This makes finding the maximum or minimum element an O(1) operation, while insertion and removal take O(log n). Heaps are commonly used to implement priority queues. Visit the following resources to learn more: - [@course@Priority Queue - Introduction](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - [@article@Heap Data Structure](https://www.programiz.com/dsa/heap-data-structure) - [@article@CS 61B Lecture 24: Priority Queues](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) -- [@video@Heap | Illustrated Data Structures](https://www.youtube.com/watch?v=F_r0sJ1RqWk) -- [@video@Heaps and Heap Sort](https://www.youtube.com/watch?v=B7hVxCmfPtM&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=5) \ No newline at end of file +- [@video@Heap | Illustrated Data Structures](https://www.youtube.com/watch?v=F_r0sJ1RqWk) \ No newline at end of file diff --git a/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md b/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md index f4031fca6..2435e9557 100644 --- a/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md +++ b/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md @@ -1,6 +1,6 @@ # How Computers Calculate? -Computers calculate using the binary system, where all data is represented as 0s and 1s. These binary states correspond to the ON/OFF positions of transistors, which are the building blocks of logic gates (AND, OR, NOT). Numbers, characters, and instructions are broken into binary sequences (bits), and grouped into bytes (8 bits). Arithmetic operations like addition are performed through logic gates, which combine binary values. The CPU executes these calculations by following a fetch-decode-execute cycle. Complex calculations, such as handling decimals, use floating-point representation. Programs written in high-level languages are compiled into machine code for the CPU to execute. +Computers perform calculations by representing numbers in binary and manipulating them using logic gates built from transistors, which implement operations like addition through circuits called adders. Complex operations, like multiplication or floating point math, are built up from combinations of these basic binary operations at the hardware level. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/how-computers-work@-emdKpD5uRNuvem5rbFXJ.md b/roadmaps/computer-science/content/how-computers-work@-emdKpD5uRNuvem5rbFXJ.md index fae5d5ce1..5deff8440 100644 --- a/roadmaps/computer-science/content/how-computers-work@-emdKpD5uRNuvem5rbFXJ.md +++ b/roadmaps/computer-science/content/how-computers-work@-emdKpD5uRNuvem5rbFXJ.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@video@How CPU Executes A Program](https://www.youtube.com/watch?v=XM4lGflQFvA) - [@video@How Computers Calculate - ALU](https://youtu.be/1I5ZMmrOfnA) - [@video@Registers and RAM](https://youtu.be/fpnE6UAfbtU) -- [@video@The Central Processing Unit (CPU)](https://youtu.be/FZGugFqdr60) -- [@video@Instructions and Programs](https://youtu.be/zltgXvg6r3k) \ No newline at end of file +- [@video@The Central Processing Unit (CPU)](https://youtu.be/FZGugFqdr60) \ No newline at end of file diff --git a/roadmaps/computer-science/content/how-cpu-executes-programs@1eglba39q426Nh0E0qcdj.md b/roadmaps/computer-science/content/how-cpu-executes-programs@1eglba39q426Nh0E0qcdj.md index a451ac695..872ec9764 100644 --- a/roadmaps/computer-science/content/how-cpu-executes-programs@1eglba39q426Nh0E0qcdj.md +++ b/roadmaps/computer-science/content/how-cpu-executes-programs@1eglba39q426Nh0E0qcdj.md @@ -4,5 +4,4 @@ The CPU executes programs by repeatedly fetching instructions from memory, decod Visit the following resources to learn more: -- [@video@How CPU Executes a Program](https://www.youtube.com/watch?v=XM4lGflQFvA) -- [@feed@Explore top posts about Computing](https://app.daily.dev/tags/computing?ref=roadmapsh) \ No newline at end of file +- [@video@How CPU Executes a Program](https://www.youtube.com/watch?v=XM4lGflQFvA) \ No newline at end of file diff --git a/roadmaps/computer-science/content/http@2tUwl-br-SRuwADSzmQag.md b/roadmaps/computer-science/content/http@2tUwl-br-SRuwADSzmQag.md index 3418fb613..6eb326fc4 100644 --- a/roadmaps/computer-science/content/http@2tUwl-br-SRuwADSzmQag.md +++ b/roadmaps/computer-science/content/http@2tUwl-br-SRuwADSzmQag.md @@ -7,6 +7,4 @@ Visit the following resources to learn more: - [@article@Everything you need to know about HTTP](https://cs.fyi/guide/http-in-depth) - [@article@What is HTTP?](https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/) - [@article@An overview of HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview) -- [@article@HTTP/3 From A To Z: Core Concepts](https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/) -- [@video@HTTP/1 to HTTP/2 to HTTP/3](https://www.youtube.com/watch?v=a-sBfyiXysI) - [@video@HTTP Crash Course & Exploration](https://www.youtube.com/watch?v=iYM2zFP3Zn0) \ No newline at end of file diff --git a/roadmaps/computer-science/content/java@1lQSUFrrIGq19nUnM92-I.md b/roadmaps/computer-science/content/java@1lQSUFrrIGq19nUnM92-I.md index e8d2bc169..abefefd92 100644 --- a/roadmaps/computer-science/content/java@1lQSUFrrIGq19nUnM92-I.md +++ b/roadmaps/computer-science/content/java@1lQSUFrrIGq19nUnM92-I.md @@ -1,10 +1,9 @@ # Java -Java is general-purpose language, primarily used for Internet-based applications. It was created in 1995 by James Gosling at Sun Microsystems and is one of the most popular options for backend developers. +Java is an object-oriented, statically typed language that compiles to bytecode and runs on the Java Virtual Machine (JVM), which lets the same compiled code run on any platform with a JVM installed. It manages memory automatically through garbage collection. Java is widely used in enterprise backend systems, Android development, and large-scale distributed applications. Visit the following resources to learn more: - [@roadmap@Visit Dedicated Java Roadmap](https://roadmap.sh/java) - [@official@Java](https://www.java.com/) -- [@video@Java Crash Course](https://www.youtube.com/watch?v=eIrMbAQSU34) -- [@feed@Explore top posts about Java](https://app.daily.dev/tags/java?ref=roadmapsh) \ No newline at end of file +- [@video@Java Crash Course](https://www.youtube.com/watch?v=eIrMbAQSU34) \ No newline at end of file diff --git a/roadmaps/computer-science/content/k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md b/roadmaps/computer-science/content/k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md index 6748d5813..39aff9054 100644 --- a/roadmaps/computer-science/content/k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md +++ b/roadmaps/computer-science/content/k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md @@ -1,10 +1,6 @@ # N-ary (K-ary, M-ary) Trees -Note: the N or K is the branching factor (max branches) - -Binary trees are a 2-ary tree, with branching factor = 2 - -2-3 trees are 3-ary +A k-ary (or m-ary) tree is a generalization of a binary tree where each node can have up to k children instead of just two. Increasing the branching factor reduces the tree's height for a given number of nodes, which is useful in structures like B-trees where minimizing height matters for disk access. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md b/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md index 2c6899246..191244701 100644 --- a/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md +++ b/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md @@ -1,11 +1,6 @@ # Knuth Morris Pratt -Knuth morris pratt is a string searching algorithm that uses a precomputed array to find the substring in a string. This array is known as the prefix function. The prefix function is the longest prefix that is also a suffix of a substring. The prefix function is used to skip the characters that are already matched. The algorithm is as follows: - -* Compute the prefix function of the substring. -* Traverse through the string and substring simultaneously. -* If the characters match, increment the index of both the string and substring. -* If the characters don't match, increment the index of the string by the value of the prefix function at the index of the substring. +The Knuth-Morris-Pratt (KMP) algorithm searches for a pattern in text by preprocessing the pattern into a table that tracks the longest proper prefix that is also a suffix. This lets the algorithm skip re-checking characters it has already matched when a mismatch occurs, giving it O(n + m) time complexity. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/kruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md b/roadmaps/computer-science/content/kruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md index 106e40495..60f92a8c7 100644 --- a/roadmaps/computer-science/content/kruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md +++ b/roadmaps/computer-science/content/kruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md @@ -5,5 +5,4 @@ Kruskal's algorithm is a greedy algorithm that finds a minimum spanning tree for Visit the following resources to learn more: - [@video@Kruskals Algorithm in 2 Minutes](https://www.youtube.com/watch?v=71UQH7Pr9kU) -- [@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=8) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@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=8) \ No newline at end of file diff --git a/roadmaps/computer-science/content/linked-list@gr8BK6vq4AVwp_aUozZmf.md b/roadmaps/computer-science/content/linked-list@gr8BK6vq4AVwp_aUozZmf.md index 0fb8e9bf6..88475c7c3 100644 --- a/roadmaps/computer-science/content/linked-list@gr8BK6vq4AVwp_aUozZmf.md +++ b/roadmaps/computer-science/content/linked-list@gr8BK6vq4AVwp_aUozZmf.md @@ -6,10 +6,5 @@ Visit the following resources to learn more: - [@course@Singly Linked Lists](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - [@course@Core: Linked Lists vs Arrays](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) -- [@course@In the Real World: Linked Lists vs Arrays](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) -- [@course@Doubly Linked Lists](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - [@video@Linked List Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=odW9FU8jPRQ) -- [@video@Linked Lists in 4 minutes](https://www.youtube.com/watch?v=F8AbOfQwl1c) -- [@video@CS 61B Lecture 7: Linked Lists I](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) -- [@video@CS 61B Lecture 7: Linked Lists II](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) -- [@video@Why you should avoid Linked Lists?](https://www.youtube.com/watch?v=YQs6IC-vgmo) \ No newline at end of file +- [@video@Linked Lists in 4 minutes](https://www.youtube.com/watch?v=F8AbOfQwl1c) \ No newline at end of file diff --git a/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md b/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md index e04867a02..982c0e4da 100644 --- a/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md +++ b/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md @@ -1,10 +1,6 @@ # Lock / Mutex / Semaphore -A lock allows only one thread to enter the part that's locked and the lock is not shared with any other processes. - -A mutex is the same as a lock but it can be system wide (shared by multiple processes). - -A semaphore does the same as a mutex but allows x number of threads to enter, this can be used for example to limit the number of cpu, io or ram intensive tasks running at the same time. +A lock or mutex ensures that only one thread can access a shared resource at a time, preventing race conditions when multiple threads read and write the same data. A semaphore is a more general version that allows a set number of threads to access a resource concurrently, using a counter instead of a simple locked or unlocked state. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md b/roadmaps/computer-science/content/logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md index 29140cdbe..ecd43cd65 100644 --- a/roadmaps/computer-science/content/logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md +++ b/roadmaps/computer-science/content/logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md @@ -1,6 +1,6 @@ # Logarithmic -Logarithmic complexity algorithms are the second fastest algorithms. They are faster than linear algorithms, but slower than constant algorithms. +Logarithmic time, written O(log n), means the work needed grows very slowly as input size increases, typically because the algorithm cuts the problem size in half (or by some fraction) at each step. Binary search is a classic example: doubling the input size only adds one more comparison. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md b/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md index 4803cde58..ab5c5973a 100644 --- a/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md +++ b/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md @@ -1,6 +1,6 @@ # Longest Path Problem -Longest path problem is a problem that asks us to find the longest path in a graph. +The Longest Path Problem asks for the longest simple path between two vertices in a graph, one that does not repeat any vertex. Unlike the shortest path problem, which has efficient algorithms, finding the longest path is NP-hard in general graphs, though it becomes solvable in polynomial time for special cases like directed acyclic graphs. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/networking@zG5t3HqbZnh9CGRqp1Sb-.md b/roadmaps/computer-science/content/networking@zG5t3HqbZnh9CGRqp1Sb-.md index c78249c32..e6dfdfbb7 100644 --- a/roadmaps/computer-science/content/networking@zG5t3HqbZnh9CGRqp1Sb-.md +++ b/roadmaps/computer-science/content/networking@zG5t3HqbZnh9CGRqp1Sb-.md @@ -6,7 +6,7 @@ If you have networking experience or want to be a reliability engineer or operat Visit the following resources to learn more: +- [@roadmap@Visit the Dedicated Network Engineer Roadmap](https://roadmap.sh/network-engineer) - [@article@Khan Academy - Networking](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - [@video@Computer Networking Course - Network Engineering](https://www.youtube.com/watch?v=qiQR5rTSshw) -- [@video@Networking Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) -- [@feed@Explore top posts about Networking](https://app.daily.dev/tags/networking?ref=roadmapsh) \ No newline at end of file +- [@video@Networking Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) \ No newline at end of file diff --git a/roadmaps/computer-science/content/non-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md b/roadmaps/computer-science/content/non-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md index 75125984b..44ccb9113 100644 --- a/roadmaps/computer-science/content/non-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md +++ b/roadmaps/computer-science/content/non-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md @@ -1,13 +1,10 @@ -# 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. +# Non-Tail Recursion + +Non-tail recursion is a form of recursion where work remains to be done after the recursive call returns, such as combining the result with something else. Each call must keep its stack frame until the recursive call underneath it finishes, which means the call stack grows with each level of recursion and cannot be optimized away like tail recursion. Visit the following resources to learn more: - [@article@What is non-tail recursion?](https://www.quora.com/What-is-non-tail-recursion) - [@article@Tail vs Non-Tail Recursion](https://www.baeldung.com/cs/tail-vs-non-tail-recursion) - [@video@Recursion (Solved Problem 1)](https://www.youtube.com/watch?v=IVLUGb_gDDE) -- [@video@Types of Recursion (Part 2) | Tail & Non-tail Recursion](https://www.youtube.com/watch?v=HIt_GPuD7wk) -- [@feed@Explore top posts about Recursion](https://app.daily.dev/tags/recursion?ref=roadmapsh) \ No newline at end of file +- [@video@Types of Recursion (Part 2) | Tail & Non-tail Recursion](https://www.youtube.com/watch?v=HIt_GPuD7wk) \ No newline at end of file diff --git a/roadmaps/computer-science/content/normalization--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md b/roadmaps/computer-science/content/normalization--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md index cfc546442..eb9743537 100644 --- a/roadmaps/computer-science/content/normalization--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md +++ b/roadmaps/computer-science/content/normalization--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md @@ -1,8 +1,6 @@ # Normalization vs Denormalization -Database normalization is a process used to organize a database into tables and columns. The idea is that a table should be about a specific topic and that only those columns which support that topic are included. This limits the number of duplicate data contained within your database. This makes the database more flexible by eliminating issues stemming from database modifications. - -Denormalization is the opposite of normalization. It is the process of adding redundant data to a database to improve read performance. This is done by adding duplicate data into multiple tables to avoid expensive joins. This is done at the expense of increased storage and decreased write performance. +Normalization organizes a database schema to reduce data redundancy by splitting data into related tables, following a set of normal forms. Denormalization does the opposite, intentionally duplicating data across tables to reduce the number of joins needed for common queries, trading storage and update complexity for faster reads. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md b/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md index ad673dc4e..a521c6940 100644 --- a/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md +++ b/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md @@ -7,7 +7,4 @@ Visit the following resources to learn more: - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@P vs. NP and the Computational Complexity Zoo](https://www.youtube.com/watch?v=YX40hbAHx3s) -- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) -- [@video@NP Completeness II & Reductions](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@NP Completeness III](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@NP Completeness IV](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) \ No newline at end of file +- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) \ No newline at end of file diff --git a/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md b/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md index e9ea4b280..805d64249 100644 --- a/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md +++ b/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md @@ -7,9 +7,4 @@ Visit the following resources to learn more: - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) -- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [@video@Lecture 23: Computational Complexity](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=24) -- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) -- [@video@NP Completeness II & Reductions](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@NP Completeness III](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@NP Completeness IV](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) \ No newline at end of file +- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file diff --git a/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md b/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md index 4678c1d57..dc1a50c3b 100644 --- a/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md +++ b/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md @@ -7,9 +7,4 @@ Visit the following resources to learn more: - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) -- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [@video@Lecture 23: Computational Complexity](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=24) -- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) -- [@video@NP Completeness II & Reductions](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@NP Completeness III](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@NP Completeness IV](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) \ No newline at end of file +- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file diff --git a/roadmaps/computer-science/content/owasp-top-10@3rPSp135TdSCyvXzEzn4p.md b/roadmaps/computer-science/content/owasp-top-10@3rPSp135TdSCyvXzEzn4p.md index 4e44a1541..4f040f839 100644 --- a/roadmaps/computer-science/content/owasp-top-10@3rPSp135TdSCyvXzEzn4p.md +++ b/roadmaps/computer-science/content/owasp-top-10@3rPSp135TdSCyvXzEzn4p.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@official@OWASP](https://owasp.org/) - [@opensource@OWASP Web Application Security Testing Checklist](https://github.com/0xRadi/OWASP-Web-Checklist) - [@article@OWASP - Wiki](https://en.wikipedia.org/wiki/OWASP) -- [@article@OWASP Top 10 Security Risks](https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/) -- [@article@OWASP Cheatsheets](https://cheatsheetseries.owasp.org/cheatsheets/AJAX_Security_Cheat_Sheet.html) \ No newline at end of file +- [@article@OWASP Top 10 Security Risks](https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/p--np@0btHNkzWL1w_-pUgU_k2y.md b/roadmaps/computer-science/content/p--np@0btHNkzWL1w_-pUgU_k2y.md index b60eda4e3..a7ffd5155 100644 --- a/roadmaps/computer-science/content/p--np@0btHNkzWL1w_-pUgU_k2y.md +++ b/roadmaps/computer-science/content/p--np@0btHNkzWL1w_-pUgU_k2y.md @@ -1,12 +1,6 @@ # P = NP -The P = NP problem is one of the most famous problems in computer science. It asks whether a problem that can be solved in polynomial time on a non-deterministic machine (i.e., the problem is in NP) can also be solved in polynomial time on a deterministic machine (i.e., the problem is in P). - -If you can find a polynomial-time solution to an NP-complete problem, then all problems in NP can be solved in polynomial time. This shows that P = NP. - -If you can prove for any single NP-complete problem that it is only solvable in exponential time, then all NP-complete problems are only solvable in exponential time. This shows that P ≠ NP. - -So far, we don't know whether P = NP or P ≠ NP. +P = NP is one of the most famous open problems in computer science, asking whether every problem whose solution can be verified quickly can also be solved quickly. Most researchers believe P does not equal NP, but no one has proven it either way, and a proof in either direction would have major implications for cryptography and optimization. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md b/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md index 052cdc746..4ecf36977 100644 --- a/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md +++ b/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md @@ -1,12 +1,10 @@ # P -The P in the P class stands for Polynomial Time. It is the collection of decision problems(problems with a “yes” or “no” answer) that can be solved by a deterministic machine in polynomial time. +P is the complexity class of decision problems that can be solved by a deterministic algorithm in polynomial time. Problems in P are generally considered efficiently solvable, forming the baseline against which harder complexity classes are compared. Visit the following resources to learn more: - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) -- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [@video@Lecture 23: Computational Complexity](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=24) -- [@video@Greedy Algs. II & Intro to NP Completeness](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) \ No newline at end of file +- [@video@Complexity: Fixed-Parameter Algorithms](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file diff --git a/roadmaps/computer-science/content/pick-a-language@tU4Umtnfu01t9gLlnlK6b.md b/roadmaps/computer-science/content/pick-a-language@tU4Umtnfu01t9gLlnlK6b.md index 4c6f3cdc8..3d416e9ae 100644 --- a/roadmaps/computer-science/content/pick-a-language@tU4Umtnfu01t9gLlnlK6b.md +++ b/roadmaps/computer-science/content/pick-a-language@tU4Umtnfu01t9gLlnlK6b.md @@ -1,18 +1,10 @@ # Pick a Language -You need to pick a programming language to learn the Computer Science concepts. My personal recommendation would be to pick C++ or C and the reason for that is: - -* They allow you to deal with pointers and memory allocation/deallocation, so you feel the data structures and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. -* You will be able to find a lot of resources for the topics listed in this roadmap using C or C++. You can find a lot of resources for Python and Java, but they are not as abundant as C++ and C. - -Given below is the list of resources; pick ones relevant to the language of your choice. +You need to pick a programming language to learn computer science concepts. My personal recommendation would be to pick C++ or C. They allow you to deal with pointers and memory allocation/deallocation, so you feel the data structures and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. Also, you will be able to find a lot of resources for the topics listed in this roadmap using C or C++. Visit the following resources to learn more: - [@roadmap@Visit Dedicated C++ Roadmap](https://roadmap.sh/cpp) -- [@article@Learn C++ - Tutorials Point](https://www.tutorialspoint.com/cplusplus/index.htm) -- [@article@Learn C - Tutorials Point](https://www.tutorialspoint.com/cprogramming/index.htm) +- [@roadmap@Visit Dedicated C Roadmap](https://roadmap.sh/c) - [@video@C++ Programming Course - Beginner to Advanced](https://www.youtube.com/watch?v=8jLOx1hD3_o) -- [@video@C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y) -- [@video@C Programming Tutorial for Beginners](https://www.youtube.com/watch?v=KJgsSFOSQv0) -- [@video@Learn C Programming with Dr. Chuck](https://www.youtube.com/watch?v=j-_s8f5K30I) \ No newline at end of file +- [@video@C Programming Tutorial for Beginners](https://www.youtube.com/watch?v=KJgsSFOSQv0) \ No newline at end of file diff --git a/roadmaps/computer-science/content/polynomial@sVFvpsAO1_ZH9aliEj9aF.md b/roadmaps/computer-science/content/polynomial@sVFvpsAO1_ZH9aliEj9aF.md index 54381eb36..3e94efd03 100644 --- a/roadmaps/computer-science/content/polynomial@sVFvpsAO1_ZH9aliEj9aF.md +++ b/roadmaps/computer-science/content/polynomial@sVFvpsAO1_ZH9aliEj9aF.md @@ -1,11 +1,6 @@ # Polynomial -Polynomial algorithms are algorithms that have a runtime that is a polynomial function of the input size. This means that the runtime is a function of the form `n^k` where `k` is a constant. For example, the runtime of the following algorithm is `n^2`: - - def polynomial_algorithm(n): - for i in range(n): - for j in range(n): - print(i, j) +Polynomial time means an algorithm's running time can be expressed as n raised to some fixed power, such as O(n²) or O(n³). Problems solvable in polynomial time are generally considered tractable in complexity theory, forming the basis of the complexity class P. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md b/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md index 4ec2f70b2..cbdfb65ce 100644 --- a/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md +++ b/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md @@ -5,5 +5,4 @@ Prim's algorithm is a greedy algorithm that finds a minimum spanning tree for a Visit the following resources to learn more: - [@article@Prims Algorithm](https://www.programiz.com/dsa/prim-algorithm) -- [@video@Graph Algorithms I - Topological Sorting, Prims Algorithm - Lecture 6](https://www.youtube.com/watch?v=i_AQT_XfvD8&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@video@Graph Algorithms I - Topological Sorting, Prims Algorithm - Lecture 6](https://www.youtube.com/watch?v=i_AQT_XfvD8&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) \ No newline at end of file diff --git a/roadmaps/computer-science/content/probability@HZ3_xyphbjhBPwwQo_rHH.md b/roadmaps/computer-science/content/probability@HZ3_xyphbjhBPwwQo_rHH.md index 1e1bd20fe..8a601647e 100644 --- a/roadmaps/computer-science/content/probability@HZ3_xyphbjhBPwwQo_rHH.md +++ b/roadmaps/computer-science/content/probability@HZ3_xyphbjhBPwwQo_rHH.md @@ -1,6 +1,6 @@ # Probability -Probability is the study of how likely an event is to occur. It is a measure of how certain we are that an event will happen. +Probability measures how likely an event is to occur, expressed as a number between 0 and 1. In computer science, it comes up in randomized algorithms, hashing collision analysis, and average-case complexity analysis, where the expected behavior of an algorithm depends on the distribution of its inputs. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/public-key-cryptography@bDZ34BPm3lX06ERSE10cY.md b/roadmaps/computer-science/content/public-key-cryptography@bDZ34BPm3lX06ERSE10cY.md index 5cc3b89b6..8603da864 100644 --- a/roadmaps/computer-science/content/public-key-cryptography@bDZ34BPm3lX06ERSE10cY.md +++ b/roadmaps/computer-science/content/public-key-cryptography@bDZ34BPm3lX06ERSE10cY.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@Public-key Cryptography](https://en.wikipedia.org/wiki/Public-key_cryptography) - [@video@Public Key Cryptography - Computerphile](https://www.youtube.com/watch?v=GSIDS_lvRv4) -- [@video@Public Key Cryptography: RSA Encryption Algorithm](https://www.youtube.com/watch?v=wXB-V_Keiu8) -- [@feed@Explore top posts about Cryptography](https://app.daily.dev/tags/cryptography?ref=roadmapsh) \ No newline at end of file +- [@video@Public Key Cryptography: RSA Encryption Algorithm](https://www.youtube.com/watch?v=wXB-V_Keiu8) \ No newline at end of file diff --git a/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md b/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md index 3bf2dde62..8c2202228 100644 --- a/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md +++ b/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md @@ -5,11 +5,6 @@ Python is a well known programming language which is both a strongly typed and a Visit the following resources to learn more: - [@roadmap@Visit Dedicated Python Roadmap](https://roadmap.sh/python) -- [@official@Python](https://www.python.org/) - [@official@Getting Started with Python](https://www.python.org/about/gettingstarted/) -- [@article@Automate the Boring Stuff](https://automatetheboringstuff.com/) -- [@article@Python principles - Python basics](https://pythonprinciples.com/) - [@article@Python Crash Course](https://ehmatthes.github.io/pcc/) -- [@article@An Introduction to Python for Non-Programmers](https://thenewstack.io/an-introduction-to-python-for-non-programmers/) -- [@article@Getting Started with Python and InfluxDB](https://thenewstack.io/getting-started-with-python-and-influxdb/) -- [@feed@Explore top posts about Python](https://app.daily.dev/tags/python?ref=roadmapsh) \ No newline at end of file +- [@article@Getting Started with Python and InfluxDB](https://thenewstack.io/getting-started-with-python-and-influxdb/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/queue@JI990pDX2jjNe6IH_Y_t0.md b/roadmaps/computer-science/content/queue@JI990pDX2jjNe6IH_Y_t0.md index fa0fcddfe..abf4f9c17 100644 --- a/roadmaps/computer-science/content/queue@JI990pDX2jjNe6IH_Y_t0.md +++ b/roadmaps/computer-science/content/queue@JI990pDX2jjNe6IH_Y_t0.md @@ -1,6 +1,6 @@ # Queue -Queue is a linear collection of items where items are inserted and removed in a particular order. The queue is also called a FIFO Data Structure because it follows the "First In, First Out" principle i.e., the item that is inserted in the first is the one that is taken out first. +A queue is a data structure that processes elements in the order they arrived, following a first-in, first-out (FIFO) rule. New elements are added at the back and removed from the front. Queues are used for task scheduling, handling requests in order, and breadth-first traversal of trees and graphs. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/rabin-karp-algorithm@l5--4opvZoc_seVn__5R3.md b/roadmaps/computer-science/content/rabin-karp-algorithm@l5--4opvZoc_seVn__5R3.md index e013fbf0f..b5ed54f4e 100644 --- a/roadmaps/computer-science/content/rabin-karp-algorithm@l5--4opvZoc_seVn__5R3.md +++ b/roadmaps/computer-science/content/rabin-karp-algorithm@l5--4opvZoc_seVn__5R3.md @@ -7,6 +7,4 @@ Visit the following resources to learn more: - [@course@Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - [@course@Optimization: Precomputation](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [@course@Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) -- [@video@Lecture 9: Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) -- [@video@Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=33) -- [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) \ No newline at end of file +- [@video@Lecture 9: Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) \ No newline at end of file diff --git a/roadmaps/computer-science/content/red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md b/roadmaps/computer-science/content/red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md index aeb46d606..87d82d68b 100644 --- a/roadmaps/computer-science/content/red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md +++ b/roadmaps/computer-science/content/red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md @@ -1,15 +1,10 @@ -# Red/Black Trees - -In computer science, a red–black tree is a kind of self-balancing binary search tree. Each node stores an extra bit representing "color", used to ensure that the tree remains balanced during insertions and deletions. - -These are a translation of a 2-3 tree (see below). - -In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, but it makes them valuable building blocks in other data structures which provide worst-case guarantees; for example, many data structures used in computational geometry can be based on red–black trees, and the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used. +# Red / Black Trees + +A red-black tree is a self-balancing binary search tree where each node is colored red or black, and a set of coloring rules ensures the tree never becomes more than roughly twice as tall as the shortest possible balanced tree. It requires fewer rotations on average than an AVL tree, which makes it a common choice for implementing ordered maps and sets in standard libraries. Visit the following resources to learn more: - [@article@Red-Black Tree - Wikipedia](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [@article@An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - [@video@Red-Black Trees (playlist) in 30 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) -- [@video@Aduni - Algorithms - Lecture 4 (link jumps to starting point)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) -- [@video@Aduni - Algorithms - Lecture 5](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) \ No newline at end of file +- [@video@Aduni - Algorithms - Lecture 4 (link jumps to starting point)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) \ No newline at end of file diff --git a/roadmaps/computer-science/content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md b/roadmaps/computer-science/content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md index f9cf9e688..802bd41b0 100644 --- a/roadmaps/computer-science/content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md +++ b/roadmaps/computer-science/content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@What is a REST API?](https://www.redhat.com/en/topics/api/what-is-a-rest-api) - [@article@Roy Fieldings dissertation chapter, Representational State Transfer (REST)](https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm) -- [@article@Learn REST: A RESTful Tutorial](https://restapitutorial.com/) -- [@feed@Explore top posts about REST API](https://app.daily.dev/tags/rest-api?ref=roadmapsh) \ No newline at end of file +- [@article@Learn REST: A RESTful Tutorial](https://restapitutorial.com/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/robin-karp@Km5LvcJpyntrW2iA8h5e3.md b/roadmaps/computer-science/content/robin-karp@Km5LvcJpyntrW2iA8h5e3.md index 6c042a062..b5ed54f4e 100644 --- a/roadmaps/computer-science/content/robin-karp@Km5LvcJpyntrW2iA8h5e3.md +++ b/roadmaps/computer-science/content/robin-karp@Km5LvcJpyntrW2iA8h5e3.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@course@Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - [@course@Optimization: Precomputation](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [@course@Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) -- [@video@Lecture 9: Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) -- [@video@Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=33) \ No newline at end of file +- [@video@Lecture 9: Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) \ No newline at end of file diff --git a/roadmaps/computer-science/content/rust@1bDjg-KBDKRmE6f1MWY8l.md b/roadmaps/computer-science/content/rust@1bDjg-KBDKRmE6f1MWY8l.md index 4ce3917c2..ed3f35737 100644 --- a/roadmaps/computer-science/content/rust@1bDjg-KBDKRmE6f1MWY8l.md +++ b/roadmaps/computer-science/content/rust@1bDjg-KBDKRmE6f1MWY8l.md @@ -1,12 +1,10 @@ # Rust -Rust is a modern systems programming language focusing on safety, speed, and concurrency. It accomplishes these goals by being memory safe without using garbage collection. +Java is an object-oriented, statically typed language that compiles to bytecode and runs on the Java Virtual Machine (JVM), which lets the same compiled code run on any platform with a JVM installed. It manages memory automatically through garbage collection. Java is widely used in enterprise backend systems, Android development, and large-scale distributed applications. Visit the following resources to learn more: - [@roadmap@Visit Dedicated Rust Roadmap](https://roadmap.sh/rust) - [@official@The Rust Programming Language - online book](https://doc.rust-lang.org/book/) - [@official@Rust by Example - collection of runnable examples](https://doc.rust-lang.org/stable/rust-by-example/index.html) -- [@article@Rust vs. Go: Why They’re Better Together](https://thenewstack.io/rust-vs-go-why-theyre-better-together/) -- [@article@Rust by the Numbers: The Rust Programming Language in 2021](https://thenewstack.io/rust-by-the-numbers-the-rust-programming-language-in-2021/) -- [@feed@Explore top posts about Rust](https://app.daily.dev/tags/rust?ref=roadmapsh) \ No newline at end of file +- [@article@Rust vs. Go: Why They’re Better Together](https://thenewstack.io/rust-vs-go-why-theyre-better-together/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/scheduling-algorithms@Ge2nagN86ofa2y-yYR1lv.md b/roadmaps/computer-science/content/scheduling-algorithms@Ge2nagN86ofa2y-yYR1lv.md index 8385dec15..9bba7f075 100644 --- a/roadmaps/computer-science/content/scheduling-algorithms@Ge2nagN86ofa2y-yYR1lv.md +++ b/roadmaps/computer-science/content/scheduling-algorithms@Ge2nagN86ofa2y-yYR1lv.md @@ -1,18 +1,6 @@ # Scheduling Algorithms -CPU Scheduling is the process of selecting a process from the ready queue and allocating the CPU to it. The selection of a process is based on a particular scheduling algorithm. The scheduling algorithm is chosen depending on the type of system and the requirements of the processes. - -Here is the list of some of the most commonly used scheduling algorithms: - -* **First Come First Serve (FCFS):** The process that arrives first is allocated the CPU first. It is a non-preemptive algorithm. -* **Shortest Job First (SJF):** The process with the smallest execution time is allocated the CPU first. It is a non-preemptive algorithm. -* **Shortest Remaining Time First (SRTF):** The process with the smallest remaining execution time is allocated the CPU first. It is a preemptive algorithm. -* **Round Robin (RR):** The process is allocated the CPU for a fixed time slice. The time slice is usually 10 milliseconds. It is a preemptive algorithm. -* **Priority Scheduling:** The process with the highest priority is allocated the CPU first. It is a preemptive algorithm. -* **Multi-level Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. It is a preemptive algorithm. -* **Multi-level Feedback Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. If a process is preempted, it is moved to the next queue. It is a preemptive algorithm. -* **Highest Response Ratio Next(HRRN):** CPU is allotted to the next process which has the highest response ratio and not to the process having less burst time. It is a Non-Preemptive algorithm. -* **Lottery Scheduling:** The process is allocated the CPU based on a lottery system. It is a preemptive algorithm. +Scheduling algorithms determine the order in which an operating system runs competing processes or threads on the available CPU cores. Different algorithms, like round robin, shortest job first, or priority scheduling, balance goals such as fairness, responsiveness, and overall throughput differently. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/security@JnJbJtsqKbVETY2vdLqCO.md b/roadmaps/computer-science/content/security@JnJbJtsqKbVETY2vdLqCO.md index 006366416..1669ac6c1 100644 --- a/roadmaps/computer-science/content/security@JnJbJtsqKbVETY2vdLqCO.md +++ b/roadmaps/computer-science/content/security@JnJbJtsqKbVETY2vdLqCO.md @@ -7,8 +7,4 @@ Visit the following resources to learn more: - [@opensource@OWASP Web Application Security Testing Checklist](https://github.com/0xRadi/OWASP-Web-Checklist) - [@article@Why HTTPS Matters](https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https) - [@article@Wikipedia - OWASP](https://en.wikipedia.org/wiki/OWASP) -- [@article@OWASP Top 10 Security Risks](https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/) -- [@article@OWASP Cheatsheets](https://cheatsheetseries.owasp.org/cheatsheets/AJAX_Security_Cheat_Sheet.html) -- [@article@Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) -- [@video@MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [@feed@Explore top posts about Security](https://app.daily.dev/tags/security?ref=roadmapsh) \ No newline at end of file +- [@article@OWASP Top 10 Security Risks](https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/) \ No newline at end of file diff --git a/roadmaps/computer-science/content/sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md b/roadmaps/computer-science/content/sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md index aa7f29dae..acc033c77 100644 --- a/roadmaps/computer-science/content/sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md +++ b/roadmaps/computer-science/content/sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md @@ -1,6 +1,6 @@ # Sequence Diagrams -Sequence diagrams are a way to show how objects or systems interact with each other over time. +A sequence diagram shows how objects interact with each other over time by depicting the order in which messages are sent between them. It is commonly used to visualize the flow of a specific scenario, like a user login process, across multiple components. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/sharding@3K65efPag2076dy-MeTg4.md b/roadmaps/computer-science/content/sharding@3K65efPag2076dy-MeTg4.md index 4d45b2951..2862a91ad 100644 --- a/roadmaps/computer-science/content/sharding@3K65efPag2076dy-MeTg4.md +++ b/roadmaps/computer-science/content/sharding@3K65efPag2076dy-MeTg4.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@article@Sharding](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#sharding) - [@video@Sharding & Database Partitioning | System Design Basics](https://www.youtube.com/watch?v=RynPj8C0BXA) - [@video@Database Sharding - Watch](https://www.youtube.com/watch?v=hdxdhCpgYo8) -- [@video@Database Sharding in 5 minutes](https://www.youtube.com/watch?v=kSH4bt8ypOQ) -- [@feed@Explore top posts about Backend Development](https://app.daily.dev/tags/backend?ref=roadmapsh) \ No newline at end of file +- [@video@Database Sharding in 5 minutes](https://www.youtube.com/watch?v=kSH4bt8ypOQ) \ No newline at end of file diff --git a/roadmaps/computer-science/content/small-o@2cg5PogENPhiYFXQnV9xC.md b/roadmaps/computer-science/content/small-o@2cg5PogENPhiYFXQnV9xC.md index f5069d74f..903607105 100644 --- a/roadmaps/computer-science/content/small-o@2cg5PogENPhiYFXQnV9xC.md +++ b/roadmaps/computer-science/content/small-o@2cg5PogENPhiYFXQnV9xC.md @@ -1,6 +1,6 @@ # Small O Notation -Small o notation, denoted as o(g(n)), defines an upper bound on the growth of a function f(n) that is *not* asymptotically tight. In simpler terms, f(n) is o(g(n)) if, for any positive constant c, there exists a value n₀ such that f(n) is strictly less than c*g(n) for all n greater than n₀. This means that g(n) grows strictly faster than f(n) as n approaches infinity. +Small o notation describes an upper bound that is strictly greater than the actual growth rate, rather than a tight or achievable bound like Big O. It is used to express that one function grows strictly slower than another, useful in more formal algorithm analysis and proofs. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/small-omega@dUBRG_5aUYlICsjPbRlTf.md b/roadmaps/computer-science/content/small-omega@dUBRG_5aUYlICsjPbRlTf.md index c96deb487..b8be40b30 100644 --- a/roadmaps/computer-science/content/small-omega@dUBRG_5aUYlICsjPbRlTf.md +++ b/roadmaps/computer-science/content/small-omega@dUBRG_5aUYlICsjPbRlTf.md @@ -1,6 +1,6 @@ # Small Omega -Small Omega (ω) notation is used to describe a lower bound on the growth rate of a function. Specifically, it indicates that a function *g(n)* grows strictly slower than another function *f(n)* as *n* approaches infinity. This means that for any constant *c > 0*, there exists a value *n₀* such that *g(n) < c*f(n)* for all *n > n₀*. In simpler terms, *f(n)* is a strict lower bound for *g(n)*. +Small omega notation describes a lower bound that is strictly less than the actual growth rate, the counterpart to small o. It states that an algorithm's growth rate is strictly greater than a given function, used mainly in theoretical analysis rather than everyday complexity comparisons. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/sql-vs-nosql-databases@nprZscHdC_RdRIcGeGyVk.md b/roadmaps/computer-science/content/sql-vs-nosql-databases@nprZscHdC_RdRIcGeGyVk.md index 62ddb33ad..77cda36f0 100644 --- a/roadmaps/computer-science/content/sql-vs-nosql-databases@nprZscHdC_RdRIcGeGyVk.md +++ b/roadmaps/computer-science/content/sql-vs-nosql-databases@nprZscHdC_RdRIcGeGyVk.md @@ -1,12 +1,10 @@ # SQL vs NoSQL databases -SQL stands for Structured Query Language. It's used for relational databases. A SQL database is a collection of tables that stores a specific set of structured data. Some examples are PostgreSQL, MySQL, MariaDB etc. - -NoSQL stands for Not Only SQL. It's used for non-relational databases. A NoSQL database is a collection of collections that stores a specific set of unstructured data. Some examples are MongoDB, CouchDB, Redis etc. +SQL databases store data in structured tables with fixed schemas and use SQL to query relationships between them, prioritizing consistency and complex querying. NoSQL databases store data in more flexible formats, like documents, key-value pairs, or graphs, and generally prioritize horizontal scalability and flexible schemas over strict consistency guarantees. Visit the following resources to learn more: - [@video@SQL vs. NoSQL: What's the difference?](https://www.youtube.com/watch?v=Q5aTUc7c4jg) +- [@feed@Types of NoSQL Databases: How to Choose the Right One](https://roadmap.sh/backend/types-of-nosql-databases) - [@video@Database Design Tips | Choosing the Best Database in a System Design Interview](https://www.youtube.com/watch?v=cODCpXtPHbQ&t=22s) -- [@video@NoSQL vs SQL – Which Type of Database Should You Use?](https://www.youtube.com/watch?v=FzlpwoeSrE0) -- [@feed@Explore top posts about NoSQL](https://app.daily.dev/tags/nosql?ref=roadmapsh) \ No newline at end of file +- [@video@NoSQL vs SQL – Which Type of Database Should You Use?](https://www.youtube.com/watch?v=FzlpwoeSrE0) \ No newline at end of file diff --git a/roadmaps/computer-science/content/sse@JckRqZA8C6IqQLPpTCgf4.md b/roadmaps/computer-science/content/sse@JckRqZA8C6IqQLPpTCgf4.md index c4d2616b7..750ac8d74 100644 --- a/roadmaps/computer-science/content/sse@JckRqZA8C6IqQLPpTCgf4.md +++ b/roadmaps/computer-science/content/sse@JckRqZA8C6IqQLPpTCgf4.md @@ -5,5 +5,4 @@ Server-Sent Events is a server push technology enabling a client to receive auto Visit the following resources to learn more: - [@article@What is Server-Sent Events (SSE) and how to implement it?](https://medium.com/yemeksepeti-teknoloji/what-is-server-sent-events-sse-and-how-to-implement-it-904938bffd73) -- [@article@Using server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events) -- [@feed@Explore top posts about Cryptography](https://app.daily.dev/tags/cryptography?ref=roadmapsh) \ No newline at end of file +- [@article@Using server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events) \ No newline at end of file diff --git a/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md b/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md index 407f640a1..a9e8c5412 100644 --- a/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md +++ b/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@course@Suffix Arrays - Coursera](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [@article@Suffix Arrays - Princeton University](https://algs4.cs.princeton.edu/63suffix/) - [@video@Suffix Array Introduction](https://www.youtube.com/watch?v=zqKlL3ZpTqs) -- [@video@Advanced Data Structures: Suffix Arrays](https://www.youtube.com/watch?v=IzMxbboPcqQ) -- [@video@Suffix Arrays: building](https://www.youtube.com/watch?v=ZWlbhBjjwyA) \ No newline at end of file +- [@video@Advanced Data Structures: Suffix Arrays](https://www.youtube.com/watch?v=IzMxbboPcqQ) \ No newline at end of file diff --git a/roadmaps/computer-science/content/system-design@w-fvEiSJysywR3AOAB0ve.md b/roadmaps/computer-science/content/system-design@w-fvEiSJysywR3AOAB0ve.md index a2fc7f981..77f8c1015 100644 --- a/roadmaps/computer-science/content/system-design@w-fvEiSJysywR3AOAB0ve.md +++ b/roadmaps/computer-science/content/system-design@w-fvEiSJysywR3AOAB0ve.md @@ -4,9 +4,7 @@ System design is the process of defining the architecture, modules, interfaces, Visit the following resources to learn more: -- [@opensource@System Design Primer](https://github.com/donnemartin/system-design-primer) +- [@roadmap@Visit the Dedicated System Design Roadmap](https://roadmap.sh/system-design) - [@article@System Design: The Complete Course](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo) - [@video@System Design 101](https://www.youtube.com/watch?v=Y-Gl4HEyeUQ) -- [@video@Scaling the Unscalable](https://www.youtube.com/watch?v=a2rcgzludDU) -- [@video@System Design interview: Scale to 1 million users](https://www.youtube.com/watch?v=YkGHxOg9d3M) -- [@feed@Explore top posts about Career](https://app.daily.dev/tags/career?ref=roadmapsh) \ No newline at end of file +- [@video@Scaling the Unscalable](https://www.youtube.com/watch?v=a2rcgzludDU) \ No newline at end of file diff --git a/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md b/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md index 557ef1b57..63c07ae82 100644 --- a/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md +++ b/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md @@ -1,6 +1,6 @@ # Tree -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”). +A tree is a hierarchical data structure made of nodes connected by edges, with one node designated as the root and every other node reachable from it through exactly one path. Each node can have child nodes, and nodes with no children are called leaves. Trees are used to represent hierarchical relationships and support efficient searching, insertion, and deletion when balanced. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/tries@4qUVacMEz3XFiL_dMre6P.md b/roadmaps/computer-science/content/tries@4qUVacMEz3XFiL_dMre6P.md index 09a92a704..f9ac9eef3 100644 --- a/roadmaps/computer-science/content/tries@4qUVacMEz3XFiL_dMre6P.md +++ b/roadmaps/computer-science/content/tries@4qUVacMEz3XFiL_dMre6P.md @@ -7,9 +7,4 @@ Visit the following resources to learn more: - [@course@0. Tries - Coursera](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [@course@1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [@course@2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) -- [@course@3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) -- [@article@Tries - DataStructure Notes](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) -- [@article@The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) -- [@article@TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) -- [@video@Stanford Lecture (real world use case)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) -- [@video@MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) \ No newline at end of file +- [@course@3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) \ No newline at end of file diff --git a/roadmaps/computer-science/content/unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md b/roadmaps/computer-science/content/unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md index 32e52567c..f8e35d8f7 100644 --- a/roadmaps/computer-science/content/unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md +++ b/roadmaps/computer-science/content/unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md @@ -1,6 +1,6 @@ # Unbalanced Tree -An unbalanced binary tree is one that is not balanced. +An unbalanced tree has subtrees of very different heights, which can happen when data is inserted in a sorted or near-sorted order into a plain binary search tree. In the worst case, the tree degenerates into something resembling a linked list, and operations that should take O(log n) instead take O(n). Self-balancing tree variants exist specifically to prevent this. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md b/roadmaps/computer-science/content/usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md index 3e466b69e..45d629299 100644 --- a/roadmaps/computer-science/content/usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md +++ b/roadmaps/computer-science/content/usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md @@ -1,12 +1,6 @@ # Usecase Diagrams -Usecase diagrams are a type of diagram that are used to model the interactions between the **actors** and the **usecases** of the system. - -An actor is a person or a system that interacts with the system. Actors are represented by a rectangle with the name of the actor written inside it. - -A usecase is a task that the system performs. Usecases are represented by an ellipse with the name of the usecase written inside it. - -A usecase diagram is a diagram that shows the actors and the usecases of the system. The diagram is represented by a rectangle that contains the name of the system inside it. The actors are represented by rectangles and the usecases are represented by ellipses. +A use case diagram shows the interactions between actors, such as users or external systems, and the use cases, or goals, they can achieve within a system. It gives a high-level view of what a system does from the perspective of the people or systems that use it, without describing implementation details. Visit the following resources to learn more: diff --git a/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md b/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md index a8f0e3fa4..b24147df7 100644 --- a/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md +++ b/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md @@ -5,4 +5,5 @@ Web sockets are a bidirectional communication protocol between a client and a se Visit the following resources to learn more: - [@article@WebSockets](https://en.wikipedia.org/wiki/WebSocket) +- [@article@WebSocket vs HTTP: Which Protocol Should You Use?](https://roadmap.sh/network-engineer/websocket-vs-http) - [@article@Web Sockets API](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) \ No newline at end of file