You can easily adopt these research-based auto-graded assessment and feedback tools to give students the interactive learning experience they crave.
Codio has a wide variety of auto-graded assessments—ranging from multiple-choice questions all the way up to code tests. We have a nice feature for multiple-choice, where you can shuffle the order of possible choices for every student. This is handy when you author content. You can just write the question, write the answers, and automatically shuffle questions so that each student gets a different order.
When you have fill-in-the-blank questions, you can add distractors if you want to increase the difficulty. We have open-ended questions, and we also can add a script to an open-ended question. If you wanted to grade some student work automatically, you could have them write an open-ended answer, you could attach a regular expression to it, and when they submit it, you can parse the student code, looking for particular vocabulary, words, concepts, topics. Whatever you think is important for answering that question.
Research out there says that students working through Parsons problems are much faster than if they work through giving code with an error in it. In addition, and perhaps more importantly, you'll find no statistically significant difference when they work with Parsons problems or with just traditional code with bugs. There are many types of Parsons problems available. You have distractors in your standard line grader, where you have just unjumbled code. We can also put in ones that run unit tests.
You put the code in the proper order, but there's also a little unit test that runs behind the scenes to make sure that the code they put in order is producing the appropriate output. If you are interested in turtle graphics, we have Parsons problems. And best of all, we make this really available to the public. We have a blog post about this with a link to a GitHub repo, where you can find all of our Parsons problems to use for yourself.
There is also the ability to do script-less auto-grading for code tests. This is one of my favorite features when I write content. This relates to input-output matching, and you can pass command line input or terminal input to the student code. You can give different test cases, and you can also even provide targeted feedback. Here's an example of a question, a very simple question in Codio where the student has to write a function that returns the square root of a number.
If you pass them a number that is less than zero, it returns the string, please enter a number greater than zero. Very simple, but it helps illustrate. If you notice over here on the right, we have our question, we have our test cases for the student where we pass in 25, and we expect to see five. We pass 144, we expect to see 12. We pass them a negative one, and we expect this stringed output. The only thing that's missing here is the code test itself. What is important to note, is that in the student file I have the solution code. This is important as it makes generating these script-less test graders very easy to do.
Let me show you what that looks like in the video above. Codio is markdown-enabled, but as you see in the video, we have a handy markdown ribbon if you're not comfortable writing markdown.
When it comes to evaluating student work, you were running something like Java or C + +, you could give a command to compile it first, and then the command to run it. Because we're using Python in the video example above, we don't have to worry about that in this case. Now I'm going to go down to grading. You'll see in the video and webinar, we have all kinds of options.
On the topic of feedback, since we are here I want to show you this. We can say how many times the student can try to answer the question. You can turn that on or off. We can talk about when do we show feedback to students. We never show the feedback and in all the content that we write, we always show feedback. Feedback is very important, but if that is an option you have that you can limit when you show feedback based on attempts, based on the score that they're getting, or just always. I have created some content in which we have a practice problem section. So nothing is graded. Again, we want it to be low stakes. They have an unlimited number of attempts, but after the fifth attempt, if they're still not getting it, that's when we show them the solution and rationale. Again, this is markdown enabled, so I can put code samples. I could take the solution code from the IDE, put it in, and I can make a bullet point list explaining all the different aspects of the solution. So that is how you would set up script-less auto-grading in Codio. It's a great feature, and it's one that I really enjoy using when I create content.
In the video above is an incredibly simple coding question. One that you would not ask one of your students to do, but I want you to see here that the person writing the code is trying to trick the auto grader, right? It should return true, that's what we want. And when you test your code, that's what you get. But when we run the code test, you'll see here that we're saying, you did not declare my Boolean, right? You did not use my Boolean with the print statement, right? We don't want them to print just the Boolean value. So you'll see they made the Boolean variable, but they didn't use it with the print statement. And the output here is slightly different than before. And you see in the clip, you can try again and again, but it's always coming back and not just saying it's wrong. It's giving you a hint as to why it's wrong, and it allows you to go back and address the issue.
When we talk about rich, immediate feedback, this is what we're talking about. It's a very powerful feature of the Codio platform. And I want to stress that any auto-graded question has the ability for rich, immediate feedback from multiple choice questions, Parsons problems, fill in the blank, anything that has an auto grader attached to it, you can provide rich, immediate feedback. I think that's really important for the students.
We also allow for rubrics, and you can attach these to every assignment. Rubrics are great, it gives students an idea of what is expected of them. If they want to do well in a particular assignment, now they know what it is they need to do. And best of all, when you set up these rubrics, and it comes time to evaluate student work, you can just click on one of these squares, one per row, and that will add the point values. And so when you set up this rubric, when it comes time to evaluate, you're saving a lot of time. So it's beneficial to the students. It's really helpful for you when it comes to evaluating student work.