Offered:
Pre-requisite: CSE220
This course addresses the study of efficient algorithms, their analyses and effective algorithm design techniques. Standard algorithm design strategies, such as, Divide and Conquer paradigm, Greedy method, Dynamic programming, Backtracking, Basic search and traversal techniques, Graph algorithms, Elementary parallel algorithms, Algebraic simplification and transformations, Lower bound theory, NP-hard and NP-complete problems are discussed in the course. Examples of data structures and algorithms studied in details are Heaps; Hashing; Graph algorithms: Shortest paths, Depth-first and Breadth-first search, Network flow, Computational geometry, Minimum Spanning Tree; Integer arithmetic: GCD, primality; polynomial and matrix calculations; Sorting; Performance bounds, asymptotic analysis, worst case and average case behavior, correctness and complexity. The course includes a compulsory 3 hour laboratory work every week.
a. Introduce students to time and space complexity of algorithms.
b. Teach students different sorting and searching methods and make them understand which is effective to use.
c. Make them familiar with different problem solving paradigms as described in the course catalog above.
1. Introduction to Algorithms,Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen,2009,3rd edition,The MIT Press,ISBN: 9780262033848
2. Algorithm Design,Eva Tardos and John Kleinberg,(March 26, 2005),1st edition ,Pearson,ISBN-13: 978-0321295354
3. Algorithms,Dasgupta, Vazirani, Papadimitriou,July 2006,1st edition,McGraw Hill,ISBN: 9780073523408
4. Algorithms Illuminated,Tim Roughgarden,2022,1st edition,Cambridge,ISBN: 9780999282984
lecture note + slides, visualgo website for algorithms visualization
# | Description | Weight | Edit |
---|---|---|---|
CO1 |
Demonstrate knowledge, understanding and ability to identify usage of the classical algorithms |
50 |
|
CO2 |
Analyze or Compare accuracy, efficiency and complexity (time, space) of algorithms |
15 |
|
CO3 |
Apply suitable problem solving approaches such as sorting, searching, divide and conquer, graph theory, greedy, dynamic programming to propose solutions to unseen or real world problems |
15 |
|
CO4 |
Convert algorithms into executable computer programs using any preferred programming language |
20 |