study notes on programming abstractions 5317312