Skip to content
May 6, 2011 / Ben Chun

Grading the AP Exam

I’ve been spending a lot of time with computational thinking concepts because of the illustration project where we’re trying to create images to represent those ideas. So when my students took the AP Computer Science exam on Tuesday, it was natural for me to think about the exam in those terms.

One of the computational thinking concepts is decomposition and, to be fair to the College Board, decomposition isn’t explicitly part of the Computer Science A topic outline.

The just-released 2011 Free Response Questions reveal the extent to which this is the case. My students reported that they felt okay about the exam, and I think overall it’s a decently fair way to assess their learning on a limited set of programming concepts and skills, on a limited budget. Decomposition just isn’t one of those skills that’s being assessed, and the writers of the exam should be more honest about that in the way they present the questions.

First, a quick overview of the four Free Response Questions:

1. Sound
1(a). Given an array of ints, apply a ceiling and floor to each element, returning the number of elements that were changed.
1(b). Given an array of ints, remove all leading zeroes, changing the size of the array if necessary.
The arrays of ints were said to represent sample values for a digitally-recorded sound.

2. AttractionCritter
Write a subclass of Critter that moves other Actors closer to it, observing all pre- and post-conditions.

3. FuelDepot
3(a). Scan an ArrayList of objects, calling the one method we know they have, to find an object that reports a value below a given threshold.
3(b). Manipulate an object through a limited set of method calls (changeDirection, moveForward) to change its state based on a given input.

4. RouteCipher
4(a). Place each character from a String into a given 2-d array.
4(b). Break a given String into block-length substrings (where block size must be calculated), then call the method from 4(a) to fill the block, then call encryptBlock, and repeat until you’ve done the whole String, concatenating the results along the way to return.

What’s wrong with these? First, questions 1 and 3 are complete pseudo-context. The premise of the problems, either that an array of ints represents some audio data or that the ArrayList of objects represents a set of fuel tanks, contributes nothing to the work that needs to be done. The students are not asked to reason about audio or fuel, and so putting that veneer around the core task is just a distraction. We can’t say that we’re asking students to figure out the requirements for solving a real problem, because the solutions need to be precisely specified in order to be graded. Let’s drop the pseudo-context and admit what we’re actually testing in terms of computer science.

Question 4 is the worst offender. Imagine that you were asked to implement a block cipher according to a particular paramterized encoding specification. One choice you might make is to break the problem down into sub-problems by creating fillBlock and encryptBlock methods. That’s a decent way to decompose, and it implies the need to either have a private instance variable to hold the block of text, or that the block be passed around. But the AP question doesn’t give students the opportunity to show their ability (or lack thereof) to reason in that way. Instead, it makes all the choices for them, and the students are left to (again) simply perform the menial task of implementing a precisely-specified method body. There’s nothing wrong with testing that ability, but let’s not pretend it’s anything more than it is. The exam should admit what it’s testing, and not obscure — to either students or the exam authors — the true nature of the problems.



Leave a Comment
  1. Art Simon / May 8 2011 7:40 pm

    I don’t have a problem with the “pseudo context” problems. I’ve done some work with the minim sound library in processing, and the first problems premise is applicable and relevant. You want to test some standard ideas, but dress them up so they appear to be different.

    I think what you are getting at is that there is no room for students to develop an original algorithm. The solution is given in the problem, and students need to translate the given algorithm into code. There is no room for insight or creativity in the AP exam questions.

    The problem here is the bifurcation between the students who get it and the students who don’t. If we give a problem that requires an original or creative solution, many will fail. And some of those who fail could have “got it” given more time or context.

    Every layer of abstraction is a barrier, and we all struggle to deliver a course that is meaningful to everyone. I like the idea of a course that teaches kids how it’s done and presents programming problems in a straightforward way. The trick is to allow room for that creativity and insight of those who are immediately comfortable with programming.

  2. Ben Chun / May 9 2011 1:10 pm

    I agree that it would be nice to test creativity. But the real problem I’m having is that the exam seems to, as you write, “want to test some standard ideas, but dress them up so they appear to be different.” Why? Why do we want to do that? If we want to test standard understanding of standard ideas, we should do it directly and honestly.

    I agree that the audio example isn’t terrible. And while audio sample data (at least in minim) is a float in the range [-1,1] instead of an int, I see that something like trimming silence isn’t a crazy idea. You might very well need to do that. I also see that finding a desired starting sample index is probably more useful (since you can just set a cue point rather than copying the entire remaining array) but I concede this point.

    I’m not expecting that we have an exam that requires all students to invent new algorithms on the spot. I just wonder why, particularly with something like the FuelDepot, we feel the need to make up these contraptionary and obviously unrealistic ways to use Java — unless part of the idea is to see if students can decode the relationship between contrived classes in a fake context. And in that case, are we sure that a setup with FuelDepot, FuelRobot, and FuelTank is testing computer science in a way that’s equally challenging to all students?


  1. New Insights from AP Results « And Yet It Moves

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: