# Course Description for CSC 162: The Art of Data Structures

## Spring 2010

Modern programming revolves around the creation of *abstractions*
or, more specifically *abstract data types* (ADTs).
An ADT describes a collection of information in terms of the operations
that one can perform upon it, and how those operations behave.
A *data structure* is a concrete way of organizing the information
inside a computer.
An *algorithm* is a series of steps that the computer performs on
the data structure (or set of data structures) to accomplish a desired
operation.

In a nutshell, that’s what CSC 162 is about: *abstract data
types*, *data structures*, and *algorithms*.

Abstractions we’ll consider include

- lists, stacks, queues, and deques
- sets and dictionaries (mappings)
- priority queues
- trees and graphs

Data structures will include
- arrays
- linked lists
- hash tables
- balanced and unbalanced trees
- skip lists
- heaps
- adjacency lists and matrices

Algorithms will include
- searching and traversal
- sorting
- insertion and removal
- dynamic programming
- depth- and breadth-first search
- topological sort
- connected components
- shortest paths

To illustrate all of these, we’ll draw inspiration from such varied
application domains as graphics and games, biology, web design, and social
networking.

Last Change:
21 January 2010 /