CS 610 syllabus

advertisement
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)
Download