2. How to solve a problem with computer machine & expressing solutions to machines |

Understanding the problem solving approach with an example
Meaning of an algorithm & need of programming languages to talk to machines
Understanding the algorithmic design & analysis
Understanding Asymptotic analysis & O,Ω,Θ notations
Code Examples |

4. DataStructure design |

Step1: Gathering requirements and tranform it into ADT/API
Step2: Selecting the programming style: Procedural/Object-oriented style
Step3: Implementation of API
Practical illustration of "List" datastructure design
List design using Procedual style(C)
List design using Object oriented style(C++/Java)
Illustration of OO concepts with design: Object, Class, Encapsulation, Polymorphism, Dynamic binding, Inheritance |

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

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

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

12. 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 Book
Assignment Problems |

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

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

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

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

22. BitArray & Bloom Filter |

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 |

24. Serialization of In-memory objects |

Understanding the need of serialization & deserialization
Serialization of ArrayList, LinkedList, HashSet, TreeSet, Trie, BitSet, BloomFilter&BinaryTree objects
Assignment Problems |