Practical programming : an introduction to computer science using Python 3 - Gries, Paul (Pragmatic programmers., 2014)