Core Algorithms Courseware
Basics
Defining the problem- Input
- Output
- Constraints
Understanding the problem domain
- Understand the data type
- Understand the storage & processor
- Data Sources
Algorithms Strategies
- Brute Force
- Iterative and Conquer
- Transform and Conquer
- Backtracking
- Recurrence Relation
- Divide and Conquer
- Greedy Method – Heuristic
- Dynamic Programming
Algorithms – Time & Space Complexity
- Time Complexity – It is complex!
- How do you measure time taken by a program?
- How do you formulate generic time measures?
- Logarithms – An understanding.
- Examples
Data Structures – Organize Your Data
- Arrays, Stack, Queues
- List
- Trees
- Graphs
Sorting & Searching
Search without sorting Sorting techniques- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Linear Search
- Binary Search
Programs
20 sessions each ~90 minutesSum of Integers | Finding a loop in a list | Quick Sort |
---|---|---|
Fibonacci Series | Stacks – CRUD | Linear Search |
Palindrome | Queue – CRUD | Binary Search |
Anagram | Simple Sort | Trees – CRUD |
Linked List CRUD operations | s Insertion Sort | Graphs – BFS |
Doubly Linked List CRUD | Merge Sort | Graphs – DFS |
Problems Solved
20 sessions each ~90 minutesRegular Expression Matching | Sudoku solutio |
---|---|
Balanced Binary Tree | Heap sort |
Spanning Tree | Radix sort |
Prim’s MST | Multi string search |
Kruskal’s MST | Flatten binary tree |
Kth Largest element in a BST | Knuth-Morris-Pratt Algorithms |
n-queens problem | A* algorithm |
Longest SubString | Two-Edge connected graph |
Three/Four Number Sum | Linked list palindrome |
Cycle in a graph | Bridge Edge |
Search sorted matrix | Alien Dictionary |
Suffix Trie construction | Word search |
Longest common subsequence | Reserved |
Knapsack problem | Reserved |
Dijkstra’s Algorithms | Reserved |
Topological sort | Reserved |
Artifacts to have handy during the class:
- Notebook and Pen
- Java IDE or Your Fav Language IDE like Python IDE or C++ IDE