Algorithmic Programming requires an understanding of data structures and complexity of operations. The better and the more sophisticated structures you know the easier it is to develop and maintain the code. This requires a math background, big O complexity understanding, and ability to implement data structures from scratch.