abstract programming chapter