Properly implemented course picking

Added course loading from a file.
The reimplementation is much cleaner.
Added a heartbeat to make sure the algorithm hasn't frozen. Added
percentage completeness to first for loop