A chess engine is a computer program that can play the game of chess, it can also refer not just to a program, but to a whole hardware machine. See also computer chess. However, usually the term chess engine is used to refer to a chess playing program that does not have its own user interface. Most chess engines use the common approach of attempting all possible moves from a given position and then choosing the best one with the help of a search (mostly alpha-beta pruning, which is an improvement over the minimax algorithm) and evaluate function.