The demand for computer programming skills has been increasing rapidly. Many people are interested in learning to program but find it difficult to learn. A major reason for this is that they lack the skill to construct and apply mental models about abstract concepts in programming. Foo gives learners practice and support to develop this important skill through a series of engaging puzzles. With this skill, learners will find it easier to understand concepts in programming and be more likely to succeed.