Combinatorica [Ski90] is a collection of over 230 algorithms for combinatorics and graph theory written in Mathematica. These routines have been designed to work together, enabling one to experiment with discrete structures and build prototype applications. Combinatorica has been widely used for both research and education.
Although (in my totally unbiased opinion) Combinatorica is more comprehensive and better integrated than other libraries of combinatorial algorithms, it is also the slowest such system available. Credit for all of these properties is largely due to Mathematica, which provides a very high-level, functional, interpreted, and thus inefficient programming language. Combinatorica is best for finding quick solutions to small problems, and (if you can read Mathematica code) as a terse exposition of algorithms for translation into other languages.
Combinatorica is included with the standard Mathematica distribution in the directory Packages/DiscreteMath/Combinatorica.m . It can also be obtained by anonymous ftp from ftp.cs.sunysb.edu in the pub/Combinatorica directory. Included on this site are certain extensions to Combinatorica and data sources such as the graphs of Graffiti.