Khoury College announces redesigned sequence of intro computing courses

Author: Milton Posner
Date: 01.29.25

Several students work on a project during a class while sitting around four large tables pushed together

This fall, Khoury College will introduce a redesigned sequence of introductory computing courses. 

The new three-course sequence preserves the design-first approach to programming — including the “design recipe” — that has proven valuable across several generations of students. It also retains the rigor, in-person labs, and pair programming of the existing courses. But it also adds flexible curriculum pathways for programming beginners and veterans alike, balances the workload more evenly across the three courses, incorporates ethical considerations and discussions throughout the curriculum, and updates course content to reflect advances in computing education, programming tools, and employer needs. 

“Our goal is to provide a rigorous introductory computing education and prepare students for both industry careers and graduate study,” Dean Elizabeth Mynatt says. “With these changes, we retain the core ideas that have made our program successful while leveling up the curriculum to reflect advances in the field.” 

Course designers have incorporated feedback from college faculty, leaders in the Center for Inclusive Computing, and Khoury student advisory boards. Going forward, designers will continuously evaluate and revise the courses in response to student outcomes, community feedback, and advances in computing education. 

“This is the first major shift of the intro sequence in a long time,” explains Christo Wilson, associate dean of undergraduate programs. “After a thorough and deliberate curriculum revision, we are confident that the courses retain their rigor, ready students for co-op work, provide a solid foundation for advanced classes, and position all students for success right from the start.” 

To learn more about the upcoming changes, click on one of the links below, or simply read on. 

Placement process 

What’s changing: Starting in May 2025, all Khoury students — including first-years and transfer students — can take an online self-assessment to determine if they should place out of the introductory course, CS 2000. Students who pass will begin with “Program Design and Implementation 1” (CS 2100), where they will need to clear in-class screenings early in the semester to confirm their placement. 

The self-assessment will cover programming topics that are exclusive to the introductory course, but not the topics that reappear in the next course as well. Multiple programming languages, including Python and Java, would suffice for use on the self-assessment. 

AP or IB credit will not exempt a student from the introductory course. However, the college expects that many students who have such credit will be able to pass the self-assessment. 

Why: Separating true beginners from those with programming experience will provide a more supportive environment for the former and an accelerated pathway for the latter. 

Thanks to the proliferation of high-school computing courses, more students are entering Khoury College with computing experience. By skipping to the second course, these students can challenge themselves in a class where the material and pace are better suited to their experience level. In doing so, they also earn back a course slot, freeing up an extra slot for a higher-level elective. 

At the same time, access to computing in high schools is not evenly distributed, with students in affluent areas more likely to get those opportunities. In keeping with Khoury College’s mission of “CS for everyone,” the first course will be reserved for those who did not or could not study computing before college, ensuring that they feel welcome and that instructors can engage the entire room at the same level. 

Introduction to Program Design and Implementation (CS 2000) 

Replacing: “Fundamentals of Computer Science 1” 

Course Description: Introduces computer science and data science to students with no programming experience. Starts by building programs with numbers, text, and images, then moves to exploring real, complex data sets both interactively and through coding. Students then practice coding using a popular industrial language with a professional programmer’s interface to the code. Students learn to identify and respond to ethical challenges in program design. 

What’s staying the same: The course will use a teaching language to introduce students to the systematic design of programs, then build gradually to a full-featured language. Students will cover structural recursion and receive support for images, testing, and carefully crafted error messages design. 

What’s changing: For the first 8–9 weeks, the course will be taught in Pyret, a teaching language built by CS educators who understand the successes and limitations of Racket teaching languages. In addition to first-class support for tables and data science, better support for testing, and a more modern environment with better errors, Pyret facilitates a smooth transition to Python for the last 4–5 weeks, once students have learned foundational computer and data science concepts. In addition to explicit coverage of ethics and new exposure to data science — including operations, transformations, and visualizations of tabular data — students will learn about mutation and iteration. Some of the more advanced topics, including generative recursion, will be deferred to the second and third courses. 

Program Design and Implementation 1 (CS 2100) 

Replacing: “Fundamentals of Computer Science 2” 

