In this paper we present an overview of knowledge-based systems. We begin by discussing the basic characteristics of knowledge base rules and present an example comparing a toy knowledge base to an equivalent procedural version of the same code. We then discuss the applications for which it makes sense to use knowledge-based technology and the advantages offered by reuse of a general-purpose upper ontology. Next we describe important research and applications in both knowledge representation and knowledge-based systems. We then describe how work in philosophy and other research has had an impact on knowledge-based systems. We conclude with thoughts on where the field is heading.