I like this description of the diamond-square algorithm (part 1). It's very useful if you want to create realistic looking maps. I can't recommend part 2 because I haven't even read it. The fun in my opinion is to read how the algorithm work in part 1 and then try to implement it myself.