Need help clarifying what exactly is required for the algorithm / abstraction parts of CREATE. A have a lot of questions

This is my 3rd year teaching the course (using Code.Org), I’ve looked at the performance tasks, scoring guidelines, student samples, etc. but I still struggle with defining these two things for my students. With the possibility of students having to do CREATE remotely this year I really want to get some clear language to use to explain what is expected of them.

First off, I’d LOVE to know if there is any document for teachers, from AP or otherwise, that clarifies this better that maybe I missed. Either way, here goes.

Here is the explanation for what is required for algorithms (2c) and abstractions (2d) from the performance task sheet:

2c. Capture and paste a program code segment that implements an algorithm
(marked with an oval in section 3 below) and that is fundamental for your
program to achieve its intended purpose. This code segment must be an
algorithm you developed individually on your own, must include two or more
algorithms, and must integrate mathematical and/or logical concepts. Describe
how each algorithm within your selected algorithm functions independently,
as well as in combination with others, to form a new algorithm that helps to
achieve the intended purpose of the program. (Must not exceed 200 words)

2d. Capture and paste a program code segment that contains an abstraction you
developed individually on your own (marked with a rectangle in section 3
below). This abstraction must integrate mathematical and logical concepts.
Explain how your abstraction helped manage the complexity of your program.

I won’t paste the scoring guidelines for those parts here because they are long, but I read through all of that document and I’m not sure that they answer the questions that I have either, so here goes.

MY QUESTIONS FOR BOTH:

  1. What exactly is being counted as a mathematical concept? Is there an example list anywhere? Sometimes my students ask me, for instance, if incrementing a variable counts as math, and I’m not sure if that counts. To ME it’s clearly math, if very basic, but I’m not sure what the standards are here.

  2. What exactly is being counted as a logical concept? Is there an example list anywhere? If been assuming if statements, loops, etc. but I’m not sure what the standards are here either.

  3. This feels kind of obvious, but the same code could theoretically count for both of these, right? Like, they don’t have to be two distinct chunks of code?

MY QUESTIONS FOR ALGORITHMS (2c):

  1. How exactly is algorithm being defined? Is it just essentially anything that completes some definable task? Is there an example list anywhere?

  2. Does “must integrate mathematical and/or logical” mean that they only need one or the other? (That’s how it clearly reads to me, but I want to be sure this is what AP intends.)

  3. “Describe how each algorithm within your selected algorithm functions independently, as well as in combination with others, to form a new algorithm that helps to achieve the intended purpose of the program.” What exactly does this mean? I feel like I kind of get it, but I’m struggling to figure out how to put it into clear language for my students. Each algorithm needs to be some specific task on its own that can be explained independently, but also needs to work together with the others to some larger goal?

MY QUESTIONS FOR ABSTRACTIONS (2d):

  1. How exactly is abstraction being defined? Is it just essentially anything that simplifies a task? Is there an example list anywhere? If I tell them “pretty much any function you create to simplify your code counts” is that accurate?

  2. Does “must integrate mathematical and logical” mean that they need at least one of each? (Again, that’s how it clearly reads to me, but I want to be sure this is what AP intends.)

  3. What exactly does managing the complexity of the program mean? Is there an example list anywhere? In our Code.Org curriculum managing complexity includes things as simple as “choosing a name that helps explain what the code does” but is that enough to get the point here, or does the code itself have to be something that would, for instance, be duplicated otherwise if it wasn’t contained in its own function that could easily be called or something like that?

Sorry for throwing so many questions out there at once, but any answers to any of these, especially if they include AP sources, would be VERY helpful, I’m sure not just to me but to a lot of people.

Thanks!

@anee,

I’ll try and answer based on what I think.

Both;

  1. Math concepts - stick to + - * / % but ++ and - - should be acceptable.
  2. Stick to if statements - Loops are more in the realm of iteration than selection
  3. You can use the same code for the algorithm and the abstraction.

2C:
1: Should be a chunk of code that performs some purpose in the overall code. It must be more than 1 line of code and less than all the code. I tell my students to pick a function. It doesn’t have to be one, but easier to explain. The survival guide has good examples of what is and isn’t. The examples form the college board are good too! You can find those at the bottom of this page (https://apcentral.collegeboard.org/courses/ap-computer-science-principles/exam)
2: Either or both
3: I think you do understand. What does this function do? And then how do you use this function in your program.

2D:
1: An abstraction in Javascript has to be a function unless they are going the data abstraction route which I have no experience with. It cannot be an onEvent! You are right that any function they create is an abstraction.
2: That is no longer a requirement for the abstraction.
3: No choosing the right name doesn’t manage complexity of the code. The function itself has to make the code simpler to create, read and maintain. The best way to understand what the College board is looking for is to look through the examples in the file (https://apcentral.collegeboard.org/pdf/ap19-apc-csp-create.pdf) and look at the ones that got a point for row 8. I think you will begin to see trends in what is being looked for here.

I hope that helps some.

@anee You have some great questions that I hear from my students and teachers preparing to take on this task. A good resource to use in addition to the ones @gjschmidt provided are the Survival Guide. In terms of that a student created algorithm looks like, check out page 38. I spent some time this year discussing examples 4 and 5 with my students and why they are good examples of an algorithm. I also spent time looking at the examples of the abstractions on page 41.

Thanks for the help! One quick question. You said:

2: That is no longer a requirement for the abstraction.

I vaguely remember reading this once somewhere before as well, but looking on the AP site:

At the assessment overview file:

That is where I got the 2D information that I posted above. My Code.Org curriculum also points to that file.

Is there a more updated file I should be looking at somewhere?! I’m looking around and not finding much.

Hi @anee,

In response to the issue of abstraction and mathematics, you are correct that the instructions for abstraction state that the abstraction should include math and logic. Looking through the rubric, however, you will notice that neither rows 7 or 8 (which focus on abstraction) actually give students points for this feature. I don’t understand why it is still in the directions if it is not in the rubric, but I tell my students that if they have a function that is their abstraction then its helpful to include math or logic because then as they are writing about it they can talk about reducing the repetition of those coding patterns in their program. Given that its not in the rubric, I wouldn’t get too stuck on it.

Good thing the task is changing next year, hopefully we will get a little more clarity!

Ah I see. That’s a bit inconsistent, but I do always tell them to look at the grading stuff to know how they will be graded. I’ll just have to remember to call attention to this discrepancy this time around.