Our breadth-first introduction to Computer Science presents the fundamentals of the discipline by engaging students in active learning. In designing and teaching this course we established four goals. First, since problem solving is essential to Computer Science, students should learn to solve problems proficiently in several areas. Second, since Computer Science is best learned through intimate engagement with the material, students should learn in an active classroom environment. Third, students of all experience levels and majors should feel equally comfortable with the course material. And fourth, students should discover that Computer Science is interesting, relevant and fun.We encountered two major obstacles to achieving our goals. First, in an introductory course such as this, one regularly finds a range of experience among students: some have never used a computer, others have used it only for word processing, and still others have built their own computers. Therefore, designing an interesting and useful course that doesn't bore or intimidate any students is a significant challenge. Second, students have a wide variety of preferred learning styles which affect the way they gather and process information. Instructors also have a preferred learning style which affects the way they present the course material. Therefore, presenting the material in ways that engage all learning styles is another challenge.Despite these obstacles, our presentation strategies for this course have yielded promising results. After teaching the course for three semesters, we have observed the following. First, the course involves every student and is highly interactive. Second, as students learn the core material they ask more depth questions and achieve a higher overall level of knowledge than students in previous semesters of the course. Finally, students enjoy the class and report that they are highly satisfied with their learning; more CS I students are choosing to take additional Computer Science classes.