Question:
I’m having trouble writing good instructions. I don’t know how much I should “give away” and how much I should hold back from the student, help!
Answer:
Good instruction can be challenging to write. Furthermore, good instructions vary between exercises. Generally, courses should become more difficult as they progress and therefore, you should give away less and less the later you get in the course. A good instruction should be difficult enough that a student must actually read the whole instruction to implement the code. If you give away every function and variable name in the matching scaffolding, students will learn to look for the code-formatted words in your instructions and just pop them into the scaffolding in the sample code.
For example, the instruction “Use the head()
function to view the first five rows of fun_dataset
.” alongside the following code doesn’t require much thought by the student; they can simply plug in head()
and fun_dataset
and think no more about this exercise.
# View the first five rows of fun_dataset using head()
___(___)
A better instruction and matching scaffolding could be the following: “View the first five rows of fun_dataset
.
# View the head of fun_dataset
___
This approach encourages students to think about the methods they can use and allows them to choose the method they want; they could use the head()
function or they could use subsetting to achieve the same outcome. Our SCTs check for the resulting output/object of code, so (in most situations) flexible methods are allowed. That said, we do require you to provide the best method for reaching the solution as we will point students in that direction if their method fails.