Understanding And Enriching The Algorithmic Reasoning Capabilities Of Deep Learning Models