Solutions to conceptual software puzzles