Learning programming algorithmic concepts