This book presents elements of the theory of chaos in dynamical systems in a framework of theoretical understanding coupled with numerical and graphical experimentation. The theory is developed using only elementary calculus and algebra, and includes dynamics of one-and two-dimensional maps, periodic orbits, stability and its quantification, chaotic behavior, and bifurcation theory of one-dimensional systems. There is an introduction to the theory of fractals, with an emphasis on the importance of scaling, and a concluding chapter on ordinary differential equations. The accompanying software, written in Java, is available online (see link below). The program enables students to carry out their own quantitative experiments on a variety of nonlinear systems, including the analysis of fixed points of compositions of maps, calculation of Fourier spectra and Lyapunov exponents, and box counting for two-dimensional maps. It also provides for visualizing orbits, final state and bifurcation diagrams, Fourier spectra and Lyapunov exponents, basins of attractions, three-dimensional orbits, Poincarections, and return maps. Please visit http://www.maths.anu.edu.au/~briand/chaos/ for the integrated cross-platform software.