About the Course
The goal of this essential course is to familiarize/re-familiarize students with common data structures, algorithms, complexity analyses and algorithm design techniques.
Duration
Approximately 80 hours with 4 hours per week online class. Some hours will be used for interview preparation.
Assignment Submission
Students will submit assignments to demonstrate learning on a regular basis. Full support provided for completing assignments.
For information regarding fee and course delivery, please write to us at:
0. Introduction
Problems and Solutions
Data Structures and Algorithms
Time and Space Complexity
Asymptotic Notation
Records or Structures
Arrays, 1D, 2D, Jagged and Multi-Dimensional Arrays
1. Searching and Sorting
Linear vs Binary Search
Advantages and Disadvantages of Recursion vs Iteration
Factorial, Fibonacci Numbers, GCD Algorithm, Binary Search
Bubble sort, Selection sort
Insertion sort, Stable vs Unstable sorting
Merge sort
Quick sort
Counting sort, Radix sort, Bucket sort
2. Lists, Stacks and Queues
Singly Linked Lists, insert and print
Singly Linked Lists: search and delete
Abstract Data Types, List as an ADT
Stacks and Queues as ADTs
Array Implementations of Stacks and Queues
Linked List Implementations of Stacks and Queues
Applications of Stacks
Applications of Queues
3. Trees and their applications
Tree Representations and Traversal Algorithms
Binary Tree Representation and Traversal Algorithms
BT construction from inorder and pre/postorder
BT problems
Binary Search Trees (BST)
BST insert and search
BST delete
Problems on BST
Height Balancing Schemes, AVL
Red-Black Trees
B-Trees and B+-Trees
4. Hashing
Hash tables and hash functions
Open addressing, separate chaining, rehashing
Sets and their implementation
Disjoint sets and UNION-FIND
Dictionary and Trie
5. Graphs and their applications
Directed and Undirected Graphs, Adjacency Matrix
Adjacency Lists
DFS, BFS
Detecting Cycles
Topological sort
All pairs shortest paths
Single source shortest paths – Dijkstra
Single source shortest paths – Bellman-Ford
Connected Components
Minimum cost spanning tree - Prim
Minimum cost spanning tree – Kruskal
6. Algorithm Design Techniques
Divide and Conquer 1
Divide and Conquer 2
Divide and Conquer 3
Greedy 1
Greedy 2
Greedy 3
Dynamic Programming 1
Dynamic Programming 2
Dynamic Programming 3
Dynamic Programming 4
Dynamic Programming 5
Pattern Matching: Naïve, Boyer-Moore
Pattern Matching: KMP
Pattern Matching: Rabin=Karp
FFT and Polynomial Multiplication