Methods for solving a Sudoku and generating a new, valid and complete Sudoku board, in Java and Python
The Java versions are used in my Android app, TimeDoku, which has you trying to solve Sudoku while it's solving itself, if you're interested you can check it out here.