learn to implement various data structures from scratch