COMPSCI 355

Data structures are organized containers of information designed for efficient access or updates. This course provides a comprehensive introduction to the design, analysis, and implementation of non-linear data structures and algorithms that operate on them. The concepts are language-independent but we use C++ for implementations.

Upon successful completion of the course, students will be able to:

- determine the asymptotic complexity of algorithms and the trade-offs implicit in different implementations.
- specify abstract data types and implement them as C++ template classes.
- choose correctly among different algorithms and data structures for a given problem.
- analyze and implement standard sorting, tree balancing, and graph algorithms.
- solve problems using recursive backtracking and dynamic programming.

Topics include asymptotic analysis, binary trees, sorting, search trees, graph algorithms, dynamic programming, and NP-completeness.

Drue Coles

Mathematical and Digital Sciences

Bloomsburg University of Pennsylvania