Given a polynomial, one can evaluate it at a square matrix via substituting the square matrix in for the unknown. Such a procedure preserves various properties of the matrix. For example, if we evaluate at an upper triangular matrix, the output should be upper triangular as well, and if we want to change the coordinates in which the matrix is expressed, we should get the same result if we do that before or after evaluation. Slight refinement and formalization of these properties turns out to give an elementary characterization of what is known as the functional calculus- which is usually developed using advanced techniques in real or complex analysis depending on the context. Moreover, such an algebraic formulation of the functional calculus generalization to several variables is now known as free noncommutative function theory. We will discuss the basic definitions and move on to various foundational aspects of the theory including change of variables and matrix inequalities.