CS 610 Syllabus Spring 2016, Sect 106 Data Structures & Algorithms T 6-9:05, TIER Lect 2 Prof.: David Nassimi Web: http://www.cs.njit.edu/~nassimi/cs610 Email: nassimi@cs.njit.edu Tel: 973-596-5645; Office: GITC 4308 Hours: T 4:00-5:30 pm R 12:30-2:00 pm Dr. David Nassimi TA: TBA Website: Email: Office: TA Hours: Course Description: This is a graduate-level course on data-structures and algorithms, with an emphasis on algorithm design techniques and analysis of algorithms. Ttopics include analysis techniques, worst-case and average-case analysis, induction, recursion, recurrence relations, divide-and-conquer design technique, priority queues, hash tables, binary-search trees, balanced search trees (AVL trees), sorting algorithms; other design techniques such as greedy-method and dynamic-programming, and graph algorithms. Prerequisites: 1. Undergrad course on Data Structures & Algorithms (CS 505 or equivalent); 2. Discrete Math (CS 506 or CS 241 or equivalent); 3. Programming Maturity. Text: Michael Goodrich and Roberto Tamassia, Algorithm Design: Foundations, Analysis, and Internet Examples, Wiley, 2002. ISBN: 0-471-38365-1. (Available at NJIT bookstore) Course Objectives (what you are expected to get out of this course): 1. Learn basic analysis techniques 2. Learn basic design techniques 3. Review of induction and recursion, and proof techniques 4. Learn recurrence equations and how they are used in analysis of algorithms 5. Learn advanced data structures: Priority queues, heaps, hash tables, and search trees 6. Understand sorting algorithms and their complexities 7. Learn basic graph algorithms and their applications Evaluation Exam Dates Assignments (5) 30% Midterm Exam 35% Week 8 Tues March 8 Final 35% Finals week Tues May 10 Notes: Pictured NJIT ID required for all exams. All exams are closed books and closed notes. Average score of all exams must be at least 50% to pass the course. Website: Class handouts (syllabus, assignments), announcements, and previous exams are posted. You are responsible for checking the website regularly for assignments/announcements. Academic Integrity: Familiarize yourself with NJIT Honor Code: http://integrity.njit.edu. Any evidence of dishonesty will be dealt with seriously and reported to the Dean of Students. Policies: 1. Assignments must be done by you individually (no team-work). 2. Assignments must be handed in (HARD COPY) at the start of the class period on the due date. Late assignments will not be accepted. 3. Programming assignments must be in C, C++, or JAVA. CS 610 Course Outline Week (Approx) 1 2 3 Topic Introduction, Analysis Techniques Examples of worst-case and average-case analysis Complexity definitions: O( ), Omega, Theta Reading (Goodrich) Ch. 1 Induction, Recursive Algorithms, Recurrence Relations, Divide-and-Conquer Technique and Recurrences Examples : Binary Search, Mergesort p. 12; Sec. 4.1; Sec. 5.2 Posted Notes Self-Review: Lists, Stacks, Queues, Trees Ch. 2, Sec. 2.1-2.3 4 Advanced Data Structures Priority Queues, Heaps Ch. 2, Sec. 2.4-2.5 5 Sorting and Selection Algorithms Lower-Bound on Sorting by Comparison Insertion-Sort, Bubble-Sort, Selection-Sort Mergesort, Heapsort, Quicksort Integer Sorting: Bucket-Sort, Radix Sort Selection (Kth smallest element) Union-Find Algorithm (if time permits) Ch. 4 7 Dictionary ADT (Search, Insert, Delete) 1 Binary Search Trees (BST); Average Analysis of BST 2 Balanced Search Trees (AVL) 3 Hash Tables Ch. 3 9 Algorithms Design Techniques : Divide-and-Conquer Greedy (Examples: TSP; Huffman Coding) Dynamic Programming (Example: Robot Walk) Ch. 5 10-13 Graph Algorithms Definitions, Representations Traversals Connected Components Single-Source-Shortest-Paths (Dijkstra) All-Pairs-Shortest-Paths (Floyd) MST Algorithms: Prim, Kruskal, Baruvka Ch. 6, 7 14 Text Processing (if time permits) Ch. 9 6 Sect. 4.2 (pp. 225-234) Sect. 9.3 (pp. 440-442)