diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 3c287533e6f..55c8ae133fc 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -1002,6 +1002,80 @@ } } }, + "introduction-to-algorithms-and-data-structures": { + "title": "Introduction to Algorithms and Data Structures", + "summary": [ + "Learn about common algorithms and data structures in this introductory course." + ], + "intro": [ + "Algorithms and Data Structures are the backbone of programming. So it's important to learn how to work with them.", + "In this comprehensive course, you will learn about common sorting and searching algorithms including merge sort, quicksort and binary search.", + "You will also learn how to work with common data structures including arrays and linked lists." + ], + "note": "", + "blocks": { + "intro-dsa-searching-algorithms": { + "title": "Searching Algorithms", + "intro": [ + "In these videos, you will learn what an algorithm is and learn how to work with the binary search and linear search algorithms." + ] + }, + "intro-dsa-time-complexity": { + "title": "Time Complexity", + "intro": [ + "In these videos, you will learn about time complexity and how it works with measuring efficiency of algorithms." + ] + }, + "intro-dsa-algorithms-in-code": { + "title": "Algorithms in Code", + "intro": [ + "In these videos, you will write Python code for the linear and binary search algorithms." + ] + }, + "intro-dsa-recursion-and-space-complexity": { + "title": "Recursion and Space Complexity", + "intro": [ + "In these videos, you will learn about recursion and space complexity for algorithms." + ] + }, + "intro-dsa-arrays": { + "title": "Introduction to Arrays", + "intro": [ + "In these videos, you will learn how to work with arrays. You will learn about different operations including insert, delete and search." + ] + }, + "intro-dsa-linked-lists": { + "title": "Introduction to Linked Lists", + "intro": [ + "In these videos, you will learn about linked lists. You will learn how to add nodes to a list as well as remove and search a list." + ] + }, + "intro-dsa-merge-sort": { + "title": "The Merge Sort Algorithm", + "intro": [ + "In these videos, you will learn about the merge sort algorithm." + ] + }, + "intro-dsa-sorting-linked-lists": { + "title": "Sorting a Linked List", + "intro": [ + "In these videos, you will learn more about how to sort linked lists." + ] + }, + "intro-dsa-sorting-algorithms": { + "title": "Sorting Algorithms", + "intro": [ + "In these videos, you will learn about common sorting algorithms including selection sort and quicksort." + ] + }, + "intro-dsa-sorting-searching-algorithms": { + "title": "Searching Names using Sorting and Searching Algorithms", + "intro": [ + "In these videos, you will practice searching for names using the binary and linear search algorithms and comparing the runtimes for them." + ] + } + } + }, "information-security": { "title": "Information Security", "intro": [ diff --git a/client/i18n/locales/english/translations.json b/client/i18n/locales/english/translations.json index 46bc98b5b6a..e540fcc96c0 100644 --- a/client/i18n/locales/english/translations.json +++ b/client/i18n/locales/english/translations.json @@ -1274,6 +1274,7 @@ "foundational-c-sharp-with-microsoft": "Foundational C# with Microsoft", "foundational-c-sharp-with-microsoft-cert": "Foundational C# with Microsoft Certification", "learn-python-for-beginners": "Learn Python for Beginners", + "introduction-to-algorithms-and-data-structures": "Introduction to Algorithms and Data Structures", "a2-english-for-developers": "A2 English for Developers", "a2-english-for-developers-cert": "A2 English for Developers Certification (Beta)", "b1-english-for-developers": "B1 English for Developers", @@ -1460,7 +1461,8 @@ "d3": "D3", "api": "APIs", "information-security": "Information Security", - "computer-fundamentals": "Computer Fundamentals" + "computer-fundamentals": "Computer Fundamentals", + "computer-science": "Computer Science" } } } diff --git a/client/src/assets/superblock-icon.tsx b/client/src/assets/superblock-icon.tsx index e334d193f28..7d378a6225c 100644 --- a/client/src/assets/superblock-icon.tsx +++ b/client/src/assets/superblock-icon.tsx @@ -81,6 +81,7 @@ const iconMap = { [SuperBlocks.LabProductLandingPage]: Code, [SuperBlocks.CssAnimations]: Code, [SuperBlocks.LearnPythonForBeginners]: PythonIcon, + [SuperBlocks.IntroductionToAlgorithmsAndDataStructures]: Code, [SuperBlocks.RespWebDesignV9]: ResponsiveDesign, [SuperBlocks.JsV9]: JavaScriptIcon, [SuperBlocks.FrontEndDevLibsV9]: ReactIcon, diff --git a/client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md b/client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md new file mode 100644 index 00000000000..a8398b8c320 --- /dev/null +++ b/client/src/pages/learn/introduction-to-algorithms-and-data-structures/index.md @@ -0,0 +1,13 @@ +--- +title: Introduction to Algorithms and Data Structures +superBlock: introduction-to-algorithms-and-data-structures +certification: introduction-to-algorithms-and-data-structures +--- + +## Introduction to Algorithms and Data Structures + +Algorithms and Data Structures are the backbone of programming. So it's important to learn how to work with them. + +In this comprehensive course, you will learn about common sorting and searching algorithms including merge sort, quicksort and binary search. + +You will also learn how to work with common data structures including arrays and linked lists. diff --git a/client/src/templates/Introduction/intro.css b/client/src/templates/Introduction/intro.css index 7f8cad34344..38b36eacdd3 100644 --- a/client/src/templates/Introduction/intro.css +++ b/client/src/templates/Introduction/intro.css @@ -46,6 +46,7 @@ } .block-label-javascript, +.block-label-computer-science, .block-label-review { border-color: var(--purple-color); color: var(--purple-color); diff --git a/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-binary-search-in-code-video.md b/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-binary-search-in-code-video.md new file mode 100644 index 00000000000..ea042891ec9 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-binary-search-in-code-video.md @@ -0,0 +1,37 @@ +--- +id: 698dcc2c7932b3cc4b19c927 +title: Binary Search in Code +challengeType: 11 +videoId: mg7F5D8Wk5o +dashedName: binary-search-in-code-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will code out the binary search algorithm using Python. + +# --questions-- + +## --text-- + +Why was the `while first <= last:` condition used in the solution? + +## --answers-- + +To ensure only the first half of the array is ever checked. + +--- + +To make the loop run forever until manually stopped. + +--- + +To skip checking the last element in the search range. + +--- + +To keep searching while there are still elements in the range and stop when the range is empty. + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-linear-search-in-code-video.md b/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-linear-search-in-code-video.md new file mode 100644 index 00000000000..8ca80f2dc2e --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-linear-search-in-code-video.md @@ -0,0 +1,63 @@ +--- +id: 698dca057932b3cc4b19c926 +title: Linear Search in Code +challengeType: 11 +videoId: bKkgjdPkL3A +dashedName: linear-search-in-code-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will code out the linear search algorithm using Python. + +# --questions-- + +## --text-- + +Which of the following is the correct way to write a linear search function? + +## --answers-- + +```python +def linear_search(list, target): + for i in range(len(list) - 1): + if list[i] == target: + return i + return -1 +``` + +--- + +```python +def linear_search(list, target): + for i in range(len(list)): + if i == target: + return i + return -1 + +``` + +--- + +```python +def linear_search(list, target): + for i in range(len(list)): + if list[i] == target: + return i + else: + return -1 +``` + +--- + +```python +def linear_search(list, target): + for i in range(len(list)): + if list[i] == target: + return i + return None +``` + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-recursive-binary-search-video.md b/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-recursive-binary-search-video.md new file mode 100644 index 00000000000..6301e6e479c --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-algorithms-in-code/intro-dsa-recursive-binary-search-video.md @@ -0,0 +1,37 @@ +--- +id: 698dce727932b3cc4b19c928 +title: Recursive Binary Search +challengeType: 11 +videoId: RQNBzDoG_gA +dashedName: recursive-binary-search-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to create a recursive solution for binary search. + +# --questions-- + +## --text-- + +What is a recursive function? + +## --answers-- + +A function that performs a calculation only once. + +--- + +A function that calls itself. + +--- + +A function that never returns a value. + +--- + +A function that can only run in a loop. + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-accessing-array-values-video.md b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-accessing-array-values-video.md new file mode 100644 index 00000000000..5b527a0e993 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-accessing-array-values-video.md @@ -0,0 +1,49 @@ +--- +id: 698dd3ea7932b3cc4b19c92e +title: Accessing a Value in an Array +challengeType: 11 +videoId: yN6_wlaNvHo +dashedName: accessing-array-values-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to access elements from an array. + +# --questions-- + +## --text-- + +Which of the following is the correct way to access the first element from a Python list? + +## --answers-- + +```python +new_list = [9, 6, 3] +new_list[0] +``` + +--- + +```python +new_list = [9, 6, 3] +new_list[1] +``` + +--- + +```python +new_list = [9, 6, 3] +new_list[-1] +``` + +--- + +```python +new_list = [9, 6, 3] +new_list[2] +``` + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-array-basics-video.md b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-array-basics-video.md new file mode 100644 index 00000000000..bf21ca18255 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-array-basics-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd3547932b3cc4b19c92d +title: Array Basics +challengeType: 11 +videoId: G_kHMzPOwG8 +dashedName: array-basics-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about arrays. + +# --questions-- + +## --text-- + +What is an array? + +## --answers-- + +A collection of unrelated data stored randomly in memory. + +--- + +A function that stores numbers temporarily. + +--- + +An ordered collection of values where each element can be referenced by an index. + +--- + +A type of loop used to iterate over numbers. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-array-search-insert-delete-video.md b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-array-search-insert-delete-video.md new file mode 100644 index 00000000000..1f4860bfcc2 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-array-search-insert-delete-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd4cd7932b3cc4b19c92f +title: Array Search, Insert and Delete +challengeType: 11 +videoId: QvBI-LH2OMw +dashedName: array-search-insert-delete-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to search, insert, and delete elements from arrays. + +# --questions-- + +## --text-- + +Which method is used in Python to append an item at the end of a list? + +## --answers-- + +`place()` + +--- + +`set()` + +--- + +`add()` + +--- + +`append()` + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-data-structures-introduction-video.md b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-data-structures-introduction-video.md new file mode 100644 index 00000000000..b9e58bf1a93 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-arrays/intro-dsa-data-structures-introduction-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd14c7932b3cc4b19c92c +title: Introduction to Data Structures +challengeType: 11 +videoId: QIZSbUquPdY +dashedName: introduction-to-data-structures-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, Treehouse instructor Pasan will talk about what to expect in the data structures portion of this course. + +# --questions-- + +## --text-- + +What are the four common operations that will be studied when working with data structures? + +## --answers-- + +Accessing values, deleting values, traversing, and sorting. + +--- + +Accessing values, searching, inserting values, and deleting values. + +--- + +Searching, merging, splitting, and iterating values. + +--- + +Inserting values, updating values, printing values, and counting elements. + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-adding-nodes-to-linked-list-video.md b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-adding-nodes-to-linked-list-video.md new file mode 100644 index 00000000000..80ddac34b93 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-adding-nodes-to-linked-list-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd6627932b3cc4b19c931 +title: Adding Nodes to a Linked List +challengeType: 11 +videoId: DcsHC78sfdk +dashedName: adding-nodes-to-linked-list-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to add nodes to a linked list. + +# --questions-- + +## --text-- + +What is a commonly used term for searching through a linked list? + +## --answers-- + +scan + +--- + +walk + +--- + +loop + +--- + +traverse + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-implementing-search-video.md b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-implementing-search-video.md new file mode 100644 index 00000000000..df755d54a23 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-implementing-search-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd7f67932b3cc4b19c932 +title: Implementing Search +challengeType: 11 +videoId: 2X7ysO7o-Kc +dashedName: implementing-search-for-linked-list-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to implement a search method for linked lists in code using the Python programming language. + +# --questions-- + +## --text-- + +What is the worst case runtime for searching a linked list? + +## --answers-- + +constant + +--- + +linear + +--- + +quadratic + +--- + +logarithmic + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-inserting-a-node-video.md b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-inserting-a-node-video.md new file mode 100644 index 00000000000..ad13d91333f --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-inserting-a-node-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd8b47932b3cc4b19c933 +title: Inserting a Node +challengeType: 11 +videoId: HKCIczy-v90 +dashedName: inserting-a-node-linked-list-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to insert a node in a linked list. + +# --questions-- + +## --text-- + +What is the runtime for inserting a node at a known position in a linked list? + +## --answers-- + +constant time + +--- + +linear time + +--- + +quadratic time + +--- + +exponential time + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-removing-a-node-video.md b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-removing-a-node-video.md new file mode 100644 index 00000000000..8a707fc7929 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-removing-a-node-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd9817932b3cc4b19c934 +title: Removing a Node +challengeType: 11 +videoId: Jlu400ceY8g +dashedName: removing-a-node-linked-list-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to remove a node from a linked list. + +# --questions-- + +## --text-- + +What is the worst-case runtime for removing a node when you must first search for it in a linked list? + +## --answers-- + +exponential + +--- + +quadratic + +--- + +linear + +--- + +constant + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-what-is-linked-list-video.md b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-what-is-linked-list-video.md new file mode 100644 index 00000000000..e87b1ca572a --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-linked-lists/intro-dsa-what-is-linked-list-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd5a27932b3cc4b19c930 +title: What is a Linked List? +challengeType: 11 +videoId: rnGKSsh97q0 +dashedName: what-is-a-linked-list-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about linked lists. + +# --questions-- + +## --text-- + +What is the name of the node that is placed at the beginning of a linked list? + +## --answers-- + +start + +--- + +head + +--- + +tail + +--- + +foot + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-correctness-of-merge-sort-video.md b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-correctness-of-merge-sort-video.md new file mode 100644 index 00000000000..790b3d34b4e --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-correctness-of-merge-sort-video.md @@ -0,0 +1,37 @@ +--- +id: 698de0ca7932b3cc4b19c938 +title: Ensuring the Correctness of Merge Sort +challengeType: 11 +videoId: UHAYHvqxVKY +dashedName: correctness-of-merge-sort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to evaluate the merge sort algorithm and determine its correctness. + +# --questions-- + +## --text-- + +What technique is used in the `verify_sorted` function? + +## --answers-- + +recursion + +--- + +dynamic programming + +--- + +iteration + +--- + +backtracking + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-merge-sort-video.md b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-merge-sort-video.md new file mode 100644 index 00000000000..de1c10801bc --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-merge-sort-video.md @@ -0,0 +1,37 @@ +--- +id: 698dda7a7932b3cc4b19c935 +title: Merge Sort +challengeType: 11 +videoId: oqcS-Jw8JXM +dashedName: merge-sort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about the merge sort algorithm. + +# --questions-- + +## --text-- + +What algorithmic strategy is used for the merge sort algorithm? + +## --answers-- + +Greedy + +--- + +Dynamic Programming + +--- + +Divide and Conquer + +--- + +Backtracking + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-recursively-merging-sublists-video.md b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-recursively-merging-sublists-video.md new file mode 100644 index 00000000000..ac50806b1f4 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-recursively-merging-sublists-video.md @@ -0,0 +1,37 @@ +--- +id: 698ddfc37932b3cc4b19c937 +title: Recursively Merging Sublists +challengeType: 11 +videoId: aLZglY5hO-A +dashedName: recursively-merging-sublists-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn more about the merge sort algorithm and see how to recursively merge sublists. + +# --questions-- + +## --text-- + +What is the purpose of the merge function in the merge sort algorithm? + +## --answers-- + +It combines two sorted sublists into a single sorted list. + +--- + +It splits the list into smaller sublists. + +--- + +It selects the largest element from the list. + +--- + +It reverses the order of the list. + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-runtime-of-merge-sort-video.md b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-runtime-of-merge-sort-video.md new file mode 100644 index 00000000000..dde701c4028 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-runtime-of-merge-sort-video.md @@ -0,0 +1,37 @@ +--- +id: 698de2547932b3cc4b19c939 +title: Evaluating the Runtime of Merge Sort +challengeType: 11 +videoId: QJoIVAzN1LM +dashedName: runtime-of-merge-sort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about the runtimes for the merge sort algorithm. + +# --questions-- + +## --text-- + +What is the space complexity for merge sort? + +## --answers-- + +exponential + +--- + +linear + +--- + +quadratic + +--- + +constant + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-splitting-into-sublists-video.md b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-splitting-into-sublists-video.md new file mode 100644 index 00000000000..c6eb97e8bea --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-merge-sort/intro-dsa-splitting-into-sublists-video.md @@ -0,0 +1,37 @@ +--- +id: 698ddca77932b3cc4b19c936 +title: Splitting Into Sublists +challengeType: 11 +videoId: HBzKVr-AwjQ +dashedName: splitting-into-sublists-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn more about the merge sort algorithm and how to split a list into sublists. + +# --questions-- + +## --text-- + +What does splitting the list into sublists represent in the merge sort algorithm? + +## --answers-- + +It represents the sort step. + +--- + +It represents the merge step. + +--- + +It represents the conquer step. + +--- + +It represents the divide step. + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-recap-algorithms-in-code-video.md b/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-recap-algorithms-in-code-video.md new file mode 100644 index 00000000000..caf0fc94125 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-recap-algorithms-in-code-video.md @@ -0,0 +1,37 @@ +--- +id: 698dd0707932b3cc4b19c92b +title: Recap for Algorithms in Code +challengeType: 11 +videoId: paBfWYrScAg +dashedName: recap-algorithms-in-code-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will review the key concepts taught so far including algorithmic thinking, and Big O notation. + +# --questions-- + +## --text-- + +Which of the following should be true when it comes to algorithms? + +## --answers-- + +It should always use the maximum amount of memory available. + +--- + +It should never repeat any steps, even if needed. + +--- + +It should finish in a finite amount of time. + +--- + +It should produce random results each time it runs. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-recursive-functions-video.md b/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-recursive-functions-video.md new file mode 100644 index 00000000000..a1a4160a1e3 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-recursive-functions-video.md @@ -0,0 +1,37 @@ +--- +id: 698dcf297932b3cc4b19c929 +title: Recursive Functions +challengeType: 11 +videoId: nRK4wRqKe1k +dashedName: recursive-functions-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about recursion. + +# --questions-- + +## --text-- + +What is an important aspect that all recursive functions should have? + +## --answers-- + +They must run in a loop indefinitely. + +--- + +They must not use any variables. + +--- + +A base case. + +--- + +They must always print output. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-space-complexity-video.md b/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-space-complexity-video.md new file mode 100644 index 00000000000..119a81d2b24 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-recursion-and-space-complexity/intro-dsa-space-complexity-video.md @@ -0,0 +1,37 @@ +--- +id: 698dcfd57932b3cc4b19c92a +title: Space Complexity +challengeType: 11 +videoId: BFMvhQdqYgc +dashedName: space-complexity-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about space complexity. + +# --questions-- + +## --text-- + +What is space complexity? + +## --answers-- + +The amount of memory an algorithm uses relative to the input size. + +--- + +The amount of time an algorithm takes to run. + +--- + +The number of CPU cores used by an algorithm. + +--- + +The number of input elements an algorithm can process per second. + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-defining-an-algorithm-video.md b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-defining-an-algorithm-video.md new file mode 100644 index 00000000000..f63297d6a9a --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-defining-an-algorithm-video.md @@ -0,0 +1,37 @@ +--- +id: 698dbf2b7932b3cc4b19c91d +title: Defining an Algorithm +challengeType: 11 +videoId: qH-e5VMAYwQ +dashedName: defining-an-algorithm-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about a commonly used search algorithm. + +# --questions-- + +## --text-- + +What is the name of the algorithm talked about in the video? + +## --answers-- + +Optical Search + +--- + +Linear Search + +--- + +Linked list Search + +--- + +Triad Search + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-evaluating-binary-search-video.md b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-evaluating-binary-search-video.md new file mode 100644 index 00000000000..ee04a91546f --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-evaluating-binary-search-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc20d7932b3cc4b19c91f +title: Evaluating Binary Search +challengeType: 11 +videoId: dnVWNeBCOEA +dashedName: evaluating-binary-search-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn more about the binary search algorithm. + +# --questions-- + +## --text-- + +What condition needs to be true in order for binary search to work? + +## --answers-- + +The data must contain less than 1,000 entries. + +--- + +The data must contain more than 1,000 entries. + +--- + +The data must be unsorted. + +--- + +The data must be sorted. + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-evaluating-linear-search-video.md b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-evaluating-linear-search-video.md new file mode 100644 index 00000000000..7fcdd98fe04 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-evaluating-linear-search-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc0277932b3cc4b19c91e +title: Evaluating Linear Search +challengeType: 11 +videoId: 0bipiTtnXIA +dashedName: evaluating-linear-search-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn more about the linear search algorithm and how to evaluate its runtime. + +# --questions-- + +## --text-- + +What are the two measures of efficiency? + +## --answers-- + +Linear and Space complexity + +--- + +Time and Space complexity + +--- + +Recursive and Space complexity + +--- + +Binary and Space complexity + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-guess-the-number-video.md b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-guess-the-number-video.md new file mode 100644 index 00000000000..92cb20e7972 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-guess-the-number-video.md @@ -0,0 +1,37 @@ +--- +id: 698dbdec7932b3cc4b19c91c +title: Guess the Number +challengeType: 11 +videoId: zNAzkdpIrqU +dashedName: guess-the-number-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will see a demonstration of individuals playing a guessing game to illustrate how algorithms work. + +# --questions-- + +## --text-- + +How many tries did it take Britney and John to guess the correct number? + +## --answers-- + +1 + +--- + +6 + +--- + +3 + +--- + +2 + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-video.md b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-video.md new file mode 100644 index 00000000000..ec27339afa6 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-video.md @@ -0,0 +1,37 @@ +--- +id: 698dbbcf7932b3cc4b19c91a +title: Introduction +challengeType: 11 +videoId: 0tlFSgUJt4Q +dashedName: introduction-to-algorithms-and-data-structures +--- + +# --description-- + +Listen to Beau Carnes introduce this Algorithms and Data Structures course. + +# --questions-- + +## --text-- + +Who created this course? + +## --answers-- + +Treehouse + +--- + +CodeAcademy + +--- + +Boot.dev + +--- + +Odin Project + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-what-is-an-algorithm-video.md b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-what-is-an-algorithm-video.md new file mode 100644 index 00000000000..0e27610d0b1 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-searching-algorithms/intro-dsa-what-is-an-algorithm-video.md @@ -0,0 +1,37 @@ +--- +id: 698dbbd47932b3cc4b19c91b +title: What is an Algorithm? +challengeType: 11 +videoId: FUeqQSciTNI +dashedName: what-is-an-algorithm-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn what an algorithm is. + +# --questions-- + +## --text-- + +What is an algorithm? + +## --answers-- + +A special JavaScript framework. + +--- + +A commonly used linter. + +--- + +A set of steps for completing a task. + +--- + +A special type of compiler. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-actual-runtimes-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-actual-runtimes-video.md new file mode 100644 index 00000000000..53b6f2ee824 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-actual-runtimes-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea167932b3cc4b19c947 +title: Actual Run Time for Sorting Algorithms +challengeType: 11 +videoId: AcHX25M4Cvk +dashedName: actual-runtimes-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will compare the actual runtimes for the merge sort, quicksort and selection sort algorithms. + +# --questions-- + +## --text-- + +What happened in the demo when the quicksort and merge sort algorithms were compared with a dataset of 1 million numbers? + +## --answers-- + +Quicksort and merge sort were equal in their times. + +--- + +Quicksort was slightly slower in sorting the numbers than merge sort. + +--- + +Quicksort was slightly faster in sorting the numbers than merge sort. + +--- + +Quicksort and merge sort both timed out and didn't provide any information. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-big-o-runtimes-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-big-o-runtimes-video.md new file mode 100644 index 00000000000..451342e0afe --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-big-o-runtimes-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea1c7932b3cc4b19c948 +title: Big-O Run Times of Sorting Algorithms +challengeType: 11 +videoId: DQ1lQ0IxNgE +dashedName: big-o-runtimes-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about the different Big O runtimes for the sorting algorithms covered so far. + +# --questions-- + +## --text-- + +What is the worst case scenario for quicksort? + +## --answers-- + +quadratic time + +--- + +linear time + +--- + +constant time + +--- + +exponential time + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-bogosort-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-bogosort-video.md new file mode 100644 index 00000000000..64d60bf0377 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-bogosort-video.md @@ -0,0 +1,37 @@ +--- +id: 698de9f07932b3cc4b19c940 +title: Bogosort +challengeType: 11 +videoId: kz_PpX_ZnpQ +dashedName: bogosort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to work with the bogosort algorithm. + +# --questions-- + +## --text-- + +How does the bogosort algorithm work? + +## --answers-- + +It repeatedly swaps adjacent elements in a deterministic pattern until sorted. + +--- + +It splits the list into halves, sorts each recursively, then merges them. + +--- + +It randomly shuffles the list until it happens to be sorted. + +--- + +It selects the smallest element and places it in order, like selection sort. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-implementing-quicksort-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-implementing-quicksort-video.md new file mode 100644 index 00000000000..e835b1b8d61 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-implementing-quicksort-video.md @@ -0,0 +1,50 @@ +--- +id: 698dea0c7932b3cc4b19c945 +title: Implementing Quicksort +challengeType: 11 +videoId: 7k5rxhK3X_Y +dashedName: implementing-quicksort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to implement the quicksort algorithm in Python. + +# --questions-- + +## --text-- + +What is the base case for this quicksort implementation in Python? + +## --answers-- + +```python +while len(values) > 1: + values.pop() +``` + +--- + +```python +for i in range(len(values)): + if values[i] > 0: + values[i] -= 1 +``` + +--- + +```python +for i in range(len(values)): + values[i] += 1 +``` + +--- + +```python +if len(values) <= 1: + return values +``` + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-merge-sort-revisted-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-merge-sort-revisted-video.md new file mode 100644 index 00000000000..b209cb36531 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-merge-sort-revisted-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea107932b3cc4b19c946 +title: Merge Sort +challengeType: 11 +videoId: Aj6ikfTns9o +dashedName: merge-sort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will revisit the merge sort algorithm. + +# --questions-- + +## --text-- + +What is a core difference between the merge sort and quicksort algorithms? + +## --answers-- + +Merge sort swaps adjacent elements repeatedly until sorted. + +--- + +Quicksort will partition the list around a pivot and recursively sort sublists, while merge sort splits the list in half and merges sorted halves. + +--- + +Merge sort uses a hash table to count elements, whereas quicksort uses a deque to reorder elements. + +--- + +Quicksort always uses a while loop to sort, while merge sort uses a for loop. + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-quicksort-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-quicksort-video.md new file mode 100644 index 00000000000..709055bade3 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-quicksort-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea057932b3cc4b19c944 +title: Quicksort +challengeType: 11 +videoId: IAeOxoWnKU0 +dashedName: quicksort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how the quicksort algorithm works. + +# --questions-- + +## --text-- + +Which technique is used in the quicksort algorithm? + +## --answers-- + +recursion + +--- + +iteration with nested loops + +--- + +hashing + +--- + +dynamic programming + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-recursion-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-recursion-video.md new file mode 100644 index 00000000000..11937868365 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-recursion-video.md @@ -0,0 +1,37 @@ +--- +id: 698de9ff7932b3cc4b19c943 +title: Recursion +challengeType: 11 +videoId: XPIF44IXf1I +dashedName: recursion-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will review how recursive functions work. + +# --questions-- + +## --text-- + +What is recursion? + +## --answers-- + +A type of loop that never ends. + +--- + +A function that calls itself. + +--- + +A function that only runs once and then stops. + +--- + +A function that automatically sorts data. + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-runtime-of-a-program-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-runtime-of-a-program-video.md new file mode 100644 index 00000000000..6a21b435d34 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-runtime-of-a-program-video.md @@ -0,0 +1,37 @@ +--- +id: 698de9fa7932b3cc4b19c942 +title: Getting the Run Time of a Program +challengeType: 11 +videoId: mc0l9RHWjT0 +dashedName: runtime-of-a-program-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to measure runtimes for the selection sort algorithm. + +# --questions-- + +## --text-- + +What is the unix command the instructor uses to run the program and check the times for the selection sort algorithm? + +## --answers-- + +`check` + +--- + +`run` + +--- + +`time` + +--- + +`set` + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-selection-sort-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-selection-sort-video.md new file mode 100644 index 00000000000..f7644d23f4c --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-selection-sort-video.md @@ -0,0 +1,37 @@ +--- +id: 698de9f47932b3cc4b19c941 +title: Selection Sort +challengeType: 11 +videoId: 6kIttK2RzoU +dashedName: selection-sort-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about the selection sort algorithm. + +# --questions-- + +## --text-- + +How does the selection sort algorithm work? + +## --answers-- + +It repeatedly finds the smallest (or largest) element from the unsorted portion and moves it to the sorted portion. + +--- + +It repeatedly swaps adjacent elements until the entire list is sorted. + +--- + +It randomly shuffles the list until it becomes sorted. + +--- + +It divides the list into halves, sorts each half recursively, and merges them. + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-sorting-searching-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-sorting-searching-video.md new file mode 100644 index 00000000000..70b83d6b137 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-algorithms/intro-dsa-sorting-searching-video.md @@ -0,0 +1,37 @@ +--- +id: 698de9ea7932b3cc4b19c93f +title: Sorting and Searching +challengeType: 11 +videoId: j0NR0IDAU-0 +dashedName: sorting-searching-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, instructor Jay McGavren will talk about what to expect in the next portion of the course in regards to sorting and searching algorithms. + +# --questions-- + +## --text-- + +Which sorting algorithm would you use if you want to search a large sorted list of items in an efficient amount of time? + +## --answers-- + +linear search + +--- + +binary search + +--- + +beam search + +--- + +dynamic search + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-conquer-step-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-conquer-step-video.md new file mode 100644 index 00000000000..20826aa52f3 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-conquer-step-video.md @@ -0,0 +1,37 @@ +--- +id: 698de74b7932b3cc4b19c93c +title: The Conquer Step +challengeType: 11 +videoId: 4-ycdUhn30U +dashedName: conquer-step-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn to implement the merge sort algorithm on linked lists by practicing the conquer step. + +# --questions-- + +## --text-- + +What is the purpose of the `merge` function in this merge sort implementation? + +## --answers-- + +The purpose is to split a linked list into smaller sublists for recursive sorting. + +--- + +The purpose is to select nodes from each list without sorting and combine them. + +--- + +The purpose is to merge two linked list, sorting by data in nodes and returning a new merged list. + +--- + +The purpose is to rearrange nodes in a linked list in reverse order and return the result. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-divide-step-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-divide-step-video.md new file mode 100644 index 00000000000..9521a29e426 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-divide-step-video.md @@ -0,0 +1,37 @@ +--- +id: 698de6a07932b3cc4b19c93b +title: The Divide Step +challengeType: 11 +videoId: HW3cLmVfSw0 +dashedName: divide-step-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will continue to learn how to implement the divide step of the merge sort algorithm on linked lists. + +# --questions-- + +## --text-- + +What is the point of the `split` function? + +## --answers-- + +To select a pivot element for dividing the list. + +--- + +To merge two sorted sublists into one list. + +--- + +To split the list into two halves without considering order. + +--- + +To divide the unsorted list at the midpoint into sublists. + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-evaluating-runtime-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-evaluating-runtime-video.md new file mode 100644 index 00000000000..9866eefb3c1 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-evaluating-runtime-video.md @@ -0,0 +1,37 @@ +--- +id: 698de83d7932b3cc4b19c93d +title: Evaluating the Runtime +challengeType: 11 +videoId: 4eQyFkVtkvk +dashedName: evaluating-runtime-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about how to evaluate runtimes for merge sort on linked lists. + +# --questions-- + +## --text-- + +What is the runtime of the `split` function in the implementation of merge sort? + +## --answers-- + +`O(k log)` + +--- + +`O(log n)` + +--- + +`O(k n)` + +--- + +`O(k log n)` + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-merge-function-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-merge-function-video.md new file mode 100644 index 00000000000..0088a02ed53 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-merge-function-video.md @@ -0,0 +1,37 @@ +--- +id: 698de3bb7932b3cc4b19c93a +title: The Merge Function +challengeType: 11 +videoId: nXhW8WE8rFU +dashedName: merge-function-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to implement the merge sort algorithm on a linked list. + +# --questions-- + +## --text-- + +What are the three functions that will be used in this merge sort implementation? + +## --answers-- + +`merge_sort`, `split` and `merge` + +--- + +`merge_sort`, `insert` and `delete` + +--- + +`sort`, `combine` and `partition` + +--- + +`search`, `split` and `merge` + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-recap-introduction-to-data-structures-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-recap-introduction-to-data-structures-video.md new file mode 100644 index 00000000000..d43824caf42 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-linked-lists/intro-dsa-recap-introduction-to-data-structures-video.md @@ -0,0 +1,37 @@ +--- +id: 698de8fd7932b3cc4b19c93e +title: Recap of Introduction to Data Structures +challengeType: 11 +videoId: KUG1HNrchK0 +dashedName: recap-introduction-to-data-structures-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will recap the concepts you learned about data structures. + +# --questions-- + +## --text-- + +What is the name of the data structure in Python that is similar to arrays and can store a sequence of elements? + +## --answers-- + +tuples + +--- + +lists + +--- + +dictionaries + +--- + +sets + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-big-o-runtimes-search-algorithms-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-big-o-runtimes-search-algorithms-video.md new file mode 100644 index 00000000000..1e43e41093e --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-big-o-runtimes-search-algorithms-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea4b7932b3cc4b19c94d +title: Big O Runtime of Search Algorithms +challengeType: 11 +videoId: V9ID1JG7BpU +dashedName: big-o-runtimes-search-algorithms-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will look at the Big O runtimes for linear and binary search. + +# --questions-- + +## --text-- + +What is the big O runtime for linear search? + +## --answers-- + +`O(n)` + +--- + +`O(n + n)` + +--- + +`O(1)` + +--- + +`O(log n)` + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-searching-names-binary-search-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-searching-names-binary-search-video.md new file mode 100644 index 00000000000..188b2036a1d --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-searching-names-binary-search-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea3f7932b3cc4b19c94b +title: Binary Search +challengeType: 11 +videoId: VZ1u8vgVJwo +dashedName: searching-names-binary-search-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will revisit the binary search algorithm and how it works in searching through a list of names. + +# --questions-- + +## --text-- + +When might you use the binary search algorithm over the linear search algorithm? + +## --answers-- + +When the list is unsorted and frequently changing. + +--- + +When you need to check every element one by one. + +--- + +When you know you are searching through a large list of sorted results. + +--- + +When the dataset is very small and performance does not matter. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-searching-names-linear-search-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-searching-names-linear-search-video.md new file mode 100644 index 00000000000..5e1911e9f1b --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-searching-names-linear-search-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea367932b3cc4b19c949 +title: Linear Search +challengeType: 11 +videoId: aC9uj1nYJLI +dashedName: searching-names-linear-search-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will examine how linear search works on a list of names. + +# --questions-- + +## --text-- + +When might you use linear search over binary search? + +## --answers-- + +When the list is very large and already sorted. + +--- + +If you need logarithmic time complexity. + +--- + +If you know the list is unsorted. + +--- + +When you can repeatedly divide the dataset in half. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-sorting-names-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-sorting-names-video.md new file mode 100644 index 00000000000..fa44258757d --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-sorting-names-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea3b7932b3cc4b19c94a +title: Sorting Names +challengeType: 11 +videoId: DpuNKrUDr40 +dashedName: sorting-names-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will implement the quicksort algorithm in Python to sort a list of names. + +# --questions-- + +## --text-- + +What symbol does the instructor use in the video the redirect the program's output to another file in linux? + +## --answers-- + +`>` + +--- + +`<<` + +--- + +`|` + +--- + +`?` + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-timing-search-scripts-video.md b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-timing-search-scripts-video.md new file mode 100644 index 00000000000..3078d5d91e6 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-sorting-searching-algorithms/intro-dsa-timing-search-scripts-video.md @@ -0,0 +1,37 @@ +--- +id: 698dea447932b3cc4b19c94c +title: Timing Our Search Scripts +challengeType: 11 +videoId: F_YLFplzb94 +dashedName: timing-search-scripts-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will see how the binary and linear search algorithms work with a list of names and how the results compare. + +# --questions-- + +## --text-- + +What happened when the binary and linear search algorithm times were compared on a list of names? + +## --answers-- + +Linear search took half as long to complete as binary search. + +--- + +Binary search took half as long to complete as linear search. + +--- + +Both algorithms took the same amount of time to complete. + +--- + +Both algorithms timed out and no results were displayed. + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-constant-logarithmic-time-video.md b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-constant-logarithmic-time-video.md new file mode 100644 index 00000000000..7161be899e1 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-constant-logarithmic-time-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc59b7932b3cc4b19c921 +title: Constant and Logarithmic Time +challengeType: 11 +videoId: KOMvBi-DabE +dashedName: constant-logarithmic-time-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about constant and logarithmic times for algorithms. + +# --questions-- + +## --text-- + +Which of the following is the correct way to represent constant time in Big O notation? + +## --answers-- + +`O(n)` + +--- + +`O(1)` + +--- + +`O(C)` + +--- + +`O(0)` + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-determining-complexity-video.md b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-determining-complexity-video.md new file mode 100644 index 00000000000..02740dae768 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-determining-complexity-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc8ae7932b3cc4b19c925 +title: Determining Complexity +challengeType: 11 +videoId: 8bglWlQYTPQ +dashedName: determining-complexity-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to determine the worst case complexity for an algorithm. + +# --questions-- + +## --text-- + +What is the worst case runtime for binary search? + +## --answers-- + +`O(n)` + +--- + +`O(log n)` + +--- + +`O(1)` + +--- + +`O(n log n)` + +## --video-solution-- + +2 diff --git a/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-efficiency-algorithm-video.md b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-efficiency-algorithm-video.md new file mode 100644 index 00000000000..7e7164e86f2 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-efficiency-algorithm-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc4a27932b3cc4b19c920 +title: Efficiency of an Algorithm +challengeType: 11 +videoId: EHxx4yawPT0 +dashedName: efficiency-algorithm-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn how to measure the efficiency of an algorithm. + +# --questions-- + +## --text-- + +What is Big O notation? + +## --answers-- + +A notation used to calculate the memory address of variables in a program. + +--- + +The exact running time of a program measured in seconds. + +--- + +A method for debugging errors in large software systems. + +--- + +Theoretical definition of the complexity of an algorithm as a function of the size. + +## --video-solution-- + +4 diff --git a/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-exponential-time-video.md b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-exponential-time-video.md new file mode 100644 index 00000000000..ad68edf3a63 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-exponential-time-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc79f7932b3cc4b19c924 +title: Exponential Time +challengeType: 11 +videoId: GNnxIIYwYFM +dashedName: exponential-time-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about exponential runtimes. + +# --questions-- + +## --text-- + +Which of the following popular problems is an example of an exponential algorithm? + +## --answers-- + +Traveling Salesman + +--- + +Dijkstra Algorithm + +--- + +Merge Sort + +--- + +Fibonacci Sequence + +## --video-solution-- + +1 diff --git a/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-linear-quadratic-time-video.md b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-linear-quadratic-time-video.md new file mode 100644 index 00000000000..c7f52c816b9 --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-linear-quadratic-time-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc6467932b3cc4b19c922 +title: Linear and Quadratic Time +challengeType: 11 +videoId: jS7vtk-JLZ0 +dashedName: linear-quadratic-time-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will learn about linear and quadratic times. + +# --questions-- + +## --text-- + +What does quadratic mean? + +## --answers-- + +An operation raised to the first power. + +--- + +An operation raised to the third power. + +--- + +An operation raised to the second power. + +--- + +An operation raised to the tenth power. + +## --video-solution-- + +3 diff --git a/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-quasilinear-time-video.md b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-quasilinear-time-video.md new file mode 100644 index 00000000000..cdfba4164fd --- /dev/null +++ b/curriculum/challenges/english/blocks/intro-dsa-time-complexity/intro-dsa-quasilinear-time-video.md @@ -0,0 +1,37 @@ +--- +id: 698dc6f47932b3cc4b19c923 +title: Quasilinear Time +challengeType: 11 +videoId: p3UAfZZ3Nz0 +dashedName: quasilinear-time-introduction-to-algorithms-and-data-structures +--- + +# --description-- + +In this video, you will about quasilinear times. + +# --questions-- + +## --text-- + +Which of the following is the correct way to represent quasilinear time in Big O notation? + +## --answers-- + +`O(n log n)` + +--- + +`O(log n)` + +--- + +`O(n n)` + +--- + +`O(n log)` + +## --video-solution-- + +1 diff --git a/curriculum/schema/curriculum-schema.js b/curriculum/schema/curriculum-schema.js index f102f106192..a93ff9a0cc4 100644 --- a/curriculum/schema/curriculum-schema.js +++ b/curriculum/schema/curriculum-schema.js @@ -34,6 +34,7 @@ const superblocks = [ 'project-euler', '2022/responsive-web-design', 'the-odin-project', + 'introduction-to-algorithms-and-data-structures', 'lab-survey-form', 'html-and-accessibility', 'computer-basics', diff --git a/curriculum/src/build-curriculum.ts b/curriculum/src/build-curriculum.ts index 38d178f356f..8b216574020 100644 --- a/curriculum/src/build-curriculum.ts +++ b/curriculum/src/build-curriculum.ts @@ -205,6 +205,8 @@ export const superBlockNames = { 'full-stack-developer-v9': SuperBlocks.FullStackDeveloperV9, 'html-forms-and-tables': SuperBlocks.HtmlFormsAndTables, 'learn-python-for-beginners': SuperBlocks.LearnPythonForBeginners, + 'introduction-to-algorithms-and-data-structures': + SuperBlocks.IntroductionToAlgorithmsAndDataStructures, 'lab-survey-form': SuperBlocks.LabSurveyForm, 'html-and-accessibility': SuperBlocks.HtmlAndAccessibility, 'computer-basics': SuperBlocks.ComputerBasics, diff --git a/curriculum/structure/blocks/intro-dsa-algorithms-in-code.json b/curriculum/structure/blocks/intro-dsa-algorithms-in-code.json new file mode 100644 index 00000000000..f5e7e56e38e --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-algorithms-in-code.json @@ -0,0 +1,22 @@ +{ + "name": "Algorithms in Code", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-algorithms-in-code", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dca057932b3cc4b19c926", + "title": "Linear Search in Code" + }, + { + "id": "698dcc2c7932b3cc4b19c927", + "title": "Binary Search in Code" + }, + { + "id": "698dce727932b3cc4b19c928", + "title": "Recursive Binary Search" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-arrays.json b/curriculum/structure/blocks/intro-dsa-arrays.json new file mode 100644 index 00000000000..6a43fdda03b --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-arrays.json @@ -0,0 +1,26 @@ +{ + "name": "Introduction to Arrays", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-arrays", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dd14c7932b3cc4b19c92c", + "title": "Introduction to Data Structures" + }, + { + "id": "698dd3547932b3cc4b19c92d", + "title": "Array Basics" + }, + { + "id": "698dd3ea7932b3cc4b19c92e", + "title": "Accessing a Value in an Array" + }, + { + "id": "698dd4cd7932b3cc4b19c92f", + "title": "Array Search, Insert and Delete" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-linked-lists.json b/curriculum/structure/blocks/intro-dsa-linked-lists.json new file mode 100644 index 00000000000..1e85b87a8f5 --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-linked-lists.json @@ -0,0 +1,30 @@ +{ + "name": "Introduction to Linked Lists", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-linked-lists", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dd5a27932b3cc4b19c930", + "title": "What is a Linked List?" + }, + { + "id": "698dd6627932b3cc4b19c931", + "title": "Adding Nodes to a Linked List" + }, + { + "id": "698dd7f67932b3cc4b19c932", + "title": "Implementing Search" + }, + { + "id": "698dd8b47932b3cc4b19c933", + "title": "Inserting a Node" + }, + { + "id": "698dd9817932b3cc4b19c934", + "title": "Removing a Node" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-merge-sort.json b/curriculum/structure/blocks/intro-dsa-merge-sort.json new file mode 100644 index 00000000000..64afbe0b2ea --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-merge-sort.json @@ -0,0 +1,30 @@ +{ + "name": "The Merge Sort Algorithm", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-merge-sort", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dda7a7932b3cc4b19c935", + "title": "Merge Sort" + }, + { + "id": "698ddca77932b3cc4b19c936", + "title": "Splitting Into Sublists" + }, + { + "id": "698ddfc37932b3cc4b19c937", + "title": "Recursively Merging Sublists" + }, + { + "id": "698de0ca7932b3cc4b19c938", + "title": "Ensuring the Correctness of Merge Sort" + }, + { + "id": "698de2547932b3cc4b19c939", + "title": "Evaluating the Runtime of Merge Sort" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-recursion-and-space-complexity.json b/curriculum/structure/blocks/intro-dsa-recursion-and-space-complexity.json new file mode 100644 index 00000000000..c4baedf574b --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-recursion-and-space-complexity.json @@ -0,0 +1,22 @@ +{ + "name": "Recursion and Space Complexity", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-recursion-and-space-complexity", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dcf297932b3cc4b19c929", + "title": "Recursive Functions" + }, + { + "id": "698dcfd57932b3cc4b19c92a", + "title": "Space Complexity" + }, + { + "id": "698dd0707932b3cc4b19c92b", + "title": "Recap of Algorithms in Code" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-searching-algorithms.json b/curriculum/structure/blocks/intro-dsa-searching-algorithms.json new file mode 100644 index 00000000000..37f2f93bf7b --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-searching-algorithms.json @@ -0,0 +1,34 @@ +{ + "name": "Searching Algorithms", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-searching-algorithms", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dbbcf7932b3cc4b19c91a", + "title": "Introduction" + }, + { + "id": "698dbbd47932b3cc4b19c91b", + "title": "What is an Algorithm?" + }, + { + "id": "698dbdec7932b3cc4b19c91c", + "title": "Guess the Number" + }, + { + "id": "698dbf2b7932b3cc4b19c91d", + "title": "Defining an Algorithm" + }, + { + "id": "698dc0277932b3cc4b19c91e", + "title": "Evaluating Linear Search" + }, + { + "id": "698dc20d7932b3cc4b19c91f", + "title": "Evaluating Binary Search" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-sorting-algorithms.json b/curriculum/structure/blocks/intro-dsa-sorting-algorithms.json new file mode 100644 index 00000000000..6b2119883ed --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-sorting-algorithms.json @@ -0,0 +1,50 @@ +{ + "name": "Sorting Algorithms", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-sorting-algorithms", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698de9ea7932b3cc4b19c93f", + "title": "Sorting and Searching" + }, + { + "id": "698de9f07932b3cc4b19c940", + "title": "Bogosort" + }, + { + "id": "698de9f47932b3cc4b19c941", + "title": "Selection Sort" + }, + { + "id": "698de9fa7932b3cc4b19c942", + "title": "Getting the Run Time of a Program" + }, + { + "id": "698de9ff7932b3cc4b19c943", + "title": "Recursion" + }, + { + "id": "698dea057932b3cc4b19c944", + "title": "Quicksort" + }, + { + "id": "698dea0c7932b3cc4b19c945", + "title": "Implementing Quicksort" + }, + { + "id": "698dea107932b3cc4b19c946", + "title": "Merge Sort" + }, + { + "id": "698dea167932b3cc4b19c947", + "title": "Actual Run Time for Sorting Algorithms" + }, + { + "id": "698dea1c7932b3cc4b19c948", + "title": "Big-O Run Times of Sorting Algorithms" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-sorting-linked-lists.json b/curriculum/structure/blocks/intro-dsa-sorting-linked-lists.json new file mode 100644 index 00000000000..6d3bda3f85d --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-sorting-linked-lists.json @@ -0,0 +1,30 @@ +{ + "name": "Sorting a Linked List", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-sorting-linked-lists", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698de3bb7932b3cc4b19c93a", + "title": "The Merge Function" + }, + { + "id": "698de6a07932b3cc4b19c93b", + "title": "The Divide Step" + }, + { + "id": "698de74b7932b3cc4b19c93c", + "title": "The Conquer Step" + }, + { + "id": "698de83d7932b3cc4b19c93d", + "title": "Evaluating the Runtime" + }, + { + "id": "698de8fd7932b3cc4b19c93e", + "title": "Recap of Introduction to Data Structures" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-sorting-searching-algorithms.json b/curriculum/structure/blocks/intro-dsa-sorting-searching-algorithms.json new file mode 100644 index 00000000000..d2b8650b851 --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-sorting-searching-algorithms.json @@ -0,0 +1,30 @@ +{ + "name": "Searching Names using Sorting and Searching Algorithms", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-sorting-searching-algorithms", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dea367932b3cc4b19c949", + "title": "Linear Search" + }, + { + "id": "698dea3b7932b3cc4b19c94a", + "title": "Sorting Names" + }, + { + "id": "698dea3f7932b3cc4b19c94b", + "title": "Binary Search" + }, + { + "id": "698dea447932b3cc4b19c94c", + "title": "Timing Our Search Scripts" + }, + { + "id": "698dea4b7932b3cc4b19c94d", + "title": "Big O Runtime of Search Algorithms" + } + ] +} diff --git a/curriculum/structure/blocks/intro-dsa-time-complexity.json b/curriculum/structure/blocks/intro-dsa-time-complexity.json new file mode 100644 index 00000000000..a728fa142e0 --- /dev/null +++ b/curriculum/structure/blocks/intro-dsa-time-complexity.json @@ -0,0 +1,34 @@ +{ + "name": "Time Complexity", + "blockLabel": "lecture", + "blockLayout": "challenge-list", + "isUpcomingChange": false, + "dashedName": "intro-dsa-time-complexity", + "helpCategory": "Backend Development", + "challengeOrder": [ + { + "id": "698dc4a27932b3cc4b19c920", + "title": "Efficiency of an Algorithm" + }, + { + "id": "698dc59b7932b3cc4b19c921", + "title": "Constant and Logarithmic Time" + }, + { + "id": "698dc6467932b3cc4b19c922", + "title": "Linear & Quadratic Time" + }, + { + "id": "698dc6f47932b3cc4b19c923", + "title": "Quasilinear Time" + }, + { + "id": "698dc79f7932b3cc4b19c924", + "title": "Exponential Time" + }, + { + "id": "698dc8ae7932b3cc4b19c925", + "title": "Determining Complexity" + } + ] +} diff --git a/curriculum/structure/curriculum.json b/curriculum/structure/curriculum.json index 6bcc4334473..c97a1d4e7c3 100644 --- a/curriculum/structure/curriculum.json +++ b/curriculum/structure/curriculum.json @@ -39,6 +39,7 @@ "full-stack-developer-v9", "html-forms-and-tables", "learn-python-for-beginners", + "introduction-to-algorithms-and-data-structures", "lab-survey-form", "html-and-accessibility", "computer-basics", diff --git a/curriculum/structure/superblocks/introduction-to-algorithms-and-data-structures.json b/curriculum/structure/superblocks/introduction-to-algorithms-and-data-structures.json new file mode 100644 index 00000000000..304e41e2b91 --- /dev/null +++ b/curriculum/structure/superblocks/introduction-to-algorithms-and-data-structures.json @@ -0,0 +1,14 @@ +{ + "blocks": [ + "intro-dsa-searching-algorithms", + "intro-dsa-time-complexity", + "intro-dsa-algorithms-in-code", + "intro-dsa-recursion-and-space-complexity", + "intro-dsa-arrays", + "intro-dsa-linked-lists", + "intro-dsa-merge-sort", + "intro-dsa-sorting-linked-lists", + "intro-dsa-sorting-algorithms", + "intro-dsa-sorting-searching-algorithms" + ] +} diff --git a/packages/shared/src/config/catalog.ts b/packages/shared/src/config/catalog.ts index f9b96be9fca..ac13f35384a 100644 --- a/packages/shared/src/config/catalog.ts +++ b/packages/shared/src/config/catalog.ts @@ -17,7 +17,8 @@ enum Topic { D3 = 'd3', Api = 'api', InformationSecurity = 'information-security', - ComputerFundamentals = 'computer-fundamentals' + ComputerFundamentals = 'computer-fundamentals', + ComputerScience = 'computer-science' } interface Catalog { @@ -189,5 +190,11 @@ export const catalog: Catalog[] = [ level: Levels.Advanced, hours: 2, topic: Topic.CSS + }, + { + superBlock: SuperBlocks.IntroductionToAlgorithmsAndDataStructures, + level: Levels.Intermediate, + hours: 6, + topic: Topic.ComputerScience } ]; diff --git a/packages/shared/src/config/certification-settings.ts b/packages/shared/src/config/certification-settings.ts index 84aec79ed17..8e4853241b2 100644 --- a/packages/shared/src/config/certification-settings.ts +++ b/packages/shared/src/config/certification-settings.ts @@ -366,7 +366,8 @@ export const superBlockToCertMap: { [SuperBlocks.CssGrid]: null, [SuperBlocks.LabProductLandingPage]: null, [SuperBlocks.CssAnimations]: null, - [SuperBlocks.LearnPythonForBeginners]: null + [SuperBlocks.LearnPythonForBeginners]: null, + [SuperBlocks.IntroductionToAlgorithmsAndDataStructures]: null }; export const certificationRequirements: Partial< diff --git a/packages/shared/src/config/curriculum.ts b/packages/shared/src/config/curriculum.ts index a6782735558..0bdd3b3e408 100644 --- a/packages/shared/src/config/curriculum.ts +++ b/packages/shared/src/config/curriculum.ts @@ -65,7 +65,8 @@ export enum SuperBlocks { CssGrid = 'css-grid', LabProductLandingPage = 'lab-product-landing-page', CssAnimations = 'css-animations', - LearnPythonForBeginners = 'learn-python-for-beginners' + LearnPythonForBeginners = 'learn-python-for-beginners', + IntroductionToAlgorithmsAndDataStructures = 'introduction-to-algorithms-and-data-structures' } export const languageSuperBlocks = [ @@ -216,7 +217,8 @@ export const superBlockStages: StageMap = { SuperBlocks.CssGrid, SuperBlocks.LabProductLandingPage, SuperBlocks.CssAnimations, - SuperBlocks.LearnPythonForBeginners + SuperBlocks.LearnPythonForBeginners, + SuperBlocks.IntroductionToAlgorithmsAndDataStructures ] };