Current undergraduate Computer Science curricula are generally built around a set of traditional lecture-oriented courses where the student is a passive recipient of knowledge. While easy to implement, such a model has the drawback of presenting the field as a static corpus of facts and techniques. It does little to challenge and engage the brightest of students, or prepare them to participate directly and actively in a highly dynamic and rapidly evolving field. Nor does it give them a sense of engagement, belonging, and ownership in this body of knowledge. This paper describes our experiences with addressing this situation via a model that aims to get undergraduates exposed to, interested in, and involved with research early in their academic careers. We use a set of closely related research-oriented courses, starting with research seminars suitable for freshmen and second-year students, and leading up to advanced projects for third-and fourth-year students. These courses have the effect of engaging talented undergraduates in research early in their college careers. This approach has led to a dramatic increase in the amount of undergraduate involvement in academic Computer Science research in our department in the last few years, and resulted in numerous research publications and awards.