Alternative approaches to chess engine programming As far as I understand, roughly speaking, chess engines work by:


calculating all possible variations (game tree) up to some depth
evaluating the final position based on some criteria (material, piece activity...)
based on this evaluation decide for the best move


I fully understand that to have an efficient engine there are ways to prune certain lines, limiting the depth, etc; but this is not my question.

Question is: Are there any alternative attempts to program a (not necessarily strong, but not random either) chess engine, which does not follow this scheme?
In the beginning years of computer chess, people have actually tried to teach computers chess in the same way as they do with humans, explaining strategic concepts like a healthy pawn structure or the initiative. These attempt were soon abandoned because the method you describe was much more successful.

Recently, there has been another attempt to let an engine teach itself chess via Deep Learning (probably encouraged by the success of Google's Go AI). According to the article I linked to, they were quite successful and managed to reach IM strength.