feat(curriculum): adding dsa course to catalog (#65870)

Co-authored-by: majestic-owl448 <26656284+majestic-owl448@users.noreply.github.com>
This commit is contained in:
Jessica Wilkins
2026-02-24 09:03:23 -08:00
committed by GitHub
parent f8abe08af8
commit 62cb6671ac
74 changed files with 2407 additions and 5 deletions
+74
View File
@@ -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": [
@@ -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"
}
}
}
+1
View File
@@ -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,
@@ -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.
@@ -46,6 +46,7 @@
}
.block-label-javascript,
.block-label-computer-science,
.block-label-review {
border-color: var(--purple-color);
color: var(--purple-color);
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+1
View File
@@ -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',
+2
View File
@@ -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,
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
@@ -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"
}
]
}
+1
View File
@@ -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",
@@ -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"
]
}
+8 -1
View File
@@ -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
}
];
@@ -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<
+4 -2
View File
@@ -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
]
};