Learning data structures and algorithms through hands on implementation