So let’s suppose we decide to require computer science for all students at our university. How are we going to implement that requirement? Here’s one approach that I believe could turn out to be the wrong way to do this: Set up a collection of courses, all of which count for the CS1 requirement, that are aligned to the students’ levels of technological proficiency. STEM students take a standard intro-to-programming course, liberal arts majors take a course that focuses more on office applications, and so on.
But, wait a minute, didn’t I say last time that I liked Georgia Tech’s approach, where the single CS1 requirement was satisfied by a number of different courses that are aimed at different populations? Yes, I did. But favoring a collection courses with different populations is not the same as favoring a collection with different outcomes depending on how measure, or perceive, students’ technological skills when they matriculate. Targeting different populations is just smart curricular design; setting different learning outcomes for different students based on their incoming abilities is borderline anti-educational.
We don’t do this in writing courses, for instance. Students certainly come into college with writing skills that are all over the map. Some students are barely literate while others are highly talented writers. But we don’t say that we only expect the former to be able to put together basic paragraphs whereas the latter are expected to write novels. If we are serious about education, we set and hold high expectations for writing skills for all students that ask students to really understand the concepts and processes of writing. We do not say to a student who comes in with low writing skills, “We’ll remediate you to a basic level but otherwise we don’t expect as much from you as we do others.”
We don’t do this in math, either, really. There are certainly different requirements for math courses at most universities; STEM people take calculus, business and social science people take statistics, and so on. But these differences are differences in content, not in expectations. A statistics course should be neither more nor less quantitatively rigorous than a calculus course; a liberal arts math course should be the same way. (I really mean that.) We don’t expect a lesser understanding of quantitative disciplines in this case; just a mastery of different aspects.
The reason I bring this up is that I’m hearing some say, in response to the articles about the CS requirement, that we should require a course in office applications and basic digital literacy for those who come in with lesser technological skill, and that can be their CS course. I think that’s looking at the problem from the wrong end. It seems that we might want a global CS requirement because in this era, the quantity and quality of digital skills that we should expect from students has changed. Office suite proficiency is necessary but no longer sufficient: We want students to be able to program (where “programming” is broadly defined), to articulate how computers and the internet work, and so on. The question ought to be, where do we want students to end up with respect to CS, not where are they now. If we want all students to program — which I think is the true gist of the push to require CS — then let’s aim high, set the goal, and help students get there. (Which involves asking “where are they now”, I know.) But let’s not say that students with low tech proficiencies can’t get there or shouldn’t be expected to get there.