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