A debate on the role of object-oriented principles in the introductory programming sequence is ongoing. While the pendulum swings to and fro between the "objects first" and "back to basics" extremes, there is general agreement that object-oriented programming is central to modern software development, and therefore is integral to a computer science curriculum. Many of the challenges in developing effective approaches to teach these principles are exacerbated by the use of Java or C++ as the first instructional language.
In this paper, we recommend Python as an excellent choice for teaching an object-oriented CS1. Although often viewed as a "scripting" language, Python is a fully object-oriented language with a consistent object model and a rich set of built-in classes. Based upon our experiences, we describe aspects of the language that help support a balanced introduction to object orientation in CS1. We also discuss the downstream effects on our students' transition to Java and C++ in subsequent courses.