Introduction
This semester (Summer 2023) I have been "piloting" using various resources with Replit and Canvas to enable group programming projects in my CS 134: Programming Fundamentals and CS 200: Concepts of Programming with C++, both with an asynchronous online modality.
The focus of having group work for exercises (basically, the smaller programming labs, I like to call them exercises to emphasize their practicing), was to mostly ensure they had peers to ask questions to and explore the topics with, as well as to see the code that others write, rather than learning all their programming in a vacuum.
Adjustments to exercise assignments
For these classes, I've expanded my previous exercises from a format of "program1, program2, program3, etc." to having 3 versions of each program - one for a "studentA", "studentB", and "studentC", where "program1" is the easiest program of the exercise, and each program gets a bit more challenging. Each student tackles the same problems, but in slightly different scenarios.
With these programming assignments, since each student has separate programs, they're scored only on their own work. Therefore, if their group is just a group of 2, or one student doesn't turn in their portion, they are not penalized for the "missing" part.
Example:
Program 1: if statements |
|
||||||
Program 2: if/else statements |
|
||||||
Program 3: if/else if/else statements |
|
||||||
Program 4: Logic operators |
|
Using Canvas' grouping tools
This semester was my first semester using Canvas' grouping tools, and it will probably be my last semester using these tools. Instead in the Fall I will keep students out of a Canvas-defined "group" and manually account for groups. Here's what I've learned from using them this Summer:
- Canvas does, indeed, have the ability to put students in groups, under the "People" section.
- Canvas allows self sign-up to groups.
- Canvas allows people to be added to groups with either "Split students by number of groups" or "Split number of students per group".
- You can set assignments to be "group assignments", and either set grading to be 1 grade for the entire group, or "Assign Grades to Each Student Individually".
- You can create a discussion board thread that becomes cloned for each student group.
- Once a group set is created and students have turned in an assignment under that groupset, you can no longer change who is in what group.
- If you want to modify who is in what group part-way through the semester, you need to create a new group set and reassign each student to a group. Then, you have to make sure your assignments use the new group set and not the old one.
- If you have different groups set up (such as, for different exercises), you will have to create separate discussion boards for each assignment.
Using Replit's grouping tools
Similarly, this is also the first semester I've used Replit's grouping for assignments, whcih has also created some pain points.
- Replit Teams allows you to create an assignment as a Group Project.
- You can set up groups to be a certain max size.
- You can automatically randomly assign students to groups.
- You can allow self sign-up to groups.
- You can view the history of each file to see who worked on what.
- Once a Replit Teams assignment is created as either a Solo Project or a Group Project, you cannot change this. If you made a mistake, you'll have to delete the assignment and remake it as the other type.
- As far as I can tell, there's no way to save premade groups for use across every assignment. I've had to manually set groups for every assignment, unless I allow self sign-up.
- If you move a student from a group after work has begun it will delete that student's work; it won't keep their old version in the previous group.
- If a student deletes a source file, Replit doesn't save a copy of that deleted file's history (as far as I can tell) - it only saves history for files that still exist.
- There is no way to restore lost work.
My experience with groups this Summer
Overall, using these grouping tools for the first time has caused me so many headaches. I've had issues with:
- A student doesn't read the assignment instructions and completes the "Student A", "Student B", and "Student C" parts, leaving their teammates with nothing to work on.
- A student thinks the replit project is just theirs, so they delete the "Student B" and "Student C" code, either deleting their teammates' existing code, or leaving their teammates with no files to work on (and being confused).
- Even given discussion boards and encouraging students to create an email chain, sometimes students wouldn't even discuss who is "A", "B", or "C" before getting to work on assignments.
- Students often wouldn't mark which files they worked on in the comments, though specified in documentation. In Replit, I can view the history to see who worked on what, but it slowed down the grading process somewhat.
- I had been hoping to have 6ish groups and hot-swap students out if they're inactive or in if their group is reduced to just 1 person, but given the way you have to create separate groups and separate discussion boards each time, Canvas did not allow me to structure things as such.
What I will change for Fall 2023
Now that I'm aware of these issues, if I use these grouping tools in the future, I make the following changes to my courses:
- CANVAS: If I still use Canvas groups, I will create group sets for EACH EXERCISE, and have student self-select into these groups.
Hopefully this will help with not having "MIA" students in groups not contributing anything. - REPLIT: If I still use Replit group assignments, I will encourage students to back up their work LOCALLY and not rely totally on Replit.
Hopefully this will help students make sure their classmates (or confused teacher) don't inadvertantly delete their work. - REPLIT: Instead of having assignments be "group assignments" on Replit, I might have them be separate, then have students sync their files into one zip for turn-in.
This way, they are encouraged to practice the work solo (and they can do the other Student parts if they want to), but are still talking to each other to figure things out and put their submission together.
Future lessons in grouping work...
As I continue using group exercises, I will continue updating this blog with additional findings.