GeoGebra, a GPL-licensed teaching and learning tool that integrates geometry, algebra, and calculus, benefits both teachers and students alike. Developed by Markus Hohenwarter at Florida Atlantic University, GeoGebra constructs geometrical figures and demonstrates the relationship between geometry and algebra. GeoGebra can help you create interactive demonstrations and precise images of geometric figures for inclusion in teaching and testing materials.

GeoGebra is a cross-platform application written in Java, and it works with Java 1.4.2 or above. You can download the installer from the GeoGebra site. In the case of Linux, the installer is a shell script that unpacks the JAR files and libraries and creates a launcher for the application. Administrators can do a system-wide installation, while ordinary users can install the software in their home directories for personal use. You can run GeoGebra with the command geogebra.

GeoGebra has a simple user interface with an uncluttered menu bar and a toolbar with a small set of icons. It's a good idea to explore all the available menu and toolbar options before you start using GeoGebra seriously.

The workspace is divided primarily into two vertical frames -- the Algebra window and the Geometry window. A small input box for entering commands resides below these two frames. Constructed figures are displayed in the Geometry window, which shows coordinate axes and a configurable grid to help you place the visual objects in the window properly. The Algebra window presents the algebraic representation of the geometric figures, as well as variables that cannot or need not be represented visually. The Algebra window also represents the geometric figures that you may choose to hide in the Geometry window. You use the input box to enter commands manually for creating visual geometrical objects or nonvisual objects such as variables.

#### Construct a simple example

To see how GeoGebra works, let's build a figure. Assuming the vertices on a triangle are labeled A, B, and C, you can construct a triangle with a right angle at B by following these steps:

- In the Geometry window, click on the point icon on the toolbar, and click on any two points in the Geometry window to create and display two points named A and B.
- Join the two points by clicking on the line-segment icon in the line drop-down on the toolbar and clicking on A followed by B.
- Choose the perpendicular line icon on the toolbar. Click on the line segment AB and then on point B to draw a line perpendicular to AB at B.
- Create a point named C on this perpendicular line by clicking on the point icon and then somewhere on the perpendicular line.
- Choose the polygon icon in the line drop-down, and then click on A followed by B, C, and A to complete the triangle.
- Right-click on the perpendicular line you created in step 3 and uncheck Show Object to hide the perpendicular line from view in the Geometry window. Now, only the right triangle ABC is visible.

While you're doing the construction in the Geometry window, the numerical/algebraic representation is being presented in the Algebra window. GeoGebra treats all entities as objects. Some objects are independent, while others are dependent. For example, if you create two points A and B and then create a line segment joining A and B and name it c, A and B will be independent objects, and c will be a dependent object. You can modify all independent objects from either the Algebra or Geometry window, as long as they're visual objects. Dependent objects automatically change based on any changes to the objects that they depend upon.

You can also use the command-line input tool to create algebraic or geometric objects, as well as variables used in subsequent algebraic expressions. For example, you can draw a line by following these steps:

- Declare a variable m and assign it the value 5 by typing m = 5 in the command window.
- Repeat the process for creating a variable b and assigning it the value 10 by typing b = 10.
- Type y = m * x + b. The line representing y = 5x + 10 shows up in the Geometry window.

Notice that the line and the values for m and n are represented in the Algebra window. m and b are independent variables, which makes them editable. You can edit them by double-clicking the line representing the variable in the Algebra window. When you change the value of m or b, you'll notice that the line changes automatically to reflect the new value.

You can get even fancier. Construct a parallelogram by entering the following sequence of commands into the input box:

A = (1,1)

B = (4,5)

l = line[A,B]

C = (7,5)

m = line[C,l]

n = line[B,C]

o = line[A,n]

D = intersect[m,o]

polygon[A,B,C,D]

#### Take advantage of the options and features

GeoGebra's Construction Protocol displays the series of steps that resulted in the current figure. By navigating to View -> Construction Protocol, you can view the Construction Protocol window, where the navigation buttons let you review the construction step by step. When you want to replay the sequence of steps, you can use the automated Play feature, which lets you configure the intervals between steps. You can export the Construction Protocol with or without an image of the figure as an HTML page, or you can print a summary of construction steps from this window.

GeoGebra also lets you plot equations in one or two variables. For example, if you want to plot tan(x), you can simply type y = tan(x) in the input box. You can plot any function in x and y by entering the equation into the input window. For example, x^2 + y^2 = 25 would be plotted as a circle. GeoGebra supports all commonly used trigonometric, arithmetic, and calculus functions.

GeoGebra has various options for exporting the geometric figures you create. You can export them as image files. If you want to export the construction as an HTML file, the application will create an applet to view or further manipulate the figure. The applet has all the features of the application. You can further tweak the applet-related options in the HTML page to enable and disable the applet's various features, such as the ability to manipulate the figure further. This feature makes GeoGebra an ideal candidate for educators who need to create demonstrations and interactive dynamic worksheets. Check out an example of a dynamic worksheet.

You can control GeoGebra applets by using the provided JavaScript API, which can help you get and set properties for any object rendered in the GeoGebra applet. You can use this API to develop dynamic worksheets, assignments, and Web-based instructional or testing modules. You can also enhance GeoGebra by adding your own tools or macros to represent a custom sequence of commands.

GeoGebra's feature set compares well with that of the popular commercial application The Geometer's Sketchpad. Other GPL-licensed applications such as Kig and KmPlot lack many of the useful features present in GeoGebra.