introduction to algorithms and data structures in python