In this paper, we present several graph theory related software systems that we have developed. These systems have been used in learning and research. The systems feature drawing and manipulation of graphs as well as execution of graph algorithms. The systems are: JGraph, a Java-based system for creating graphs and running graph algorithms; Colossus, a visibility graph system; Manohar, a system for computing graceful labelings of graphs (with special emphasis on trees); Graph Algorithm Constructor, which allows the creation of graph algorithms by drawing flow diagrams instead of writing source code. We also describe some examples in which the empirical data generated from these systems have allowed us to discover fundamental properties of graphs.