The classical representation variety Rep_n(A) is an algebraic variety (actually, a scheme) parameterizing all of the n-dimensional representations of an associative algebra A; these varieties have been studied in representation theory and algebraic geometry for decades. More recently, due to the work of Kontsevich and others, they have been recognized as a fundamental tool in non-commutative algebraic geometry. In this talk, we will discuss the definition and properties of representation varieties, and then give a natural generalization in the context of homological algebra. Explicit examples will be given, illustrating how this construction yields interesting invariants of algebras.