From Algorithms and Data Structures: The Science of Computing:
Each method of inquiry also interacts with the others. After designing a program, computer, or algorithm, the designer needs to test it to see if it behaves as expected; this testing is an example of empirical analysis. Empirical analysis involves experiments, which must be performed on concrete programs or computers; creating these things is an example of design. Designers of programs, computers, or algorithms must choose the design that best meets their needs; theory guides them in making this choice. Theoretical proofs and derivations often have structures almost identical to those of the algorithm they analyze—in other words, a product of design also guides theoretical analysis. Empirical analysis tests hypotheses about how a program or computer will behave; these hypotheses come from theoretical predictions. Theory inevitably requires simplifying assumptions about algorithms in order to make mathematical analysis tractable, yet it must avoid simplifications that make results unrealistic; empirical analysis shows which simplifications are realistic and which aren’t.