PROGRAMMING & ALGORITHMS Overview Any successful software product is always produced with the efforts of team of good software engineers. A good software engineer must possess good problem solving skills. Most of the product companies like Google, Yahoo, Facebook, MicroSoft, Adobe, Rediff, Amazon, Fair Issac, D E Shaw, QualComm, ComVault, Oracle etc..., need software engineers who had excellent problem solving skills. This workshop provides a platform to improve your problem solving skills besides providing strong fundamental knowledge on DataStructues and Algorithms. The workshop focuses more on discussions in the class which allows the participants to come up with new ideas. Objectives Upon successful completion of this workshop, participants will be able to: Enhance Thinking process Crack any product company interview/written tests Think through the solution techniques to any problem Improve the analysis skills of the algorithms generated by themselves/others Find and apply proper data structures for the algorithm implementation Enhance the coding skills to maximum possible level Apply Algorithmic knowledge to real-world Problem Solving Target Audience Any under-graduate/graduate students from Universities, RECs, NITs, IIITs and IITs Self motivated candidates from any college who want to crack big companies Students who already had job offer(s) and aspire to join Big League Students who want in-depth knowledge in Data Structures, Algorithms & Programming Working software professionals who are looking for better opportunities in product based software companies Any passionate student/working professional who wants to understand the fundamentals of computer science which are mandatory for any software developer Prerequisites Passion, Interest. Syllabus 1.Importance of Problem Solving 2. Array and Vector Understanding the problem solving approach Understanding the concept of Vector Understanding the algorithm design for a problemCharacteristics of Webservices Discussion of Vector implementation techniques Understanding Amortized Analysis Understanding the algorithm analysis Understanding Asymptotic analysis & O,Ω,Θ notations Discussion on better algorithms for following problems, analysis & coding Practical Examples o Generating Magic Square o Generating Minesweeper Game o Printing Array Spirally Assignment Problems 3. Stack & Queue Copyright Protected 2010-2013 Ravindra 4. Linked List PROGRAMMING & ALGORITHMS Understanding Stack & Queue Understanding Linked Lists Practical Significance of Stack & Queue Practical Significance of LinkedList Discussion on implementation choices Discussion on implementation choices of LinkedList Discussion on better algorithms for following problems, analysis & coding Discussion on better algorithms for following problems, analysis & coding o Infix to postfix conversion o Reversing of single linked list o Evaluation of postfix Expression o Implementing Josephus problem o Balancing of Symbols o Duplicate removal in a linked list o Stack with Single Queue o Finding middle of the linked list o Queue with two Stacks o Finding common node in two corrupted lists Assignment Problems o Sorting of linked list o Finding K-th node from the end of the linked list o Detecting & Removing loop in Single linked list Assignment Problems 5.Priority Queue 6. Binary Tree Understanding Priority Queue Understanding Binary Trees Practical Significance of Priority Queue Practical Significance of Binary Trees Discussion on implementation techniques of Priority Queue Implementation of priority queue using Heap Discussion on better algorithms for following problems, analysis & coding Discussion on better algorithms for following problems, analysis & coding o Recursive traversals of Binary Tree (Inorder, Preorder, Postorder) o Non Recursion traversals of Binary Tree(Inorder, Preorder, Postorder) o Implementation of level order Traversal o Generating mirror image of a tree o Finding the count of leaf nodes and internal nodes o Construction of binary tree from preorder and inorder traversals o Stack or Queue less Traversals Assignment Problems o File Merging o Merging k-sorted lists into a single sorted list o Finding K closest points to origin in 2-d space 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 Copyright Protected 2010-2013 Ravindra Discussion on implementation techniques of BinaryTrees 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 o Finding First Repeated and Non Repeated element o Finding most frequent Words in a file PROGRAMMING & ALGORITHMS o Finding LCA (Least Common Ancestor) in BST o Searching a word in online dictionary Assignment Problems o Finding number of anagram classes among group of words available in file Assignment Problems 9. Tries & Patricia Tries 10. Ternary Search Trees Understanding the concept of Tries Understanding the concept of TST Practical Applications of Tries Practical importance of TST Designing better algorithms for following problems, analysis & coding Designing better algorithms for following problems, analysis & coding o Implementation of Set & Map using Tries o Implementation of Set & Map using TST o Implementation of Phone Book o Implementation of Phone Bok o Implementation of T9 Input Mode in Mobiles Assignment Problems o Spell Checker Assignment Problems 11. Sorting Techniques 12.Searching techniques Understanding the importance of sorting in programming Understanding the importance of searching in programming Understanding the ideas behind following Comparison based sorting techniques Understand the ideas behind following search techniques o Linear search o Selection sort, Bubble sort, Insertion sort, Shell sort o Binary search o Quick sort, Merge sort, Heap sort o Interpolation search Understanding the ideas behind following Non-Comparison based sorting techniques o Counting sort o Identity problem o Radix sort o Searching an element in an array of unknown size Designing better algorithms for following problems, analysis & coding o Finding an element in a bi-tonic array o 2-Sum problem Assignment Problems o 3- sum problem Assignment Problems 13. Recursion Designing better algorithms for following problems, analysis & coding 14. Divide and Conquer Algorithms Understanding the concept of Recursion & Activation Record Understanding the concept of Divide & Conquer Forming D&C relations and Solving them RecursionTree Designing better algorithms for following problems, analysis & coding Designing better algorithms for following problems, analysis & coding o Quick sort o Towers of Hanoi o Merge sort o Variations on Towers of Hanoi o Strassen’s Matrix Multiplication Algorithm o Finding Power & GCD Assignment Problems o Maze problems Copyright Protected 2010-2013 Ravindra PROGRAMMING & ALGORITHMS Assignment Problems 15. Greedy Algorithms 16. Dynamic programming Understanding the concept of Greedy Method Understanding the concept of Dynamic programming Designing better algorithms for following problems, analysis & coding Designing better algorithms for following problems, analysis & coding o Compression of textual data o Finding Nth Fibonacci number o Interval coloring o Finding maximum contiguous subsequence sum o FActivity selection problem o Finding Largest common sub sequence o Scheduling with deadlines o Coin changing problem o Fractional knapsack problem o 0/1 Knapsack problem o Shortest job first o Subset sum problem Assignment Problems o Matrix Chain Multiplication problem Assignment Problems 17. Back Tracking 18. Graphs Understanding the concept of Back-tracking Understanding the concept of Graphs Designing better algorithms for following problems, analysis & coding Practical importance of Graphs Standard Graph algorithms & their applications to reality o Generating Binary Sequences o Traversal algorithms(BFS and DFS) o Generating all possible combinations of input array o Connected components, Articulation points & Bridges o Generating permutations o Minimum Spanning tree algorithms (prim’s and kruskal’s) o Eight queues problem o Shortest path algorithms o Knights tour problem Dijkstra’s algorithm Assignment Problems Bellman Ford’s algorithm Floyd-Warshall’s algorithm Assignment Problems 19. Suffix Array, Suffix Tree & String Algorithms 20. BitArray & Bloom Filter Understanding the concept of Suffix Array & Tree Understanding the concept Bit Array, Bloom Filter Practical Applications of Suffix Array & Tree Practical importance of Bit Arrays & Bloom Filters Designing better algorithms for following problems, analysis & coding Assignment Problems o Finding the length of longest repeated substring o Pattern Matching o Finding the length of longest repeated substring in a given string Assignment Problems Copyright Protected 2010-2013 Ravindra