Compsci 201: Data Structures and Algorithms

Basic Information


In this course, you will learn how to analyze, use, and design data structures and algorithms in an object-oriented language (Java) to solve computational problems. Emphasis on abstraction including interfaces and abstract data types for lists, trees, sets, tables/maps, and graphs. Implementation and evaluation of programming techniques including recursion. Intuitive and rigorous analysis of algorithms.

Course Goals

At the end of the course, students should be able to:

  • Given a problem statement & a real data source, design, develop, debug, and test a Java program that uses appropriate standard libraries to efficiently solve the problem.
  • Write programs that effectively implement and use data structures such as: arrays, maps, linked lists, stacks, queues, trees, and graphs.
  • Evaluate the time and space complexity of iterative and recursively-defined algorithms using empirical and mathematical analysis.


You should have introductory programming experience at the level of Computer Science 101, Engineering 103L, or equivalent. Prior experience specifically with the Java programming language is helpful but not necessary.