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
Understanding the problem solving approach
Understanding the algorithm design for a
problemCharacteristics of Webservices
Understanding the algorithm analysis
Understanding Asymptotic analysis & O,,
notations
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
Practical Examples
Generating Minesweeper Game
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 better algorithms for following
problems, analysis & coding
Infix to postfix conversion
Discussion on implementation choices of
LinkedList
Discussion on better algorithms for following
problems, analysis & coding
Reversing of single linked list
Evaluation of postfix Expression
Implementing Josephus problem
Balancing of Symbols
Duplicate removal in a linked list
Stack with Single Queue
Finding middle of the linked list
Queue with two Stacks
Assignment Problems
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 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
Discussion on implementation techniques of
BinaryTrees
Implementation of priority queue using Heap
Discussion on better algorithms for following
problems, analysis & coding
Discussion on better algorithms for following
problems, analysis & coding
File Merging
Merging k-sorted lists into a single sorted
list
Recursive traversals of Binary Tree
(Inorder, Preorder, Postorder)
Non Recursion traversals of Binary
Tree(Inorder, Preorder, Postorder)
Implementation of level order Traversal
Finding K closest points to origin in 2-d
Generating mirror image of a tree
space
Finding the count of leaf nodes and
Assignment Problems
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
Copyright Protected 2010-2013 Ravindra
8. Hash Table
Understanding Hash Table
Practical Significance of Hash Table
PROGRAMMING & ALGORITHMS
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
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
BST
Searching a word in online dictionary
Assignment Problems
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
Implementation of Set & Map using Tries
Implementation of Set & Map using TST
Implementation of Phone Book
Implementation of Phone Bok
Implementation of T9 Input Mode in
Assignment Problems
Mobiles
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
Selection sort, Bubble sort, Insertion sort,
Linear search
Shell sort
Binary search
Quick sort, Merge sort, Heap sort
Understanding the ideas behind following NonComparison based sorting techniques
Interpolation search
Designing better algorithms for following problems,
analysis & coding
Counting sort
Identity problem
Radix sort
Designing better algorithms for following problems,
analysis & coding
2-Sum problem
Searching an element in an array of
unknown size
Finding an element in a bi-tonic array
Assignment Problems
3- sum problem
Assignment Problems
13. Recursion
Understanding the concept of Recursion &
Copyright Protected 2010-2013 Ravindra
14. Divide and Conquer Algorithms
PROGRAMMING & ALGORITHMS
Understanding the concept of Divide & Conquer
Activation Record
RecursionTree
Designing better algorithms for following problems,
analysis & coding
Forming D&C relations and Solving them
Designing better algorithms for following problems,
analysis & coding
Towers of Hanoi
Quick sort
Variations on Towers of Hanoi
Merge sort
Finding Power & GCD
Strassens Matrix Multiplication Algorithm
Maze problems
Assignment Problems
Assignment Problems
15. Greedy Algorithms
Understanding the concept of Greedy Method
Designing better algorithms for following problems,
analysis & coding
Compression of textual data
16. Dynamic programming
Understanding the concept of Dynamic
programming
Designing better algorithms for following problems,
analysis & coding
Finding Nth Fibonacci number
Interval coloring
FActivity selection problem
Scheduling with deadlines
Finding maximum contiguous
subsequence sum
Finding Largest common sub sequence
Fractional knapsack problem
Coin changing problem
Shortest job first
0/1 Knapsack problem
Assignment Problems
Subset sum problem
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
Generating Binary Sequences
Practical importance of Graphs
Standard Graph algorithms & their applications to
reality
Generating all possible combinations of
Traversal algorithms(BFS and DFS)
input array
Connected components, Articulation
Generating permutations
points & Bridges
Eight queues problem
Minimum Spanning tree algorithms
(prims and kruskals)
Knights tour problem
Assignment Problems
Shortest path algorithms
Dijkstras algorithm
Bellman Fords algorithm
Floyd-Warshalls algorithm
Assignment Problems
Copyright Protected 2010-2013 Ravindra
PROGRAMMING & ALGORITHMS
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
Finding the length of longest repeated
substring
Pattern Matching
Finding the length of longest repeated
substring in a given string
Assignment Problems
Copyright Protected 2010-2013 Ravindra
Assignment Problems