Solving computational problems that involve manipulating collections of data, study a core set of data abstractions, data structures, and algorithms that provide a foundation for writing efficient programs.