2.1 Algorithm and Programming