The unofficial theme of this year’s faculty symposium seems to be “connection.” Not only will we have the chance to connect with one another, but several of the presentations revolve around fostering and growing connections within the online classroom. (If you haven’t already, be sure to check out the session previews!) As we prepare for the symposium, let’s see how some of our UWEX faculty are already embracing this community-minded approach in their online classes.
I interviewed Tony Varghese and John Boyland, two UWEX faculty members, and Instructional Designer Kristin Kowal about a unique discussion board strategy used in the Applied Computing (APC) program. Students contribute lines of code to solve a problem, then review and provide feedback on the work of their peers using the discussion board in Canvas. Though the strategy looks a little different in their respective classes, the goals are similar: metacognition, peer-to-peer connection, and replicating workplace skills.
Can you give a brief description of how this strategy works in your course?
[Tony] Students in APC 390 were given some starter code and asked to work in a group to come up with a program that would solve a slightly different problem. Each student has to make two posts each with at most one line of code and 100 words of explanation. Students got all the points if they made two posts. I gave them feedback if their posts did not have any lines of code or if their explanations were not substantial.
[John] I break up the class into groups of 6 to 10 students who all work with their own partially implemented class. I provide the initial code and test cases. The students have two tasks: to fix one error and to comment on someone else’s fix of an error. I grade using a rubric presented ahead of time. In particular, I don’t want them to make lots of changes (and so perhaps do too much–making it harder for the other students to do their part). I want them to explain what they did in their comment. Then, I want polite but content-rich comments on what the other student did.
Can you talk a little more about developing and including this strategy in your course? For example: What appealed to you about the idea? What were you hesitant about?
[Tony] In software development today, you have to be able to work with others and communicate what your code is doing. You can make all kinds of changes to make your code more resilient, and you have to be able to explain how you did that in your code
[John] This assignment addresses multiple goals for me: I would like students to be more engaged with fellow students, I want them to learn to verbalize what they are doing while coding, I want them to learn how to work with multiple people on the same piece of code. I usually am reluctant to assign group work because the more diligent students will feel the need to do the work of those who don’t do their share. I think the exercise avoids the standard group work problem because each person is judged on their own contribution. The group as a whole rarely ever fixes all the problems, and that’s fine. The interaction is less artificial than some of my other exercises because it’s based on people working with code.
What learning benefits do you think this strategy provides to students?
[Tony] Ideally, students would see approaches to writing software that is very different from their own. And these approaches would be coming from peers and not an instructor. They can “see” how their peers think when developing software.
[John] I think this exercise really does give a flavor of working with others because students need to be very careful that they “pull” changes from others and quickly “push” their own changes, rather than sitting on them a long time, which means there is more work to “merge” them in. I also think it helps students learn to discuss their code with others in a slightly realistic situation. Incidentally, they also learn about the data structure we are using (a cyclic array) as the background of their discussions.
[Kristin] For programming courses, group problem-solving on the discussion board is a great strategy because students get to practice the skills needed to complete their individual work while getting feedback from each other. These discussions have a high impact because they are aligned with a project/skill students are already invested in, so we avoid the dangers of discussions becoming busywork.
How is this strategy similar to what students might do someday in a future career?
[Tony] Yes, developing code is not the solitary process we had 30 or 40 years ago. In most workplaces now, developers are expected to interact with their coworkers and customers. They have to be able to critique each other, be comfortable getting constructive criticism, and also know how to respond to constructive criticism.
[John] This exercise is much closer to software development in a company because you’re always in a group, and you always need to explain your code to others and ask people about their code. It also uses “git,” which is the most common way open-source projects distribute code.
How do you feel this strategy helps build connection and community in your course? How does it help you connect with your students? How does it impact their connections to each other?
[Tony] Many students are stuck in their own ways of thinking. When students see how their peers think, it gets them thinking about more possibilities than they originally envisioned.
[John] This exercise requires that students read (code and comments) and analyze what other students are doing so that they can provide quality comments themselves. This, along with peer reviews (which happen three times during the course), gets the students engaged with each other. They get to know each other’s coding and explanation styles. To increase engagement, I put students from the same home campus into the same group to share a codebase (and code reviews). I’m mainly out of the picture for these. I have other ways for students to be engaged with me (notably a very active Piazza discussion board).
[Kristin] This strategy approach reduces inequity; students with less computing background can get more help when they need it so they don’t have to wait on one instructor’s availability. It’s important to build multiple opportunities for practice and immediate feedback that doesn’t give an advantage to students with an ideal schedule.
What advice would you have for other faculty who may want to try a similar activity in their courses?
[Tony] Getting students to explain their thinking is always good. The main problem I ran into was trying to get students to explain why their code was better than something someone else posted. Instead of explanations, many students felt compelled to go against the “one line of code” rule and posted entire programs without any explanations. Students think that their code explains their thinking and it almost never does. If we can come up with a single “Text Line” for the one line of code and a “Text Area” for the explanation, we could enforce the “one line of code” rule.
Try it and see! You might have a better way to get students to interact positively.
[John] My advice: Make sure the group as a whole doesn’t need to complete a task. Instead, make sure that there’s enough work so that everyone can do a bit, and also make sure there’s an aspect where students need to analyze what others are doing and explain their own work. The exercise has limitations. Most students after they have their two required items stop paying attention. I’ve had students tell me they would have appreciated a longer engagement.
Generating community and connection in your online course helps enhance other course design best practices, such as authentic assessments. If you’re interested in trying a strategy like this in your course, reach out to your program’s instructional designer. See you at the symposium to learn more great strategies like this group problem-solving discussion!