DATA STRUCTURES AND ALGORITHMS

Instructor: Elizer Ponio Jr

Email: [email protected]

Consultation Hours: Send me a message in MS Teams 🙂

📜 Course Description

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.

🏁 Pre-requisites for this class

🚀 Learning Outcomes

By the end of the class students should be able to:

📅 Course Outline and Timeframe

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 | | | |

🏆 Grading

Programming Exercises (40%)

Long Exams (30%)

Project (30%)

🧪 Project Specifications

Think of any real-world use case applications of data structures that we have covered this term.