Course Outline
? Day 1: Fundamental Data Structures
Session 1: Introduction to Data Structures & Algorithm Complexity
- Importance of data structures in programming
- Big O notation, time and space complexity
- Analyzing algorithm efficiency
Session 2: Arrays and Linked Lists
- Arrays: implementation, operations, and JavaScript specifics
- Singly and doubly linked lists: concepts and coding
- Common problems: reversing, detecting cycles
Session 3: Stacks and Queues
- Stack and queue concepts and use cases
- Implementing stacks and queues in JavaScript
- Applications: expression evaluation, sliding window problems
Lab Activities:
- Implement and manipulate arrays and linked lists
- Build stack and queue data structures
- Solve basic problems using these structures
? Day 2: Trees, Graphs, and Recursion
Session 1: Trees and Binary Trees
- Tree terminology and traversal methods (inorder, preorder, postorder)
- Binary search trees (BST) and operations
- Balanced trees overview (AVL, Red-Black trees concept)
Session 2: Graphs and Graph Traversal
- Graph representations: adjacency list and matrix
- BFS and DFS algorithms explained and coded
- Applications of graph traversal
Session 3: Recursion and Backtracking
- Understanding recursion and call stack
- Recursive solutions for common problems
- Introduction to backtracking with examples
Lab Activities:
- Implement tree traversals and BST operations
- Write BFS and DFS for graph traversal
- Solve recursive problems and simple backtracking puzzles
? Day 3: Sorting, Searching, and Algorithm Design
Session 1: Sorting Algorithms
- Bubble sort, selection sort, insertion sort
- Merge sort and quicksort: divide and conquer strategies
- Comparison and performance analysis
Session 2: Searching Algorithms
- Linear search and binary search
- Search in rotated sorted arrays and string matching basics
- Hashing and hash tables introduction
Session 3: Algorithm Design Techniques
- Greedy algorithms overview
- Dynamic programming fundamentals
- Problem-solving strategies and tips
Lab Activities:
- Implement various sorting algorithms and analyze their efficiency
- Code searching algorithms and hash table usage
- Solve algorithmic challenges using greedy and dynamic programming approaches