Redesigned Introductory Computing Courses at Khoury College
New sequence of intro courses starts fall 2025
Flexible curriculum pathways for new students at all levels of computing experience
Khoury College is committed to meeting every student where they are, providing a challenging curriculum that trains them to be excellent computer scientists while supporting their individual journeys. As such, beginning fall 2025 Khoury College is introducing a redesigned sequence of introductory computing courses.
As more students are entering CS programs with computing experience, 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. By placing out and skipping to the second course, more experienced students can challenge themselves in a class where the material and pace are better suited to their experience level.
But because not all high school students have access to CS prep courses — and in keeping with the college’s mission of “CS for everyone” — the first course will be reserved for those who didn’t or couldn’t study computing before college, ensuring that they feel welcome and that instructors can engage the entire room at the same level.
Other key benefits of the redesigned sequence include:
- The preservation of a proven design-first approach to programming
- Rigorous courses that retain in-person labs and pair programming
- A balanced workload across the three intro courses
- The incorporation of considerations and discussions on ethics
Sequence and descriptions of the three intro courses
1. Introduction to Program Design and Implementation (CS 2000)
(replacing “Fundamentals of Computer Science 1”)
Course overview
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.
For the first 8–9 weeks, CS 2000 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.
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.
2. Program Design and Implementation 1 (CS 2100)
(replacing “Fundamentals of Design 2”)
Course overview
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.
As some students will place out of the introductory course, “Program Design and Implementation 1” will cover all 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; it 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 enable a more even balance of concepts and workloads across the courses in the sequence.
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.
3. Program Design and Implementation 2 (CS 3100)
(replacing “Object-Oriented Design”)
Course overview
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.
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.
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.
Frequently asked questions
What's new about the course placement process?
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.
What changes are still being determined, and are there opportunities to 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:
- Email Christo Wilson
- Attend town halls (all times EST)
- Faculty: February 6 at 12 p.m.
- Students and TAs: February 7 at 1 p.m. (International Village 019 + Zoom) and February 21 at 4 p.m. (Zoom). Announcements with Zoom links will be sent to undergraduates.
- Work with the college for summer co-op, helping to build and test new labs, assignments, and infrastructure. Interested students can contact Wilson.
- Participate in working groups to refine key policies (faculty only)
- Share with our co-op faculty how our learning outcomes relate to on-the-job success (employers only)
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.