Key elements of computational thinking