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.