Imagine you walk into Japanese 101 and on the first day the professor asks, “Has anyone taken Japanese before?” and everyone raises their hand but you and a handful of other students. Imagine then that your classmates not only raise their hands but respond to the professor in Japanese! At age 18, I would have been intimidated and likely would have dropped the class. This is how many of our students feel in the first course for computing majors – overwhelmed by the sense that they are already behind when in theory they have only just begun.
The trouble is that prior experience in CS is not uniformly distributed across all genders, races and ethnicities, and further CS is only offered in approximately half of U.S. high schools (with more of those high schools in regions of economic privilege). Thus, the individuals experiencing the first course required for a computing major (CS1) in this way are more likely to be from less privileged geographies and from genders and races/ethnicities historically marginalized in tech.
There is substantial evidence in the computing education literature that universities that actively manage the distribution of prior knowledge, can create a culture in their introductory sequence where everyone feels welcome and can thrive. This is important for both students with prior experience and those without, and ultimately for our faculty. It is challenging to teach a class when students come with widely differing prior knowledge; one runs the risk of that neither group is engaged. We just need to agree on the best practices for doing this.
At the Center for Inclusive Computing (CIC) we have performed dozens of site visits at universities across the U.S., during which we meet with faculty, departmental/college leadership, advisors, teaching assistants, and, most importantly, students. These site visits are designed to determine if a school is ready for a CIC Implementation Grant to implement systemic and sustainable changes such that all students can discover, enjoy, and persist in computing in university. During site visits, the students who came to university with no coding experience share how they felt when they took the intro sequence. Some of the more memorable phrases used were: “pit of alligators”, “made me feel like I was stupid” and “I felt like I did not belong.” Many reported feeling like they were already behind on the first day. Others reported that when other students ask questions like “Is that a Boolean”, “Is that an inherited class” or “Is that a conditional expression” that it was indeed like a foreign language to them. Students further shared that CS1 has a reputation on campus as being overly difficult and unfriendly.
It is imperative that computing departments address the distribution of prior experience in coding, but how they respond will depend on the context of the department and the university. In this article, we outline five of the more popular approaches, illustrating the contexts in which they work best, and possible pitfalls.
- For universities at which Java is the first language, allow students to skip CS1 if they have prior Java coding experience as measured either by placement test, results of the AP exam, community college articulation agreement, or even by student preference. A potential pitfall is that if a university is implementing a GPA-based enrollment cap to admit students to the major, then students with prior experience will decide to take CS1 in the hopes of an easy A that will bolster their GPA and help guarantee them a spot in the major. Thus, care must be taken to avoid this pitfall (perhaps by not counting the CS1 grade for students with either an AP credit or who have CS on their high-school transcript).
- Split students by prior experience into two different sections of CS1 (for our purposes, let’s call these sections “prior experience” and “no prior experience”), and let the students decide for themselves which they prefer. The course outcomes for both classes are identical, but the student populations differ in terms of prior experience. For the “prior experience” section, instructors can add material from further along in the curriculum (e.g., P vs. NP, as opposed to bringing in material from the next course) so as to not put the students ahead. A pitfall here is that students with prior experience might opt for the “no prior experience” section because they perceive it will be easier – again, something that can be particularly problematic for schools with GPA-based enrollment caps. Indeed, at one large public university, the section for students without prior experience fills up first (with the majority of those students having prior experience). Thus, this approach demands active management of registration and in how grades are counted for determining who gets to major in CS.
- Add a CS0 for non-majors or students without experience (often in Python) to offer students an engaging introduction. Many of these courses use “computing in context” to ground the material in one or more fields. Ideally, this course satisfies a general-education requirement at the university (which serves as a way to attract students to *try* computer science in the first place). But, in this strategy, three issues must be addressed. First, advisors need to understand who should be taking CS0 and advise students accordingly. Second, CS0 must have a pathway to the major (if not, what’s the point of inviting discovery…). Indeed, at one university, a student could not get credit for both of CS0 and CS1 as they were perceived as having too much overlap. At another, CS0 is taught in Python and CS1 is taught in Java but no support was provided to make the transition from one language to the other. Third, computing majors are often perceived as challenging to get through in four years, and making students wait until (at least) their second semester to start the major might scare away some students, even if in reality they can easily complete it. Thus, care must be taken to have appropriate messaging across the university on why starting with CS0 will not impact a student’s ability to complete their degree in four years, particularly if CS0 is taken in the first or second semester of a four-year degree.
- Implement two intro sequences: a two-course sequence for people with prior experience (CS1 and CS2) and a three-course sequence for those without (CS1-A, CS1-B and CS2), with students merging back together into CS2 (or, sometimes, in CS3). Care must be taken to ensure that the students don’t create a culture of thinking those in the CS1-CS2 sequence are “better” than those in the CS1-A, CS1-B, CS2 sequence or that people in the three-course sequence are somehow “behind.” Here again, advising is critical for how to ensure people are steered to the right sequence, and there must be a way for students to switch tracks if they made the wrong initial estimation of their skills. Additionally, care must be taken in universities with GPA-based enrollment caps that students don’t opt for the 3-course sequence because of a perception that it will be easier. One school we worked with removed CS1-A from the GPA calculation with the dual goals of incentivizing students without experience to try computer science with no penalty and dis-incentivizing students with experience from gaming the pathway to the major. On the other hand, schools must guard against the tendency of students to opt into the shorter path when they do not have the background because they view it as overall less work.
- A particularly challenging issue for most universities is how to handle the prior experience of students transferring from community college (CC). In some cases, there are articulation agreements and the curriculum of the CC and the 4-year institution are in sync. In other cases, a different language is taught in CC than in the 4-year institution, and when a student transfers, no credit is given toward progression in the major (although general education credits might be given), adding time to degree completion because computer science has a strong pre-requisite chain. In other cases, credit is given, but students then struggle in the subsequent course. The problem can be particularly acute when students from many community colleges attend the same 4-year institution or vice versa (indeed, getting all CS educators to agree to one teaching language is likely impossible). Thus it is important that 4-year institutions work with their local CC(s) to ensure they use the same language/curriculum on the intro sequence, and that attention is paid to this agreement on an annual basis since either or both institutions might change the language/curriculum in the intro sequence. And if synching the initial programming language is not possible, then a transition course or module will do much to help in the transition.
Our experience working with universities across the U.S. is that when schools actively manage the distribution of prior experience, they observe dramatic reductions in drop/fail/withdraw rates and more consistent persistence rates across all intersectional identities. These changes, in turn, have positive reputational benefits if the changes are shared across the university advising system. Indeed, when I was Dean of Khoury College of Computer Sciences at Northeastern University –after we made certain changes (we implemented Option 2 for our CS and cybersecurity degrees and Option 3 for our data science degree), I went on an “apology tour” at all the other colleges to assure the academic advisors that their students would now feel welcome and would enjoy exploring computing. As a result, in the ensuing years about 40% of the students in our intro courses are non-majors from across the university.
There are few silver bullets available to us in CS education, and I do not use the phrase “best practice” lightly when so much of our ability to make sustainable changes is context-specific and resource-driven, but in the case of managing the distribution of prior experience, I feel a great deal of optimism that this is a challenge that is eminently surmountable.
About the Author:
Carla E. Brodley is the Dean of Inclusive Computing at Northeastern University, where she serves as the Executive Director for the Center for Inclusive Computing and holds a tenured appointment in Khoury College of Computer Sciences. Dr. Brodley served as dean of Khoury College from 2014-2021. A fellow of the Association for Computing Machinery, the Association for the Advancement of Artificial Intelligence (AAAI), and the American Association for the Advancement of Science (AAAS), Brodley’s interdisciplinary machine learning research led to advances not only in computer science, but in areas including remote sensing, neuroscience, digital libraries, astrophysics, content-based image retrieval of medical images, computational biology, chemistry, evidence-based medicine, and predictive medicine. She was recently recognized for her BPC work with the ACM Frances E. Allen Award for Outstanding Mentoring.
I would like to thank Catherine Gill, Sally Wynn, Megan Giordano, Manuel Pérez-Quiñones, Christine Alvarado, and Benjamin Hescott for their help in formulating these ideas over the years and for their edits on this article.
Side note on the CIC:
Founded in 2019, the Center for Inclusive Computing at Northeastern University partners with U.S. universities to materially increase the representation of women computing graduates. These partnerships focus on addressing and removing the institutional barriers that exclude women of all races and ethnicities from discovering and thriving in computing programs. In order to accelerate change, the CIC partners with schools through grantmaking, technical advising, and data collection and analysis. You can learn more about the CIC at https://cic.northeastern.edu/
 A GPA-based enrollment cap is when a university requires students meet a minimum grade-point average (GPA) threshold for entry to the major (typically calculated from the student’s grades in the first 2-3 courses of the major, plus a few co-requisites like Calculus 1 and 2, and, occasionally, Physics 1). In a forthcoming op-ed in the August 2022 issue of the CACM, we discuss why GPA-based enrollment caps are at odds with broadening participation in computing – namely because they favor students with prior computing experience.