data struct and algorithm practices