Computer science education: why does it suck so much and what if it didn’t?