1.Importance of Problem Solving

  • Understanding the problem solving approach
  • Understanding the algorithm design for a problemCharacteristics of Webservices
  • Understanding the algorithm analysis
  • Understanding Asymptotic analysis & O,Ω,Θ notations
  • Practical Examples
2. Array and Vector

  • Understanding the concept of Vector
  • Discussion of Vector implementation techniques
  • Understanding Amortized Analysis
  • Discussion on better algorithms for following problems, analysis & coding
    • Generating Magic Square
    • Generating Minesweeper Game
    • Printing Array Spirally
  • Assignment Problems
3. Stack & Queue

  • Understanding Stack & Queue
  • Practical Significance of Stack & Queue
  • Discussion on implementation choices
  • Discussion on better algorithms for following problems, analysis & coding
    • Infix to postfix conversion
    • Evaluation of postfix Expression
    • Balancing of Symbols
    • Stack with Single Queue
    • Queue with two Stacks
  • Assignment Problems
4. Linked List

  • Understanding Linked Lists
  • Practical Significance of LinkedList
  • Discussion on implementation choices of LinkedList
  • Discussion on better algorithms for following problems, analysis & coding
    • Reversing of single linked list
    • Implementing Josephus problem
    • Duplicate removal in a linked list
    • Finding middle of the linked list
    • Finding common node in two corrupted lists
    • Sorting of linked list
    • Finding K-th node from the end of the linked list
    • Detecting & Removing loop in Single linked list
  • Assignment Problem
5.Priority Queue

  • Understanding Priority Queue
  • Practical Significance of Priority Queue
  • Discussion on implementation techniques of Priority Queue
  • Implementation of priority queue using Heap
  • Discussion on better algorithms for following problems, analysis & coding
    • File Merging
    • Merging k-sorted lists into a single sorted list
    • Finding K closest points to origin in 2-d space
  • Assignment Problems
6. Binary Tree

  • Understanding Binary Trees
  • Practical Significance of Binary Trees
  • Discussion on implementation techniques of BinaryTrees
  • Discussion on better algorithms for following problems, analysis & coding
    • Recursive traversals of Binary Tree (Inorder, Preorder, Postorder)
    • Non Recursion traversals of Binary Tree(Inorder, Preorder, Postorder)
    • Implementation of level order Traversal
    • Generating mirror image of a tree
    • Finding the count of leaf nodes and internal nodes
    • Construction of binary tree from preorder and inorder traversals
    • Stack or Queue less Traversals
  • Assignment Problems
7. Binary Search Tree & Balanced Search Tree(AVL/RB)

  • Understanding Binary Search Trees & Balanced Search Trees
  • Practical Significance of Balanced Search Trees
  • Implementation of Balanced Search Tree Operations
  • Discussion on better algorithms for following problems, analysis & coding
    • Finding LCA (Least Common Ancestor) in BST
    • Searching a word in online dictionary
  • Assignment Problems
8. Hash Table

  • Understanding Hash Table
  • Practical Significance of Hash Table
  • Implementation of Hash Table using array of linked lists
  • Discussion on better algorithms for following problems, analysis & coding
    • Finding First Repeated and Non Repeated element
    • Finding most frequent Words in a file
    • Finding number of anagram classes among group of words available in file
  • Assignment Problems
9. Tries & Patricia Tries

  • Understanding the concept of Tries
  • Practical Applications of Tries
  • Designing better algorithms for following problems, analysis & coding
    • Implementation of Set & Map using Tries
    • Implementation of Phone Book
    • Implementation of T9 Input Mode in Mobiles
    • Spell Checker
  • Assignment Problems
10. Ternary Search Trees

  • Understanding the concept of TST
  • Practical importance of TST
  • Designing better algorithms for following problems, analysis & coding
    • Implementation of Set & Map using TST
    • Implementation of Phone Bok
  • Assignment Problems
11. Sorting Techniques

  • Understanding the importance of sorting in programming
  • Understanding the ideas behind following Comparison based sorting techniques
    • Selection sort, Bubble sort, Insertion sort, Shell sort
    • Quick sort, Merge sort, Heap sort
  • Understanding the ideas behind following Non-Comparison based sorting techniques
    • Counting sort
    • Radix sort
  • Designing better algorithms for following problems, analysis & coding
    • 2-Sum problem
    • 3- sum problem
  • Assignment Problems
12.Searching techniques

  • Understanding the importance of searching in programming
  • Understand the ideas behind following search techniques
    • Linear search
    • Binary search
    • Interpolation search
  • Designing better algorithms for following problems, analysis & coding
    • Identity problem
    • Searching an element in an array of unknown size
    • Finding an element in a bi-tonic array
  • Assignment Problems
13. Recursion

  • Understanding the concept of Recursion & Activation Record
  • RecursionTree
  • Designing better algorithms for following problems, analysis & coding
    • Towers of Hanoi
    • Variations on Towers of Hanoi
    • Finding Power & GCD
    • Maze problems
  • Assignment Problems
14. Divide and Conquer Algorithms

  • Understanding the concept of Divide & Conquer
  • Forming D&C relations and Solving them
  • Designing better algorithms for following problems, analysis & coding
    • Quick sort
    • Merge sort
    • Strassen’s Matrix Multiplication Algorithm
  • Assignment Problems
15. Greedy Algorithms

  • Understanding the concept of Greedy Method
  • Designing better algorithms for following problems, analysis & coding
    • Compression of textual data
    • Interval coloring
    • FActivity selection problem
    • Scheduling with deadlines
    • Fractional knapsack problem
    • Shortest job first
  • Assignment Problems
16. Dynamic programming

  • Understanding the concept of Dynamic programming
  • Designing better algorithms for following problems, analysis & coding
    • Finding Nth Fibonacci number
    • Finding maximum contiguous subsequence sum
    • Finding Largest common sub sequence
    • Coin changing problem
    • 0/1 Knapsack problem
    • Subset sum problem
    • Matrix Chain Multiplication problem
  • Assignment Problems
17. Back Tracking

  • Understanding the concept of Back-tracking
  • Designing better algorithms for following problems, analysis & coding
    • Generating Binary Sequences
    • Generating all possible combinations of input array
    • Generating permutations
    • Eight queues problem
    • Knights tour problem
  • Assignment Problems
18. Graphs

  • Understanding the concept of Graphs
  • Practical importance of Graphs
  • Standard Graph algorithms & their applications to reality
    • Traversal algorithms(BFS and DFS)
    • Connected components, Articulation points & Bridges
    • Minimum Spanning tree algorithms (prim’s and kruskal’s)
    • Shortest path algorithms
      • Dijkstra’s algorithm
      • Bellman Ford’s algorithm
      • Floyd-Warshall’s algorithm
  • Assignment Problems
19. Suffix Array, Suffix Tree & String Algorithms

  • Understanding the concept of Suffix Array & Tree
  • Practical Applications of Suffix Array & Tree
  • Designing better algorithms for following problems, analysis & coding
    • Finding the length of longest repeated substring
    • Pattern Matching
    • Finding the length of longest repeated substring in a given string
  • Assignment Problems
20. BitArray & Bloom Filter

  • Understanding the concept Bit Array, Bloom Filter
  • Practical importance of Bit Arrays & Bloom Filters
  • Assignment Problems