Course Number / Section:

CIS 3223 / 001 and CIS 5501 / 001 (courses are cross-listed)

Course Name:

Algorithms and Data Structures and Program and Data Structure


Paul Wolfgang


Wachman Hall, Room 1041.




Course Web Page:


Website for Complete Syllabus:


Grade of C or better in C+IN SC 2166 (0166) or Mathematics 3098 (W205) and C+IN SC 2168 (0068); Grade of C or better in Mathematics 1042 (0086).


Dasgupta, Papadimitriou, & Vazirani. ‘Algorithms’. McGraw-Hill, 2008
Koffman & Wolfgang. ‘Objects, Abstraction, Data Structures and Design using Java’. John Wiley & Sons, 2005
Recommended: Cormen, Leiserson, Rivest, & Stein. ‘Introduction to Algorithms’, 2nd ed. MIT Press, 2001

Course Goals;

Program style organization and design with continued emphasis on the use of abstract data types and the object-oriented design paradigm. Comparative analysis of algorithms and data structures. Data structures include heaps, priority queues, binary and general trees, binary search trees, AVL trees, B-trees, and graphs. Algorithms include heapsort, topological sort, breadth-first search, depth-first search, shortest path algorithms, and Huffman coding.

Topics Covered:

Algorithm Analysis and Correctness, Algorithms with Numbers, Divide-and-Conquer Algorithms, Self-Adjusting Binary Search Trees, Graph Algorithms, Greedy Algorithms, Dynamic Programming, Network Flow and Linear Programming, NP-Complete Problems.

Attendance Policy:

Regular attendance is encouraged. Some material will be presented during lectures that is not included in the Text.  Homework assignments will not be accepted late. If you are absent on the day an assignment is due, you must make arrangements to have it delivered before class starts.