DATA STRUCTURES AND ALGORITHMS
Instructor: Elizer Ponio Jr
Email: [email protected]
Consultation Hours: Send me a message in MS Teams 🙂
This course focuses on the use of data structures and algorithms for solving computing and real-life problems efficiently. This course covers the following data structures: dynamic arrays, lists, stacks, queues, trees, graphs, and maps. Analysis of time and space complexity of algorithmic solutions will also be covered.
By the end of the class students should be able to:
| Topic | Mode of Delivery | Readings/Videos | Events | |
|---|---|---|---|---|
| Week 1 | Orientation on National University VMGs, Core Values, GAINs and Class Policies | |||
| Course Syllabus |
What are data structures?
What is an algorithm?
Basic data structures
Why learn DSA?
Array
Search Algorithms
Introduction to Big O Notation and Time Complexity | | Linear Search: https://www.youtube.com/watch?v=246V51AWwZM&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=10
Binary Search: https://www.youtube.com/watch?v=xrMppTpoqdw&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=10
Get Started with Google Collab: https://www.youtube.com/watch?v=inN8seMm7UI
GitHub: https://github.com/robitussin/CCDATRCL/tree/main/1 - Introduction to Data Structures
Video resource about Big O Notation: https://www.youtube.com/watch?v=XMUe3zFhM5c&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=8 | | | Week 2 | Linked-list
Linked-list operations
Linked-list traversal | | Online resource: https://www.programiz.com/dsa/linked-list
Video resource about Linked Lists: https://www.youtube.com/watch?v=WwfhLC16bis&list=PLBZBJbE_rGRV8D7XZ08LK6z-4zPoWzu5H&index=5
GitHub: https://github.com/robitussin/CCDATRCL/tree/main/2 - Linked List | Exercise #1 | | Week 3 | Stack definition
Stack Application
Stack implementation using an array
Stack implementation using a linked-list | | Online Resource: Intro to Stacks https://www.programiz.com/dsa/stack
Video Resource: Intro to Stacks ****https://www.youtube.com/watch?v=I37kGX-nZEI&list=PLBlnK6fEyqRj9lld8sWIUNwlKfdUoPd1Y&index=106
Array Implementation of Stack https://www.youtube.com/watch?v=rS-ZKTqwi90&list=PLBlnK6fEyqRj9lld8sWIUNwlKfdUoPd1Y&index=107
Linked List Implementation of Stack https://www.youtube.com/watch?v=0-kkDfCOXOI&list=PLBlnK6fEyqRj9lld8sWIUNwlKfdUoPd1Y&index=119
GitHub: | Exercise #2 | | Week 4 | Queue definition
Queue Application
Queue implementation using a circular array
Queue implementation using a linked-list | | Online Resource: https://www.programiz.com/dsa/queue | Exercise #3 | | Week 5 | Sorting Algorithms
Bubble Sort
Selection Sort
Insertion Sort
Merge Sort
Quick Sort
Computational Complexity
Time and Space Complexity
Time and Space Complexity of each sorting algorithms | | Bubble Sort: https://www.youtube.com/watch?v=Dv4qLJcxus8&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=13
Selection Sort: https://www.youtube.com/watch?v=EwjnF7rFLns&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=14
Insertion Sort: https://www.youtube.com/watch?v=8mJ-OhcfpYg&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=15
Merge Sort: https://www.youtube.com/watch?v=3j0SWDX4AtU&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=17
Quick Sort: https://www.youtube.com/watch?v=Vtckgz38QHs&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=18
Time Complexity: https://towardsdatascience.com/understanding-time-complexity-with-python-examples-2bda6e8158a7 | Exercise #4 | | Week 6 | Hash-table
Hash-table operations
Open Hashing
Closed Hashing | | Online Resource: https://www.programiz.com/dsa/hash-table | Long Exam #1 | | Week 7 | Tree
Binary tree representation of expressions
Binary traversal
Binary search trees
Heap | | Online Resource: Tree: https://www.programiz.com/dsa/trees
Tree Traversal: https://www.programiz.com/dsa/tree-traversal
Binary tree representation of expressions: :https://medium.com/0xcode/representing-algorithms-using-a-binary-expression-tree-bet-4536a5c7c3af
| Exercise #5 and Exercise #6 | | Week 8 | Binary search trees
Heap | | Binary Search Tree: https://www.programiz.com/dsa/binary-search-tree
Heap: https://www.programiz.com/dsa/heap-data-structure | Exercise #7 | | Week 9 | Graph Definition
Graph Applications
Graph Representation
Graph Traversal
+GitHub Resource: https://github.com/robitussin/CCDATRCL/tree/main/week_10
Video Resource: Graph: https://www.youtube.com/watch?v=-VgHk7UMPP4&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=19&pp=iAQB
Depth First Search: https://www.youtube.com/watch?v=pcKY4hjDrxk&t=938s
Breadth First Search: https://www.youtube.com/watch?v=7Cox-J7onXw&list=PLZPZq0r_RZON1eaqfafTnEexRzuHbfZX8&index=24 | | | Week 10 | Spanning Tree
Minimum Spanning Tree
Prim’s and Kruskal’s Algorithm | | Spanning Tree, MST, Prim’s and Kruskal’s Algorithm: https://www.youtube.com/watch?v=4ZlRH0eK-qQ&t=645s
| | | Week 11 | Dijkstra’s Algorithm | | Dijkstra’s Algorithm: https://www.youtube.com/watch?v=XB4MIexjvY0&t=712sB | | | Week 12 | | | | | | Week 13 | Course Project Submission | | | |
Think of any real-world use case applications of data structures that we have covered this term.