Yes, you did read right: It does not initially know how to solve scrambled cube. This program starts with basic 6 moves: Clockwise rotation of each side. Then it invents move sequences needed to solve scrambled cubes. No solution series are included at all in source code and no data files included. Resulting movement series then are saved to data file and can be loaded from there for solving scrambled cubes.
Resulting moves sequences are then used to solve arbitrary scrambled cube.
Version 0.9 here