Course Description: Building on intro programming experience (from CS 2000 or a different institution), examines the fundamentals of program design and implementation. Studies design of data and object-oriented programs, including common patterns, use of data structures, and underlying principles such as abstraction, encapsulation, inheritance, and interfaces. Introduces common software engineering practices such as test-driven development, version control, development environments, and good programming habits. Practices using these design principles by writing medium-sized applications and using data science code libraries. Continues to interweave ethical challenges and skills in program design. 

What’s staying the same: In the context of a real-world language, students will systematically design programs while incorporating existing libraries into their design. Students will also be introduced to object-oriented programming. 

What’s changing: As students can now place out of the introductory course, this course will cover all of the systematic design concepts that it introduces, rather than assuming that students are already familiar with them. This course will be taught in Python, allowing students to learn core data science design patterns and libraries. The course will also expand on version control and development environments, preparing students to work on increasingly large programs. And by taking on material that previously populated the third course, this course helps to enable a more even balance of concepts and workloads across the courses in the sequence. 

Program Design and Implementation 2 (CS 3100) 

Replacing: “Object-Oriented Design” 

Course Description: Building on CS 2100 foundations, examines program design at increasing scales of complexity. Reviews abstraction, encapsulation, inheritance, and interfaces in statically typed object-oriented languages. Presents a comparative approach to software design patterns and paradigms, including object-oriented and functional programming. Fosters a deeper understanding of program design principles, including interface design, test-driven development, graphical design notations, reusable software components, and open-source ecosystems. Illustrates the impact of design-time decisions on software correctness, including accessibility, changeability, performance, reusability and privacy. Students collaborate to design and implement a large software project. 

What’s staying the same: The course will center on object-oriented design patterns and bigger-scale programs in Java. Students will program in pairs and learn the importance of writing maintainable programs by reviewing other students’ code. 

What’s changing: The course will start with a rapid introduction to Java — as incoming students will no longer be expected to know it — and will provide a comparative discussion of program design in Python and Java. Given the challenging nature of the main project, new lectures and labs will fill in gaps and help students build larger applications. The course will also cover modern topics like open-source ecosystems and composing new programs from existing libraries. Thanks to new intro material on memory management and user-centered design, students will be better prepared for higher-level courses in systems and human–computer interaction. Students will analyze trade-offs between nonfunctional requirements such as reusability, changeability, accessibility, performance, and privacy. Software testing concepts will be embedded throughout as students consider the ways that their software might fail. 

Frequently asked questions about the new curriculum 

What changes are still being determined and how can I offer feedback? 

Course titles, languages, and high-level concepts have been cemented based on feedback from students and faculty. As course designers work to solidify curriculum specifics, community members who want to weigh in on these changes before the fall can do so in a few ways: 

How will the redesigned intro sequence prepare students for co-op? 

While keeping the tenets that have served students and co-op employers well, the curriculum will now expose students to Python and Java — the two programming languages most requested by employers — in their first few semesters. Students will also benefit from explicit training in software development tooling and deployment environments, which are requested by employers. 

Will computer science, data science, and cybersecurity majors be impacted differently? 

CS, DS, and cybersecurity students will take — or place out of — the same intro course (CS 2000), reflecting the principle that the first step in designing a program is understanding the data behind it. Students will then split off into separate tracks: CS and cybersecurity students to the CS intro sequence, DS students to the DS sequence. Switching between the CS and DS sequences will be simpler since the second classes are both taught in Python and cover similar topics. 

Khoury faculty will continue to examine whether additional CS and DS courses can be merged in the future. 

What will happen to students who are partway through the current sequence?

“Fundamentals of Computer Science 2” will be offered in summer 1, while “Object-Oriented Design” will be offered in summer 1 and fall.

How will things change for transfer students?

Previously, transfer credits often counted for credit hours but did not fulfill computer science major requirements, meaning transfer students needed to restart their major studies. Now these students can place out of the intro class through the self-assessment. 

The Khoury Network: Be in the know

Subscribe now to our monthly newsletter for the latest stories and achievements of our students and faculty

This field is for validation purposes and should be left unchanged.