After re-reading the source for this, I can see that high school me did not understand OOP at all.
My idea for this program was essentially to duplicate the Sudoku solver shown here. These puzzles could easily be solved via brute force. That type of method was uninteresting to me. The linked solver tends to shy away from forcing these puzzles, and tries to use actual strategy instead. That is what I tried to duplicate.
As you can see if you grab the source and compile it, there's really not much here--maybe the first couple of solve methods from that online solver if I recall correctly.
This solver has the option to either take a puzzle as input at the command line (tedious as hell) or suck up a file containing the puzzle (sudoku.sdk is one of these). I think this file is byte values of cells, but it's been awhile since I wrote this...I don't recall for sure.