Computational thinking, algorithms and programming