  We propose a bridge between functional and object-oriented programming in the
first-year curriculum. Traditionally, curricula that begin with functional
programming transition to a professional, usually object-oriented, language in
the second course. This transition poses obstacles for students, and often
results in confusing the details of development environments, syntax, and
libraries with the fundamentals of OO programming that the course should focus
on. Instead, we propose to begin the second course with a sequence of custom
teaching languages which minimize the transition from the first course, and
allow students to focus on core ideas. After working through the sequence of
pedagogical languages, we then transition to Java, at which point students have
a strong command of the basic principles. We have 3 years of experience with
this course, with notable success.
