## David Eck's JavaScript Page

Here are some entertaining and/or educational programs, written in JavaScript so that they will work on the Web. All of the programs use HTML canvas for drawing. Most modern web browsers support it; however, you might run into some old browsers that don't. Note that in many browsers (Chrome and Firefox, at least), you can right-click a canvas and choose a command such as "View Image" or "Save Image" to save a copy of the drawing. The program should work with a touch screen, as well as with a mouse. —David Eck

• Genetic Algorithms Demo — A simulation of evolution using a genetic algorithm. You can design a "world" and see how some very simple, simulated "organisms" evolve in that world.
• Explore the Mandelbrot Set — A program for visualizing the famous Mandelbrot set, which lets you zoom in to any degree and control the colors that are used for the visualization.
• Sorting Algorithms — Watch visual demos of five common sorting algorithms, and time how long they take to sort large arrays.
• Pentominos Puzzle Solver — A pentomino is a polyhedron made up of five squares of the same size. This program will solve puzzles where the goal is to place the twelve possible pentominos on a board.
• Chaos Game — Design self-similar fractals, which are visualized by the program using a random process.
• Turing Machine Simulation — Create and run examples of the abstract computing devices known as Turing Machines. (Mostly for people interested in the foundations of theoretical computer science.)
• Three programs for drawing with symmetry groups in the plane:
• Wallpaper Groups — Draw symmetric patterns using any of the 17 wallpaper groups, which have translation symmetry in two independent directions.
• Frieze Groups — Draw symmetric patterns using any of the 7 frieze groups, which have translation symmetry in one direction only.
• Rosette Groups — Draw symmetric patterns using rotation and dihedral groups, which have rotation and/or reflection symmetry but no translation symmetry.
• Cellular Automata and the Edge of Chaos — Make images produced by the evolution over time of one-dimensional cellular automata, and explore the idea that the most interesting cases tend to arise when the automaton is on the "edge of chaos."
• Three programs for graphing functions of one variable. These are not as polished as they could be. I plan to work on a larger variety of similar programs.
• Basic Grapher — Graphs a function entered by the user.
• Families of Functions — Graphs a function that can depend on up to four parameters, with sliders for changing the parameter values.
• Derivatives — Graphs a function along with its first and second derivatives, and can draw tangent lines to the functions when the user drags the mouse on the graph.
• A few small examples, mostly for amusement: