I’ve been thinking a lot lately about a few things that, at first glance, don’t necessarily seem related:
- Our enrollments in three of our intro courses—111, 201, and 204 (that’s intro, Data Structures, and Software Design, for those of you playing at home)—have gone crazy high lately.
- Our number of majors, by contrast, actually decreased slightly this year, although it’s certainly within the range of “normal and healthy” for us.*
- We’ve been talking as a department about assessment, and more generally that’s led to discussions on what we expect of our majors and students, what our majors expect of us, and what we mean by “proficiency” in computer science, programming languages, etc.
Specifically, with #3, we’ve been discussing the perception and/or reality (partly on our students’ part, partly on our observations of our seniors and how they choose to do their Comps projects) that our majors are not prepared well enough to pick up and master new languages—that our mostly-Python-most-of-the-time philosophy might be hindering our students’ ability/confidence to learn and try out languages like Java and C++, which are more “employable”. And that perhaps the solution is to make sure that by the time our students finish 111, 201, and 204, they see and learn 2 different languages.
But at the same time, #1 and #2 may be indicators that our role as a discipline is changing—we have record numbers of students, but not record numbers of majors. For instance, I have a record number 37 students in 201 this term, which has long been considered our gateway course to the major, but somewhere between 1/3 and 1/2 of them have no intention of becoming CS majors.
All this has led to me mulling over three questions:
- Is CS becoming a service discipline?
- If so, what are our responsibilities to our majors and our students? Do we focus on preparing the majors only in the intro courses, or should we acknowledge the changing demographics in our curriculum?
- What role does language choice play here? Should our goal in the intro courses be proficiency in a single language, or should exposure to multiple languages take precedence? Are non-majors taking our intro courses for language proficiency, and if so, will they go away if we switch languages?
In the next few posts, I’ll tackle each of these questions in turn. I’m also thinking of polling my 201 class on Friday to see what they think about #3–particularly the non-majors, and will report back as I do so.
For those of you reading that are working in CS, or teaching CS, or studying CS: what are your thoughts on these questions? What do you think the role of an intro course should be, either in preparing majors or non-majors or both? Should CS act like it’s a service discipline—and does this change anything about the way we approach teaching and learning CS?
* Maddeningly, our gender ratio is sucky sucky sucky—only 1 woman out of 15 declared majors. This warrants its own book rant post—at another time.