Problem solving is an essential function of human cognition. To build intelligent systems that are capable of assisting engineers and tutoring students, we need to develop an information processing model and identify the skills used in engineering problem solving. This thesis describes the Integrated Problem Solving Architecture (IPSA) that combines qualitative, quantitative and diagrammatic reasoning skills to produce annotated solutions to engineering problems. We focus on representing expert knowledge, and examine how control knowledge provides the structure for using domain knowledge. To demonstrate our architecture for engineering problem solving, we present a Thermodynamics Problem Solver (TPS) that uses the IPSA architecture. TPS solves over 150 thermodynamics problems taken from the first four chapters of a common thermodynamics textbook and produces expert-like solutions.