Algorithms, Computational Thinking and Programming