Skip to main content

Placement in CS (#1255)

Topics/tags: Grinnell

Grinnell’s latest crop of students has arrived on campus. I saw some last week when I participated in an IPOP [1] session on academic expectations. However, I’ve been home over the weekend, so I have yet to see most of the students.

But I’ve started to hear from them and their advisors.

I took IB [2] Computer Science. Should I start in CSC-151, CSC-161, or CSC-207?

I got a 4 on the CS AP [4,5]. Where do I start?

I passed the A-levels in CS. Does that mean I start in 207?

I wrote a full-stack Web application in my spare time. Can I skip the whole introductory sequence?

The answer is it’s complicated.

Grinnell has a relatively unique introductory sequence. And our introductory sequence is one of the things that makes our program (and our students) successful.

Some aspects of our introductory sequence have more to do with the informal skills that students learn, such as how to work with people different than themselves and how to deal with uncertainty. Arguably, students who haven’t learned those things could still have mastered the topical material in our introductory course or courses. And if that were the case, we would almost certainly place them out of the appropriate course [7].

However, many topics we cover in CSC-151 do not appear in the AP or IB curricula. Both focus on imperative problem solving with some object-oriented programming mixed in. We emphasize functional problem solving, using it almost exclusively in CSC-151. Students need to be able to write substantive programs without side effects, which means no assignment statements. Students need to be able to specify repetition with recursion, including structural recursion, rather than with looping constructs. Most importantly, students must use (and write) higher-order procedures like map and compose. In my experience, few AP/IP courses prepare them to do so.

So our default is to place most students into CSC-151. And we do the placement manually, with a conversation. Here are some topics; tell me what you know about them. Here are some problems; tell me how you’d solve them.

After the conversation, most students (but not all) end up in CSC-151. And it ends up being an appropriate class for most of them. Some students with prior experience find the subject matter easy; for them, an easy course in their first or second semester may not be a bad thing. However, others find themselves surprisingly challenged by a very different way of thinking and may even struggle more than those with no prior computing experience. It’s almost impossible to predict which students will fall into which camp.

More importantly, all of these students get the other valuable parts of CSC-151, particularly the experience of building community with other Grinnell students and learning to work with people who think differently than they do. In an ideal world, that makes the experience in the CS major better for everyone [8].

As I said, it’s complicated.

And it’s even more complicated than what the notes above suggest. We meet some students who have mastered the material in CSC-161 or perhaps even CSC-207 but still need to learn the CSC-151 material. So we have been known to place students into CSC-151 and then exempt them from CSC-161. Last spring, I had about a dozen conversations with students who wanted to place out of CSC-207 after taking CSC-161. Some were prepared to skip 207; others were not.

To further complicate things, we have limited slots in CSC-151. Of course, every introductory course has limited slots. We try to keep a lot open for incoming first-year students; at least 2/3 of the slots (or 48, over three sections of 24). Nonetheless, not everyone who wants to take CSC-151 in the fall can do so; some will need to be able to take it in the spring. And it really doesn’t matter whether someone starts their CS career at Grinnell (or just explores a little CS) in their first or second semester. We’ve designed things so that students can begin as late as their third semester and still complete the major. We’ve even had some start as late as the fourth semester [9].

As I said, it shouldn’t matter whether prospective CS majors (or any students interested in CS) take CSC-151 in their first or second semester. Historically, we’ve been able to ensure that every first-year student who wants to take CSC-151 in their first year can do so. I hope the same will hold true this year [10].

Am I done?

Not yet. There’s one more complication.

What about students who did A-levels in CS? I had thought we treated them the same way we treat AP/IB students. That is, we generally start them in CSC-151. However, a student told me that they saw guidance that they should start in CSC-207. I’m not sure where [11]. My reading of the College’s A-level policies suggests that it doesn’t satisfy any prerequisite. On the other hand, students who get A-level credit lose that credit if they take CSC-151 or CSC-161. In contrast, students who take AP CS A or IB CS B don’t lose that credit.

As I said, it’s complicated.

And, as with many things at Grinnell, placement in CS comes down to a conversation between a student and a faculty member. At least two of us will be on Noyce 3rd from 1-4 pm on Monday, 21 August 2023, and from 9-11 am on Tuesday, 22 August 2023. We look forward to meeting new students!


Postscript: A student found additional guidance about A-levels. Here’s what we say in our department advising suggestions [14].

A mark of B on the Cambridge A-level exam for computer science would count for four credits toward the computer science major; however, those credits would be canceled upon successful completion of either CSC 151 or CSC 161. Therefore, students with credit for the computer science A-level exam may wish to consider beginning with CSC 207.

That makes things easier. And I think it makes sense. A-levels include the study of other paradigms (although I’m not sure what that entails) and recursion (how much? what kinds?). Placing A-level students out of CSC-151 may be easy. Do they know C and pointers? Perhaps. A-levels include some work in operating systems. Placing them out of CSC-161 may also be easy. And after 151 and 161 comes 207 [15].

However, it may also be that they know the material from CSC-207. CSC-207 is also over-enrolled in the fall, so they must wait until spring.

It will be a fun conversation.

But complicated.


[1] International Pre-Orientation Program.

[2] International Baccalaureate. A set of advanced, college-level courses offered at some high schools (and perhaps online) [3].

[3] Given the IB’s willingness to offer a Psychology course that does not cover gender and sexuality, I’m not sure we should consider them college-level.

[4] Advanced Placement. A set of advanced, college-level courses offered at some high schools.

[5] There are two APs in computer science. AP CS A is something like a first course in computer science, although it doesn’t always go as far as many college-level introductory courses go. There used to be a CS B, but not enough students took it. That course was a lot like our CSC-207. There’s also AP CSP [6], CS Principles, a course that emphasizes broader issues of computational thinking rather than programming. It’s also programming-language-agnostic.

[6] I keep wondering what happened to CS C, CS D, CS E … up through CS O.

[7] More on that later.

[8] Unfortunately, not all students retain the knowledge of how to treat their partners with respect.

[9] I’m not sure where things stand on that right now. It may be impossible for a student to start CS in their fourth semester, not least because we may reserve all spring CSC-151 seats for first-year students.

[10] More on that issue another day.

[11] A student sent me the link after I drafted this musing [12]. You can read more about it in the postscript.

[12] After I mused a draft?

[14] Why aren’t those linked from the CS department Web page?

[15] I realize that our numbering sequence makes little sense.


Version 1.0 of 2023-08-20.