Okay… 2nd year now with this Rock, Paper, Scissors App and many of my students are still left very confused about when and how to use parameters and returns… I really wish there was more scaffolding leading up to this… for instance, starting with some very basic functions where students could add parameters… then, integrate returns…
I am concerned b/c a handful of students had a lot of trouble with the use of parameters and returns in their Create PT last year so I felt like I didn’t do a sufficient job of covering it for them in this unit…
Hi @dmaletta! Thanks for raising this concern. This lesson and EIPM progression will be updated for the 22-23 course.
Just to be clear, do you think students could use more scaffolding in this lesson or in the lessons leading up to this one?
Thanks for sharing the ideas about the type of scaffolding you think could be useful. I’d love to hear more about your experience with your students and where specifically you saw them struggle in this lesson and how it translated into trouble on the Create PT.
Thank you for reaching out! Ideally there would be more scaffolding leading up to this lesson… I think including the parameters and returns together is difficult for students… I’m trying an activity today where students will be rewriting apps to create functions, parameters, and returns with the intent of managing complexity… I’m wondering if rather than having them just use predefined functions with parameters in the practice task, if rewriting code to integrate parameters would be more helpful. The same approach could prove useful for the rock, paper, scissors app where the code without parameters or returns is provided and then students have to figure out how to manage the complexity by integrating parameters and/or returns… like this: https://studio.code.org/projects/applab/melmXxSFgHuXrBMbsg6DZq7yFzrH7Qg4721pPVfkSSU
I’ve also attached what I’m doing in class today… I’ll let you know how it goes.
When I framed this lesson as “don’t look at anything other than those 3 functions”, I think it worked a lot better for students in terms of understanding procedural abstraction and what to do with those parameters. It would have been great to be able to hide the rest of the code, lol. However, the fact that the icons list was global made his message harder to explain, i.e. “don’t look at anything but these 3 functions…but you should look at this one global variable” detracted from the message. If we could have moved that inside of the function as a local list instead, it would have hit home a lot better.
The other thing students would do is hard code 2 for the upper bound of “randomChoice”. Not knowing what list was being passed in, or if there were other lists of variable lengths being passed in, might have made this a less frequent error.
I also feel that it is a big jump for students to take from the “Practice” to the “Make”. I think separating the return values and the parameters could be helpful. The other possibility I was thinking was to introduce single parameters when learning functions, then maybe do return values and multiple parameters in unit 7. Most of my students really started to understand parameters and return values after I made a couple “console log” programs and eliminated some of the complexity the UI introduces in the RPS app. Between the use of lists and image URLs it can be confusing for students.
I agree. I’m looking at this section thinking my students will be completely lost. The examples are too complex for my students. They are even too complex for me to explain - I need simple and they need simple. Like adding two numbers and returning an answer. More simple examples like this are helpful.
Of course - when examples are simple it’s difficult to explain why we need a function or parameter in the first place…but ultimately, simple examples tend to create better mental muscle memory for my students.
Scaffolding is needed throughout the curriculum. I’ve created simple lessons for students to use to repeat concepts over and over again. Over and over again we practice adding to lists, and traversing through lists… but very simply without any added complexity. This course is an entry level course for students of all levels., and abstract thinking is challenging for many of them. It’s also a year post covid and it’s still a difficult year to teach.