This workshop provides a platform to improve your problem solving

advertisement
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
Download