Big O Notation and Algorithmic Complexity, Explained with Gophers