KSudoku project can generate and solve sudoku puzzles (of different difficulty level) using a randomized least-candidate algorithm.
The sudoku boards currently supported are 9x9 and 16x16: but the program is fully expandable since the algorithm is extendible to any general graph coloring problem (the board is in fact stored as a graph and the numbers are the colors)
In order to create a playable puzzle it fills a blank sudoku grid with a completed puzzle (randomly), then another algorithm (to be improved with some logical constraint) removes randomly numbers from it checking each time that the resultant puzzle has only one solution: it is a bit slower than logic-based elimination tecniques but it creates puzzles that are less straight-solved (more fun).
The GUI is user-friendly and requires KDE. Written in C++.