how to learn data structures and algorithms in python