Fnord is mathematical visualization system. Basically it provides a purely-functional, collection-oriented language with symbolic differentiation and optimization. You can type in a parametric equation and see the resulting curve and/or surface. You can attach GUI widgets to parameters, and change their values in real time. etc.
Good News (November 2003): Brown University has changed the licence on fnord to GPL so it is finally truly open source. Thanks!
Thomas Banchoff (who advised its creation) uses fnord to teach calculus, geometry, and topology (see his projects list)
circle := R -> (R, R) : t -> (cos t, sin t) / sqrt(2); I := Interval(-pi, pi, 31); J := Dashes(-pi, pi, 31); flatTorus := [ circle(I) >< circle(J) ]; project := R^4 -> R^3 : [x, y, z, w] -> [x, y, z] / (w - 1) ; A := [[cos a, 0, 0, -sin a], [ 0, 1, 0, 0], [ 0, 0, 1, 0], [sin a, 0, 0, cos a]] ; rotate := R^4 -> R^4 : x -> A x ; a := widget Slider(0, pi/2), name<-"rotation around XW plane"; widget Show(project(rotate(flatTorus)));
SecondFundamentalForm := Surfaces -> (R^2 -> R^2^2) : X -> (u -> let n be SurfaceNormal(X)(u) in [[X''(u)^1^1 . n, X''(u)^2^1 . n], [X''(u)^1^2 . n, X''(u)^2^2 . n]]) ;spot at draves dot org