Scrubbing Calculator (by Bret Victor, author of Kill Math)
worrydream.com
worrydream.com
http://www.cs.swan.ac.uk/calculators/how.html
Both have you write numeric expressions and then manipulate them while the calculator solves the constraints 'live'; how they developed that general idea differs.
For example, if the user had sin(x)+1=2 and x^2=4 (or, sin(x)+1=x^2-4 equivalently) then the lines would be set up as
sin(3)+1 = eval
3^2 = eval
and then the user would link the two 3s and proceed to "scrub" until a common answer for x was found. While this problem is unsolvable for x, each expression is valid and able to be evaluated.
As somebody said below, this scrubbing amounts to nothing more than brute force guess and check of equations. No additional knowledge is gained through this type of approach and I would never recommend this for anything but the most trivial of problems and even then a standard approach would probably be faster.
EDIT: Looking at the more advanced "locking" functionality, I think you are probably correct in that this functionality may be constrained to monotonic functions only.
The specifics don't matter, the bottom line is, anything that Mathematica can solve, this can be useful for, simply by solving the equation for the chosen dependent variable (the red number) every time you adjust the value of an independent variable (any of the black numbers).
Am I alone in this?
I won't say I only learn by example, but I need something tangible. Something I can pick up, squash, twist and break until I can feel what it's made of. Even if that manipulation occurs only in my head, and even if I've had to synthesise that tangibility from someone else's explanation.
For me, that's the way things really are, and anything else is an intermediate representation.
I never did learn the mathematical definition of bezier curves properly; I just looked at the animations on Wikipedia. This post kinda inspired me, so here's a scrubbing bezier curve: http://samgentle.com/playgrounds/bezier
I'm very inspired by this scrubbing calculator because I think it is the perfect tool to introduce algebra. The abstract concept of a variable is not something that comes easy to everyone. This tool allows you to visualize the idea of a variable and play with it.
I think this would allow the introduction of algebra at an even earlier age for some, and make the transition much smoother for the rest.
I believe this is why spreadsheets are so popular: you're never working with abstraction alone. It's always incarnated in an example. That seems to fit how most people's minds work. By contrast, tools that require users to specify their abstractions first and only then instantiate them with data have a much more limited appeal. It can be hard for programmers to appreciate this because we're on such familiar terms with abstraction.