Programming and problem solving in a specific domain such as designing and implementing games, robotics, virtual worlds, web programming, biology, genomics, or computer science. Students learn the basics of programming by studying problems in one application area.