lecture notes on data structures