In the classical form of the finite element method called the h version, piecewise polynomials of fixed degree p are used and the mesh size h is decreased for accuracy. In this paper, we discuss the fundamental theoretical ideas behind the relatively recent p version and h-p version. In the p version, a fixed mesh is used and p is allowed to increase. The h-p version combines both approaches. The authors describe and explain the basic properties and characteristics of these newer versions, especially in areas where their behavior is significantly different from that of the h version. Simplified proofs of key concepts are included and computational illustrations of several results are provided. A benchmark comparison between the various versions in included.