Later, once we have developed programming basics, including pointers and arrays, we revisit this problem and implement the algorithm in code. A key aspect of our approach is that code is never a bunch of magic words that are given by the gurus. Instead, the code is the implementation of an algorithm we devise together. Once we complete the implementation of this algorithm, we execute it by hand on an example input. Learning to read code, as well as write it, is another key tenet of our approach: how can you possibly understand what you are writing if you cannot read it?