Tic-tac-toe super computer that uses binary trees and Depth First Search (DFS) to evaluate outcomes in order to never lose :).
To play, run
$ ruby lib/super_computer_player.rb
Before it makes a move, the super computer builds child boards that are simply all the moves the computer can make for that turn. The computer recursively builds further child boards of these boards in evaluating whether or not the end outcome of a particular child node could ever lead to victory or a draw if there are no more winning nodes.