Students progressing but not grasping the concept?


#1

Hello, I have ±20 students (9-12 years old) in a clan and we meet in online group chat once a week to code together & help out each other. Actually, it’s more like a race, with red vs blue team fighting to get the highest total stars (they get 1 star when completing a level, and 3 stars when they can help their friend to complete a level).

In addition to that, I also set up some presentation slides explaining the programming concepts and give out weekly homework quiz they can (optionally) complete to get more stars. I originally wanted to create a custom level for the students to try out, but as I haven’t mastered the Level Editor yet, I give the quiz where they have to manually code in notepad and then copy paste & forward it to me. I think it’s a good exercise for them to test out their debugging skill, etc. It’s also a tool for me to gauge their level of understanding of the concepts.

The first two quizzes are Dungeon level, they can complete the code and spot the syntax/logic errors just fine. The third quiz is Forest level, where they have to check item type & move to item position. Some are struggling with that, but I’m not really worried because maybe they just haven’t reached that far yet. But when I use the concept of Function in the fourth quiz, none of my students can answer, including those already on Mountain level (!).

Basically I write a function that requires a string input and will output another string. In the body of the function I throw in several if/else clauses that check the input and determine the output. Then I give the input string “abc” and ask “what is the output from this function?”. I even give a flowchart of how the function works as a hint. As no one can answer the question, I wonder if they need more exercise in the Forest level.

Some feedback from my students/few observations from me:

  • what is an output of a function? What does “return” means? (she’s already on Desert level)
  • what does “var response” mean? I don’t know where to start (he’s already on Mountain level)
  • some in Desert & Mountain doesn’t know an output of the function can be saved into a variable
  • how does the hero take an item? (he’s in Forest level. I explained about coordinates, movexy, and move, but I think he’s not aware that a function can have more than one input)
  • some students in Forest & Desert doesn’t quite understand the usage of && and ||
  • a Mountain level student doesn’t know that you can rename the input parameter of a function differently. Such as:
function abc(message) {   }
while(true) {
   var heymessage = "hey";
   abc(heymessage); // he thinks it have to be abc(message), not abc(heymessage);
}
  • my student is on Mountain and he doesn’t know how to construct a function, i.e. the difference between hero.chooseTarget = function () { }; and function chooseTarget() { }
  • I recently released the fifth quiz, which is a simplification of the fourth quiz, where we use a function with an input and without an output, and still some students went “huh??”
  • a lot of students don’t read comments in code… why oh WHY?
  • I have to admit, the levels about array might need more explanations… maybe with levels introducing the concept of array, how it is constructed, what is counter, increment, iteration, etc… I particularly doesn’t get the comments guide of Highlander level on Mountain. I just did a trial and error on it :see_no_evil:

I think more sequential exercises on the Forest would be good. For example the recently released Coincrumbs & White Rabbit level is a good introduction to item position & how to get an item (I remember doing a level in Forest without knowing I can access item.pos.x and item.pos.y as the item’s coordinates). As the Forest already has > 100 levels, maybe you could split the world into Forest A (exercise about functions), Forest B (logical checking, the && and ||), Forest C (pet/event handling), Forest D (coordinates)? Hmm… it looks like it would need a lot of work though? :smiley:

Does anyone else see the students progressing the levels but not quite understanding the concept? I would love to hear about the concepts your students are still struggling after passing so many levels on CodeCombat.

Thank you :slight_smile:


#2

I’m not a teacher, but if it’s alright I would like to give my input.

My Input

I’ve been learning coding mostly on my own, asking for help and researching when I need to, but I’ve also been helping someone learn as well. She is currently a little over half way through the Forest area currently, and she is a bit slower at picking some of this up than myself which has been a bit daunting for her. I’ll reassure her, but that is not the point of me saying this so I’ll move on from that part. While helping her learn and understand certain things such as “if, elif, and else” I found that she wasn’t understanding it with the way it was explained. I then explained these things to her in a way she would understand, because she was reading the code as symbols with letters and numbers rather than a question or statement.

So when the code would say something like:

