frmCourseSyllabusIPDownload
frmCourseSyllabusIPDownload
CO1 :: explain the process to find efficiency of algorithms using asymptotic notations.
Unit I
Asymptotic Analysis (Big-O notation) : Introduction to asymptotic notations, Basics of Big-O
notation, Definition of Big-O notation, Measuring efficiency of algorithms, Time and space complexity
analysis of recursive programs
Sqrt(n) Primality Testing : O(sqrt(n)) algorithm for finding whether a number is a prime,
Factorization of a number, Finding prime factors by taking the square root, Fermat method, Sieve of
Eratosthenes, Segmented Sieve, Sieve of Atkins
Basic Recursion : Introduction to recursion: base condition in recursion, How a particular problem is
solved using recursion, Difference between direct and indirect recursion, Difference between tailed
and non-tailed recursion, How memory is allocated to different function calls in recursion, Advantages
& disadvantages of recursive programming, Backtracking, Memoization & Dynamic Programming
Basic Dynamic Programming : Introduction to Dynamic Programming, Dynamic Programming
process, Tiling problem, Tabulation vs Memoizatation, Optimal Substructure Property, Overlapping
Subproblems Property, How to solve a Dynamic Programming Problem
Dynamic Programming Problems : Longest increasing subsequence, Longest common
subsequence, Binomial coefficient, Box Stacking, Integer Knapsack Problem (Duplicate Items
Forbidden), Edit Distance, Balanced Partition
O(n logn) Sorting : Iterative MergeSort, Recursive MergeSort, QuickSort, CountingSort, Sorting
Elements by Frequency, Sort Array in Wave Form, Finding Minimum Length Sorted Sub-array to Sort
an Array, Sorting Strings, Count Distinct Pairs with Difference of K
Text Books:
1. CRACKING THE CODING INTERVIEW by GAYLE LAAKMANN MCDOWELL, CAREERCUP
References:
1. PROGRAMMING PEARLS by JOE BENTLEY, PEARSON