-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Comp. Sci. Data Structures and Algorithms Course
Data Structures and Algorithms Course Overview
Below you can find the ordered content of the topic, in a linear progression
The linear progression of content aims to cover all content, course by course, workout by workout as follows:
- first course is the only core one, denoted by its manifest
- the next course is denoted by the first item of the next array in each course manifest
- each course has its order of workouts designated by the sections field in the same aforementioned manifest
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-is-a-data-structure | ✅ | 👶 introduction | ❌ | ❌ | ✅ | ❌ | ❌ |
2 | the-array-data-structure | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
3 | the-linked-list-data-structure | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
4 | the-stack-data-structure | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
5 | the-queue-data-structure | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
2. intro-graphs
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | the-graph-data-structure | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | the-components-of-a-graph | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ❌ | ❌ | ❌ |
3 | the-components-of-a-graph-ii | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | graph-adt | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | the-tree-data-structure | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
6 | node-height-and-depth | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
what-should-it-be-stored-in | fillTheGap | 👶 introduction 💪 workout |
❌ | ❌ |
3. algorithms-i
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | approximating-memory-and-time-required-by-data-types | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | approximation-methods | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | binary-search | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
4 | sieve-of-eratosthenes | ✅ | 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | primality-test | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | the-binary-search-tree-data-structure | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | verifying-a-binary-search-tree | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | inserting-data-into-a-binary-search-tree | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | removing-keys-from-a-binary-search-tree | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | balanced-vs-unbalanced-binary-trees | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
Exercises:
Game:
name | type | aspects | standards | done |
---|---|---|---|---|
oh-that-was-the-answer | tetris | 🦑 deep 💪 workout |
❌ | ❌ |
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | the-heap-data-structure | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | inserting-data-into-a-heap-with-the-upheap-operation | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | removing-data-from-a-heap-with-the-downheap-operation | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | o-logn-operations-for-heaps | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
5 | trie-data-structure | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | tree-traversals | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | depth-first-traversal | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
3 | pre-order-traversal | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | in-order-traversal | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
5 | post-order-traversal | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | reverse-polish-notation | ✅ | 🦑 deep 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ✅ | ❌ |
2 | parsing-reverse-polish-notation | ✅ | 🦑 deep 💪 workout 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | binary-expression-tree | ✅ | 🦑 deep 🔮 obscura |
❌ | ❌ | ✅ | ❌ | ❌ |
4 | exponentiation-by-squaring | ✅ | 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | levenshtein-distance | ✅ | 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | dijkstras-algorithm | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
2 | dijkstras-iteration | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
3 | bellman-ford-algorithm | ✅ | 🦑 deep 💪 workout |
❌ | ❌ | ✅ | ✅ | ❌ |
4 | bellman-ford-iteration | ✅ | 🦑 deep 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | traveling-salesman-problem | ✅ | 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | kruskals-algorithm | ✅ | 🦑 deep 🔮 obscura 💪 workout |
❌ | ❌ | ✅ | ❌ | ❌ |
2 | kruskals-iteration | ✅ | 🦑 deep 🔮 obscura 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | prims-algorithm | ✅ | 🦑 deep 🔮 obscura 💪 workout |
❌ | ❌ | ✅ | ✅ | ❌ |
4 | prims-iteration | ✅ | 🦑 deep 🔮 obscura 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
5 | 0-1-knapsack-problem | ✅ | 🦑 deep 🔮 obscura |
❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ❌ Identify Linked Lists
- ❌ Identify a Stack
- ❌ Identify a Queue
- ❌ Identify Indexable Ordered Sets (arrays, lists)
- ❌ Identify a use case for a Linked List
- ❌ Identify a use case for a Stack
- ❌ Identify a use case for a Queue
- ❌ Identify a use case for a Indexable Ordered Set
- ❌ Identify a Hash Map
- ❌ Identify a Set
- ❌ Identify a use case for a Hash Map
- ❌ Identify a use case for a Set
- ❌ Identify a linked list
- ❌ Identify an arboreal graph
- ❌ Identify a binary tree
- ❌ Identify a red-black tree
- ❌ Identify a graph
- ❌ Define directionality, cyclical, connected, complete, and weighted in reference to properties of graphs
- ❌ Classify diagrams of graphs as having directionality or not, being cyclic or acyclic, connected or not, complete or incomplete, weighted or not
- ❌ Implement a Linked List and use it to solve a problem
- ❌ Implement a Stack and use it to solve a problem
- ❌ Implement a Queue and use it to solve a problem
- ❌ Implement a Indexable Ordered Sets (arrays, skip lists, etc) to solve a problem
- ❌ Implement a Hash Map and use it to solve a problem
- ❌ Implement a Set and use it to solve a problem
- ❌ Implement a Tree
- ❌ Use a tree appropriately to solve a problem
- ❌ Implement a binary tree
- ❌ Use a binary tree appropriately to solve a problem
- ❌ Implement a red-black tree
- ❌ Use a red-black tree appropriately to solve a problem
- ❌ Implement a graph data structure
- ❌ Write an algorithm to identify if a graph is cyclic
- ❌ Write an algorithm to identify if a graph is complete
- ❌ Implement and Use a directed graph appropriately to solve a problem
- ❌ Implement and Use an undirected graph appropriately to solve a problem
- ❌ Implement and Use a weighted graph appropriately to solve a problem
- ❌ Accurately describe the complexity of Array access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Stack access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Queue access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Doubly and Singly Linked List access, search, insertion, and deletion, and contrast the differences
- ❌ Accurately describe the complexity of Hash Table access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Skip List access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Binary Search Tree access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Cartesian Tree access, search, insertion, and deletion
- ❌ Accurately describe the complexity of B-Tree access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Red-Black Tree access, search, insertion, and deletion
- ❌ Accurately describe the complexity of Splay Tree access, search, insertion, and deletion
- ❌ Accurately describe the complexity of AVL Tree access, search, insertion, and deletion
- ❌ Accurately describe the complexity of KD Tree access, search, insertion, and deletion
- ❌ Analyze and accurately predict the complexity of linear searches
- ❌ Analyze and accurately predict the complexity of other searching algorithms
- ❌ Analyze and accurately predict the complexity of sorting algorithms
- ❌ Accurately describe the complexity of Djkistra's
- ❌ Accurately describe the complexity of A*
- ❌ Accurately describe the complexity of Breadth-First-Search
- ❌ Accurately describe the complexity of Depth-First-Search in an arboreal graph
Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.
These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.
For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration
If you are being introduced to the topic for the first time
Insights:
- what-is-a-data-structure
- the-array-data-structure
- the-linked-list-data-structure
- the-stack-data-structure
- the-queue-data-structure
- the-graph-data-structure
- the-components-of-a-graph
- the-components-of-a-graph-ii
- graph-adt
- the-tree-data-structure
- node-height-and-depth
Theory put into practice/that’s how you achieve X points
Insights:
- the-graph-data-structure
- the-components-of-a-graph
- the-components-of-a-graph-ii
- graph-adt
- the-tree-data-structure
- node-height-and-depth
- approximating-memory-and-time-required-by-data-types
- approximation-methods
- binary-search
- primality-test
- the-binary-search-tree-data-structure
- verifying-a-binary-search-tree
- inserting-data-into-a-binary-search-tree
- removing-keys-from-a-binary-search-tree
- balanced-vs-unbalanced-binary-trees
- the-heap-data-structure
- inserting-data-into-a-heap-with-the-upheap-operation
- removing-data-from-a-heap-with-the-downheap-operation
- o-logn-operations-for-heaps
- trie-data-structure
- tree-traversals
- depth-first-traversal
- pre-order-traversal
- in-order-traversal
- post-order-traversal
- reverse-polish-notation
- parsing-reverse-polish-notation
- dijkstras-algorithm
- dijkstras-iteration
- bellman-ford-algorithm
- bellman-ford-iteration
- kruskals-algorithm
- kruskals-iteration
- prims-algorithm
- prims-iteration
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- approximating-memory-and-time-required-by-data-types
- approximation-methods
- binary-search
- sieve-of-eratosthenes
- primality-test
- the-binary-search-tree-data-structure
- verifying-a-binary-search-tree
- inserting-data-into-a-binary-search-tree
- removing-keys-from-a-binary-search-tree
- balanced-vs-unbalanced-binary-trees
- the-heap-data-structure
- inserting-data-into-a-heap-with-the-upheap-operation
- removing-data-from-a-heap-with-the-downheap-operation
- o-logn-operations-for-heaps
- trie-data-structure
- tree-traversals
- depth-first-traversal
- pre-order-traversal
- in-order-traversal
- post-order-traversal
- reverse-polish-notation
- parsing-reverse-polish-notation
- binary-expression-tree
- exponentiation-by-squaring
- levenshtein-distance
- dijkstras-algorithm
- dijkstras-iteration
- bellman-ford-algorithm
- bellman-ford-iteration
- traveling-salesman-problem
- kruskals-algorithm
- kruskals-iteration
- prims-algorithm
- prims-iteration
- 0-1-knapsack-problem
Recently added/gained traction feature
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
- sieve-of-eratosthenes
- reverse-polish-notation
- parsing-reverse-polish-notation
- binary-expression-tree
- exponentiation-by-squaring
- levenshtein-distance
- traveling-salesman-problem
- kruskals-algorithm
- kruskals-iteration
- prims-algorithm
- prims-iteration
- 0-1-knapsack-problem
✅ All content has been tagged with aspects.
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: