cognitive code learning