An analysis of the meaning of programming language constructs and how they can be used to solve problems.