A collection of challenge problems commonly posed to programmers