algorithms and data structures in Python