heuristic programs teach themselves