This document describes a Java program that graphs functions. It includes abstract Function and GraphManager classes, and subclasses that implement specific functions. The GraphManager handles function selection and calculating graph extents. The GUI displays the functions, prompts the user to select one and input bounds, and calls GraphManager to draw the function on a Canvas between the bounds. Any errors from user input are caught and handled.