while True:
    enemy = hero.findNearestEnemy()
    item = hero.findNearestItem()
    if enemy:
        distance = hero.distanceTo(enemy)
        if distance < 5 and hero.isReady(""):
            hero.cleave()
        elif distance < 10:
            hero.attack()
        else:
            pass      # just putting this here for example
    elif item and item.type == "":
        hero.moveXY(itemX, item,Y)

(which I just wrote that out now, and I left a couple things out so it wouldn’t be correct code, as I’m again still trying to figure out what Correct Code is against the rules.)

I ended up explaining things to her, such as to instead read it as a statement or question depending on what you want the code to do. So “If enemy” would be to ask if there is an enemy. Or if you’re looking for the distance the first term is to define the word you wish to use later on when asking or stating something dealing with that ever changing variable.

But it wasn’t just things like if and else, it also came to other things such as “def” when she started to learn how to define a longer function for later use inside the loop. The list goes on, but my point is maybe there is certain things that the students aren’t catching or understanding because they aren’t relating to the term itself?

Perhaps some of them might need an alternative example they can reference to for the specific things they don’t yet understand so that they can absorb the information in a way that makes since to them. It sounds like you are a great teacher, so I think it’s probably just a lack of connecting to the term itself.

example: the student on the Desert level that didn’t know what "return meant. She might be using the function, but not implementing it because she wants to use it due to not understanding the how it is used. If explained it could click, and it might have already, but could be possible she hasn’t figured out how to read the term yet.

Also I’ve realized that in some spots here and there that there are things that CodeCombat tries to have us learn that if we aren’t reading, or are not paying attention we may get correct but without using what the level was actually trying to teach us. Such as the “Logical Path” level in the forest, there is multiple ways to get past it, but only so many of those ways actually involve using the type of code the level is trying to help us learn. (Such as using not or (!) to invert True and False statements).

I also realize that I used Python in my example code, and that you’re students aren’t using Python. It was just for use as an example though to help explain my point. I’m hope this was at least somewhat helpful.

If so everything I had to say is in My Input .


#3

@kavacha @Xector64 I was working on a concept for the game for reference/review levels. And I am very interested in how the students might be challenged. The idea being that these levels will allow the student to apply what they have learned and to explain the uses of the code up to that point in a single location that is easy to find again when a student wants to review because they are struggling with the concept in a later level.


Right now I am working on levels that take the lessons from the Kithgard Dungeon campaign:

  • Basic Syntax
  • Strings
  • While Loops
  • Variables
  • Arguments

I would welcome any feedback in relation to the challenges that you have seen first hand with the people that you have tried to assist.


#4

Wow, thank you for your feedbacks @Harry_the_Wanderer and @Xector64
I support the idea of new campaign for concept reviews, especially if you can see the concept grouping in a glance (this part is about string, that one is about variable, this one is about functions, etc). I’m so excited to see the new campaign!

I’ve been thinking more about my students’ progress. I think one of the reasons they can progress on the levels is because CodeCombat does a good job on taking students through the steps. So they can follow the leads: “write var enemy here”, “check the distance there”, “increment this index with that”, etc until they succeed. It’s good that they can see the details, but I wish there could be a way so that they can see the big picture. More often than not my students get stuck in a level when there’s no guidelines on what to do next.


#5

I have been using CodeCombat in our learning labs for about four years now and can confirm the same problem. Those learning are able to complete levels without understanding the concept—functions are a specific example.

While I find CC immensely valuable for beginners I would never dream of making it the only part of any instructional program. It is great for having fun and getting particularly younger kids interested but my learners have no idea what the terms “function”, “assignment”, “parameter”, and “declaration” mean when asked. I have to cover those specifically.

One very controlled discovery has been that those doing CC have a superior understanding on syntax, particularly code blocks from those who have never done it. In a Summer camp half had done several levels and the others never had. Those without CC were consistently making syntax errors specifically related to code blocks. So I suppose the syntax emphasis is good, but I would say that is essentially the main advantage of CC. Personally I believe students simply will not focus on the concept on their own because they are so motivated just to finish the level.

Just my two cents.