I am 16. I've been programming for several years, and I enjoy it very much.
about the solver
The solver uses a method called backtracking, which is basically methodical guessing. Imagine you wanted to open a three digit combination lock. You might start at 111, then try 112, 113, and so on. If you got to 119 with no luck, you would start at 121 and continue. Solving sudoku this way is about the same thing, except instead of searching for a 3 digit combination, you're searching for an answer with around 50-60 digits.
I wanted the applet to automatically detect when you're done entering the puzzle, without you having to press a 'solve' button. I hadn't heard of a way to do that, so here's what I came up with...
If you imagine all possible sudoku puzzles layed out in numerical order on a line, what the solver is essentially doing is trying each puzzle on the line, left to right, until it finds an answer. This is great, except what it finds might be only the first of many answers, for example if the user enters only one or two numbers from their puzzle.
However, what if you solve twice, in opposite 'directions' on the line? That is, after looking left to right, what if the program looked right to left? Now by comparing the two solutions you have, you can determine if a grid has either one, or many solutions.
If the two solutions are the same, then the two searches have 'met in the middle', and there is only one solution, which means that the user is done entering the puzzle. And obviously if the two solutions are different, then the user isn't done yet.
Surprisingly the computer does all of this in the blink of an eye, each time you enter a number.