My algorithm to generate crosswords from a given set of words (In Java).
The crosswords in newpapers are usually made with a human coming up with a grid, then adding words of appropriate lengths to the crossword to fit that grid. With my algorithm, you can form the smallest possible crossword given a set of predetermined words you want to include. I find this a more intuitive way to produce crosswords that are more fun to solve.