Back to CS Home Page |
Computer Science Course Information |
Course No. | CIS 610 |
Sections | 101 |
Title | Data Structures & Algorithms |
Course Website | |
Prerequisite(s) | CIS 335 (Data Structure & Algorithms), or CIS505 or equivalent.
Math 226 (Discrete Math). |
Instructor | Artur Czumaj |
Instructor Office Hours | |
Description | Intensive study of the fundamentals of data structures and algorithms. Presents the definitions, representations, processing algorithms for data structures, general design and analysis techniques for algorithms. Covers a broad variety of data structures, algorithms and their applications including linked lists, various tree organizations, hash tables, strings, storage allocation, algorithms for searching and sorting, and a selected collection of other algorithms. Programs are assigned to give students experience in algorithms, data structure design and implementation. |
Topics | Analysis Techniques
Induction Recursion Recurrence Relations Divide-and-Conquer Technique and Recurrences Basic Data Structures (Self-Review) Linked-Lists, Stacks, Queues, Trees Other Data Structures Priority Queues, Heaps Hash Tables Search Trees Binary-Search-Trees Balanced Search Trees: AVL Trees Other balanced search trees (self-study) Red-Black Trees and B-Trees Sorting Algorithms Integer-Sorting: Bucket-Sort, Radix Sort Basic Sorting Algorithms: Insertion-Sort, Bubble-Sort, Selection Sort, Mergesort, Heapsort, Quicksort, Selection (Kth smallest element) Algorithm Design Techniques Divide-and-Conquer Greedy Method Dynamic Programming Graph Algorithms, Graph Definitions, Graph Represenations, Graph Traversals Connected Components Single-Source-Shortest-Paths Algorithm (Dijkstra) All-Pairs-Shortest-Paths Algorithm Minimum-Cost-Spanning-Tree Algorithms Text Processing Strings and Pattern Matching Algorithms |
Text Book(s) | Algorithm Design: Foundations, Analysis, and Internet Examples by Michael Goodrich and Roberto Tamassia.
Wiley, 2002. |
Time & Place | Tuesdays 6:00 PM - 9:05 PM Kupf 117 |
Other Info | Grading and Policies:
Grading will be based on homework assignments, two large programming assignments, an in-class midterm, and a final. Grading policy: Write Assignments 10%-15% Programming Assignments 25%-30% Midterm 25% Final 35% Programming assignments must be done either in C++ or in Java. You must do all assignments individually. No teamwork. Writing assignments should be submitted a week after being assigned. No late submissions. Programming assignments are for several weeks. Hand in all assignments at the beginning of the class period on the due date. Two large programming assignments, late penalty: 10% per week. The work you turn in must be your own personal work, composed and written by you (unless stated very clearly otherwise). If you discuss a problem with a fellow student, you must mention this clearly in your homework (name the fellow student before the solution of the problem in question). Your work will then be compared to the other student's work to verify that your solution was written by you and reflect your own personal effort. If you don't report it, it will be considered a violation of the course rules, as described in the General Collaboration Policy section. (Collaboration of this kind is not allowed in the midterm and final exams.) Cheating: it is surprisingly easy to detect when students are not doing their own work. Working with others on the assignments does not mean dividing the problems among you, and then swapping the answers. The NJIT Honor Code will be upheld. Any violations will be brought to the immediate attention of the Dean of Students. |