Identified abstraction and managing complexity question


#1

This is nit-picky but I wanted the perspective of this group. In the digital scene, response 2D I have a lot of students who “identify an abstraction” (let’s say drawAllSeaGrass) and then in their written responses talk about a function called INSIDE it. In this example, they would say their abstraction is “drawAllSeaGrass” and then write about how calling “drawSeaGrass” inside drawAllSeaGrass mangages complexity.

To me, because they are not talking about how drawAllSeaGrass itself manages complexity, they lose that point. If their selected abstraction was drawSeaGrass and they included the picture of that function definition, then they would be ok.

I am wondering how others see that. For now, I am telling students to re-do, just to be safe, but I thought I would ask the group. @frank_w_lee


#2

Hey @kaitie_obryan!

I would agree that the student should talk about the actual function that they identified, so if they identify their abstraction as “drawAllSeaGrass” and end up talking about how “drawSeaGrass” is an abstraction, they shouldn’t earn the point. And you’re not being nit-picky for calling it out - you’re doing what the teacher should be doing by teaching the students to make that distinction.

However, I’m not sure I understand what’s happening in the example you gave. It sounds like students are identifying “drawAllSeaGrass” as the abstraction and sites “drawSeaGrass” as part of what makes the former an abstraction.

Point not earned
The abstraction is drawAllSeaGrass.
It’s an abstraction because drawSeaGrass is a simple way to refer to multiple lines of code that end up drawing a piece of sea grass. Now when you want to draw a piece of sea grass, you don’t need to draw a bunch of arcs using multiple commands - you just have to call one function, drawSeaGrass.

Point earned
The abstraction is drawAllSeaGrass.
It’s an abstraction because it allows the programmer to draw multiple pieces of sea grass by just calling one function. It simplifies into one command the more complex action of using a loop that calls drawSeaGrass multiple times.

They both identify drawAllSeaGrass as the abstraction and they both refer to drawSeaGrass in their response, but a point is earned as long as the justification refers to the definition of drawAllSeaGrass (as opposed to the definition of drawSeaGrass).

Not sure if I just made the situation more confusing or if I’ve missed your question altogether, but of course do follow up if my answer didn’t get you to where you want to be. :slightly_smiling_face:

Frank


#3

In the rubric for row 8 it states:
Do NOT award a point if any one of the following is true:
●the explanation does not apply to the selected abstraction

So I would say they are not going to get the point if the explanation is about a different function than the one they selected. It would be better to choose drawSeaGrass() as the abstraction and talk about how calling it multiple times reduces the amount of code and the maintenance of the code.


#4

Thanks @gjschmidt and @frank_w_lee - I am in agreement with you both. I think from a language perspective it is tricky. In my class I say “this is an example of using abstraction” (using it almost like a verb - “I am abstracting away the detail”) but I also say “this is an abstraction”(which is much more like a noun).

So, I think students are getting confused because an abstraction can use abstraction - as is the case with drawAllSeagrass (it IS an abstraction, but it also uses abstraction by using drawSeagrass).

It is so challenging to get that language clear!