### Instructor:

Dr. Narayan GanesanClassroom: Babbio Center(BC) 304.

Contact: nganesan@stevens.edu.

Tu: 3:00-5:30p

Classroom: Babbio Center(BC) 304.

Contact: nganesan@stevens.edu.

Tu: 3:00-5:30p

- This course will introduce and familiarize the students with data structures and algorithms for solving real problems that arise frequently in a variety of practical applications.
- Principles and techniques of computational complexity.
- Design and analyze new algorithms, via dynamic programming, greedy strategy, approximation methods

Knowledge of C++ programming and CPE 360

OR

an equivalent undergraduate-level course of data structures and algorithms

- Methods for expressing and comparing complexity of algorithms: worst and average cases lower bounds on algorithm classes, verification of correctness
- Application of such analysis to sorting: heap sort, merge sort, bubble sort, quick sort, shell sort, insertion sort, radix sorting
- Elementary data structures: arrays, stacks, queues, linked lists, heaps, trees, hashing
- Advanced data structures: binary search trees, B-trees, AVL trees, binomial heaps, Fibonacci heaps
- Graph algorithms: breadth-first search, depth-first search, minimum spanning trees, single-source shortest paths
- NP-complete and NP-hard problems
- Algorithm design: greedy algorithms, dynamic programming, divide and conquer, approximation algorithms.

Midterm: (20%) There will be one midterm exam.

Final Exam: (25%) There will be a final exam. The final exam is comprehensive.

Class Attendance: (5%) It is important to attend lectures and provide course evaluation at the end.

All exams are close book and close notes.

Week1 (08/28): | Review of C++, arrays, pointers, functions, templates, exceptions. Introduction to greedy algorithms | CodeSample1 CodeSample2 CodeSample3 |

Week2 (09/04): | Greedy Algorithms, Performance, lower bounds, Linear Lists, Linked Lists, Matrices and Sparse Matrices | Assignment 1 |

Week3 (09/11): | Stacks, Queues | |

Week4 (09/18): | Priority Queues, Hashing | |

Week5 (09/25): | Sorting, quicksort, radix sort | Assignment 2 |

Week6 (10/02): | Heaps, trees, graphs | |

Week7 (10/09): | No Class | |

Week8 (10/16): | Introduction to Dynamic programming - I | Assignment 3 |

Week9 (10/23): | Dynamic programming - II, complexity analysis, optimal substructure | |

Week10 (10/30): | Midterm Examination | Assignment 4 |

Week11 (11/06): | Algorithmic time-Complexity analysis | |

Week12 (11/13): | Polynomial, NP hard, NP complete | |

Week13 (11/20): | Approximation Algorithms | Assignment 5 |

Week14 (11/27): | Approximation Algorithms II- Adversery Strategies | |

Week15 (12/04): | Final Examination(Tentative Schedule) |