Computer Science Course Information
Back to CS Home Page

Computer Science Course Information

Level >Graduate >FALL_2005 >List >

Data Structures & Algorithms

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
  • Office Room No. : GITC 4413
  • Office Phone : 973-596-3369
  • Fax : 973-596-5777
  • Email :
  • Website:
  • Lab : N/A
  • 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
    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
    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
    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.

    Registrar's Website