20433 Data Structures 1

Credits: 6 intermediate credits in Computer Science

Prerequisites: none

Required: Introduction to Computer Science Using Java 2 (or Fundamentals of Programming with Java), Discrete Mathematics: Set Theory, Combinatorics and Graph Theory 3 (or Mathematics for Students of Social Sciences), Differential and Integral Calculus I 4

Recommended: Introduction to Statistics and Probability for Science Students (or Introduction to Statistics for Students of Social Sciences I or Probability for Computer Science Students) 5

The course is based on a translation of the first 18 chapters of Introduction to Algorithms, by T.H. Cormen, C.E. Leiserson, and R.L. Rivest (MIT Press, 1990).

The course deals with two closely related topics: algorithms and data structures.

Topics: Mathematical foundations – asymptotic notation, recurrences; Sorts – Heapsort, Quicksort, sorting in linear time; Elementary data structures; Hash tables; Binary search trees; AVL trees, Greedy algorithms.


1There is some overlap in the content of this and other courses. For details, see Overlapping Courses.

2or both Introduction to Computer Science Using Java I (20453) and Introduction to Computer Science Using Java II (20454). Students are advised to take Data Structures (20433) soon after taking the introductory course.

3or Discrete Mathematics: Set Theory, Combinatorics and Logic (20283), which is no longer offered.

4or Calculus for Students of Economics and Management (10142) for students taking the program in Economics and Computer Science – Systems and Applications.

5This requires some mathematical sophistication, acquired by taking other courses in Mathematics.