Engineering problem solving involves applying scientific and mathematical principles to solve technical issues and develop new systems. There are two types of problems: analysis problems which have a single correct solution, and design problems which have multiple solutions. The engineering design process involves defining the problem, collecting information, generating multiple solutions, analyzing and selecting the best solution, and testing and implementing that solution. This is an iterative process. Problem solving tools include calculators, spreadsheets, math software and programming languages.