ABSTRACT (original article): Working with peers is an integral part of a student’s educational experience in most disciplines from preschool to tertiary education. For secondary and undergraduate chemistry education, it is inevitable that some laboratory sessions require students to work in groups for logistic and safety reasons. In this technology report, we demonstrate use cases of Google Forms and Google Sheets to assign (A) students into groups, collect (C), analyze (A), and distribute (D) their feedback in group work as well as in self-, peer-, and instructor-assessed individual work. Our ACAD-Feedback framework is designed to streamline the manual delivery of the four processes into one online framework. This framework can be used in other settings with minimal modifications. CITATION (original article): Limpanuparb, T.; Datta, S.; Tawornparcha, P.; Chinsukserm, K. ACAD-Feedback: Online Framework for Assignment, Collection, Analysis, and Distribution of Self, Peer, Instructor, and Group Feedback. J. Chem. Educ.* 2021, 98(9), 3038–3044. https://doi.org/10.1021/acs.jchemed.1c00424

Introduction

SocialGolferProblem(SGP)

The SGP is a combinatorial design problem in scheduling 32 golfers to play in foursomes for a maximum number of weeks without any two golfers playing in the same group more than once. The general description of the problem extends to include any g golfers playing in groups of s golfers for w weeks. There have been many approaches to solving the SGP including design theory techniques, satisfiability (SAT) formulations, constraint-based approaches, metaheuristic methods, and - recently - a radix approach. The solution to the SGP has been applied to tournament scheduling and group assignment in classrooms.
The Social Golfer Problem was featured on Wikipedia:Did You Know until September 26, 2021 UTC 00:00.

Radix Approach

Highlighted in this Supplementary Wolfram Material for the article titled “ACAD-Feedback: Online Framework for Assignment, Collection, Analysis, and Distribution of Self, Peer, Instructor, and Group Feedback” (DOI: 10.1021/acs.jchemed.1c00424) is the radix approach to solving the SGP with an application to create a schedule for students in a laboratory class. Laboratory classes often require students to work in pairs or larger groups to encourage collaboration and as a means of ensuring the safety of students. The SGP can be used to assign students into groups for every class.
The total number of students in the class (g) is expressed as
n
s
​where s is the number of students in each group.The maximum number of classes that any of these students meet no more than once is
n
s
-1
s-1
.
The case where s = 2 is the well-known round-robin tournament, also known as the all-play-all tournament. The radix approach uses a binary number representation (radix or base 2) for group assignment. For other group sizes, assignments are made using radix s.

Visualization

This material also highlights the use of Wolfram Mathematica’s GraphPlot and Graphics features. Group assignments generated with the radix method are visualized as a graph with CircularEmbedding layout, a technique introduced in 2021 that positions vertices of a graph on a circle and integrates machine learning to minimize edge crossings. Similarly, the GridEmbedding layout positions vertices on a grid.

Implementation of the Radix Approach

The Algorithm

Non-carry addition (NCAdd) in base s

NCAdd[aa, bb, s] takes in three inputs.​aa and bb (expressed in base 10) are the two numbers that will be added. NCAdd converts aa and bb to base s, adds without carry, and converts and returns the sum in base 10.For example, NCAdd[3,6,2] returns 5. 3 in base 2 = 0
1
1 6 in base 2 = 1
1
0 Adding the two numbers without carry in base 2 results in 101. Highlighted in blue, adding
1
+
1
without carry does not transfer 1 to another column. 101 in base 2 is 5 in base 10.
In[]:=
NCAdd[aa_,bb_,s_]:=(n=0;c=0;a=aa;b=bb;​​While[a>0||b>0,​​c=c+Mod[Mod[a,s]+Mod[b,s],s]*
n
s
;(*non-carryadditioninbasesisappliedtotheright-mostdigit*)​​n=n+1;​​a=Quotient[a,s];(*removetheright-mostdigit*)​​b=Quotient[b,s];];​​c)
Generate a list of the base 10 values 1, 1x, 1xx, …, 1
(x)
n-1
in base s
There are
0
s
+
1
s
+
2
s
+ ... +
n-1
s
=
n
s
-1
s-1
of these values which is the number of weeks. The values in this list are used to find students in the same group for each week. It is the distance used by NCAdd to find next student in the same group.
In[]:=
row[s_,n_]:=Flatten[Table[Table[
nn-1
s
+m,{m,0,
nn-1
s
-1}],{nn,1,n}]]
Create a map for group labels
Numbers from 1-26 and 27-702 are mapped to a letter A-Z and to letters AA-ZZ, respectively.
In[]:=
map=Join[Table[iFromCharacterCode[64+i],{i,1,26}],Table[i+26FromCharacterCode[Quotient[i-1,26]+65]<>FromCharacterCode[Mod[i-1,26]+65],{i,1,26*26}]];
Create group assignment for all students in all weeks
The function ct[s, n] generates a table with the assignment of all
n
s
students in the class into groups containing s students each. Each row represents a student and each column represent a week. Groups are labelled by letters in the table.
The radix approach makes use of the non-carry addition in radix s to make group assignments in each week.
In[]:=
ct[s_,n_]:=​​bt=Table0,{
n
s
},
n
s
-1
s-1
;(*Createablanktablefilledwith0.Thenumber0standsfornogroupassignment.*)​​rval=row[s,n];​​Forj=1,j≤
n
s
-1
s-1
,j++,(*Foreachweek/columnj*)​​Forg=1,g≤
n-1
s
,g++,(*Foreachgroupg*)​​i=Flatten[Position[bt〚All,j〛,0]]1-1;(*Findthefirstpositionof0(studentnotassignedtoagroup)*)​​For[x=0,x<s,x++,(*Foreachgroupmemberx*)​​bt〚i+1〛〚j〛=g;(*Labeleachmemberwiththegroupnumberg*)​​i=NCAdd[i,rval〚j〛,s](*Shifttothenextmemberbyadditioninbases*)​​];​​;​​;​​bt/.map(*Replacegroupnumberswithletters.*)

Application: Group assignments

Group assignments can be generated by calling the function ct[s, n] defined in the subsection “Create group assignment for all students in all weeks”.
​
The total number of students in the class is written in the form
n
s
where s and n are non-negative integers. s represents the number of students in each group. The function ct[s, n] generates a table with the assignment where each row represents a student and each column represent a week. Groups are labelled by letters in the table. Examples are shown below.
​
In practice, perfect SGP conditions are rarely satisfied. In which case, the generated table can be modified as follows:
• The number of rows in the table is more than the number of students in class. Rows can be truncated as needed. In this case, some groups will have less than s members.
• The number of columns in the table is more than the number of times students meet. Columns can be truncated as needed. In this case, some students will never meet.
• The number of columns in the table is less than the number of times students meet. Some columns can be repeated as needed. In this case, some students will meet more than once.
In[]:=
(x=ct[2,3])//TableForm(*
3
2
=8studentsintogroupsof2*)​​(x=ct[4,3])//TableForm(*
3
4
=64studentsintogroupsof4*)​​(x=ct[7,2])//TableForm(*
2
7
=59studentsintogroupsof7*)
Out[]//TableForm=
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
A
B
C
C
C
C
B
B
A
D
D
D
D
C
C
C
A
B
C
D
C
D
D
B
A
D
C
D
C
D
C
D
A
B
D
D
C
D
C
B
A
Out[]//TableForm=
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
A
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
A
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
B
A
D
C
B
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
B
B
A
D
C
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
B
C
B
A
D
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
B
D
C
B
A
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
C
A
C
A
C
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
C
B
D
B
D
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J
C
C
A
C
A
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
C
D
B
D
B
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
D
A
B
C
D
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
D
B
C
D
A
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
D
C
D
A
B
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
D
D
A
B
C
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
E
E
E
E
E
A
D
C
B
M
P
O
N
I
L
K
J
E
H
G
F
E
F
F
F
F
B
A
D
C
N
M
P
O
J
I
L
K
F
E
H
G
E
G
G
G
G
C
B
A
D
O
N
M
P
K
J
I
L
G
F
E
H
E
H
H
H
H
D
C
B
A
P
O
N
M
L
K
J
I
H
G
F
E
F
E
H
G
F
E
H
G
F
A
D
C
B
M
P
O
N
I
L
K
J
F
F
E
H
G
F
E
H
G
B
A
D
C
N
M
P
O
J
I
L
K
F
G
F
E
H
G
F
E
H
C
B
A
D
O
N
M
P
K
J
I
L
F
H
G
F
E
H
G
F
E
D
C
B
A
P
O
N
M
L
K
J
I
G
E
G
E
G
I
L
K
J
E
H
G
F
A
D
C
B
M
P
O
N
G
F
H
F
H
J
I
L
K
F
E
H
G
B
A
D
C
N
M
P
O
G
G
E
G
E
K
J
I
L
G
F
E
H
C
B
A
D
O
N
M
P
G
H
F
H
F
L
K
J
I
H
G
F
E
D
C
B
A
P
O
N
M
H
E
F
G
H
M
P
O
N
I
L
K
J
E
H
G
F
A
D
C
B
H
F
G
H
E
N
M
P
O
J
I
L
K
F
E
H
G
B
A
D
C
H
G
H
E
F
O
N
M
P
K
J
I
L
G
F
E
H
C
B
A
D
H
H
E
F
G
P
O
N
M
L
K
J
I
H
G
F
E
D
C
B
A
I
I
I
I
I
A
C
A
C
I
K
I
K
A
C
A
C
I
K
I
K
I
J
J
J
J
B
D
B
D
J
L
J
L
B
D
B
D
J
L
J
L
I
K
K
K
K
C
A
C
A
K
I
K
I
C
A
C
A
K
I
K
I
I
L
L
L
L
D
B
D
B
L
J
L
J
D
B
D
B
L
J
L
J
J
I
L
K
J
E
G
E
G
M
O
M
O
E
G
E
G
M
O
M
O
J
J
I
L
K
F
H
F
H
N
P
N
P
F
H
F
H
N
P
N
P
J
K
J
I
L
G
E
G
E
O
M
O
M
G
E
G
E
O
M
O
M
J
L
K
J
I
H
F
H
F
P
N
P
N
H
F
H
F
P
N
P
N
K
I
K
I
K
I
K
I
K
A
C
A
C
I
K
I
K
A
C
A
C
K
J
L
J
L
J
L
J
L
B
D
B
D
J
L
J
L
B
D
B
D
K
K
I
K
I
K
I
K
I
C
A
C
A
K
I
K
I
C
A
C
A
K
L
J
L
J
L
J
L
J
D
B
D
B
L
J
L
J
D
B
D
B
L
I
J
K
L
M
O
M
O
E
G
E
G
M
O
M
O
E
G
E
G
L
J
K
L
I
N
P
N
P
F
H
F
H
N
P
N
P
F
H
F
H
L
K
L
I
J
O
M
O
M
G
E
G
E
O
M
O
M
G
E
G
E
L
L
I
J
K
P
N
P
N
H
F
H
F
P
N
P
N
H
F
H
F
M
M
M
M
M
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
M
N
N
N
N
B
C
D
A
F
G
H
E
J
K
L
I
N
O
P
M
M
O
O
O
O
C
D
A
B
G
H
E
F
K
L
I
J
O
P
M
N
M
P
P
P
P
D
A
B
C
H
E
F
G
L
I
J
K
P
M
N
O
N
M
P
O
N
E
F
G
H
I
J
K
L
M
N
O
P
A
B
C
D
N
N
M
P
O
F
G
H
E
J
K
L
I
N
O
P
M
B
C
D
A
N
O
N
M
P
G
H
E
F
K
L
I
J
O
P
M
N
C
D
A
B
N
P
O
N
M
H
E
F
G
L
I
J
K
P
M
N
O
D
A
B
C
O
M
O
M
O
I
J
K
L
M
N
O
P
A
B
C
D
E
F
G
H
O
N
P
N
P
J
K
L
I
N
O
P
M
B
C
D
A
F
G
H
E
O
O
M
O
M
K
L
I
J
O
P
M
N
C
D
A
B
G
H
E
F
O
P
N
P
N
L
I
J
K
P
M
N
O
D
A
B
C
H
E
F
G
P
M
N
O
P
M
N
O
P
A
B
C
D
E
F
G
H
I
J
K
L
P
N
O
P
M
N
O
P
M
B
C
D
A
F
G
H
E
J
K
L
I
P
O
P
M
N
O
P
M
N
C
D
A
B
G
H
E
F
K
L
I
J
P
P
M
N
O
P
M
N
O
D
A
B
C
H
E
F
G
L
I
J
K
Visualization
Wolfram Mathematica’s GraphPlot and Graphics features are used to visualize group assignments generated with the radix method.

Plotting group assignments in a graph

Group assignments can be visualized in many ways where the vertices represent the students in the class. Students in the same group are represented by an edge that connects the two vertices. The examples below show the graph plotted as a circle (a, with CircularEmbedding), in a grid (b, with GridEmbedding), and a web with different vertex labelling styles (c and d).

Special characters in text

Special characters can be inserted into the text. For example, ☑ = \ [CheckmarkedBox].

Combining graphs and text

CITE THIS NOTEBOOK

Radix approach to solving the social golfer problem and graph visualization​
by Wanutcha Lorpaiboon, Taweetham Limpanuparb, Sopanant Datta, Piyathida Tawornparcha, and Kridtin Chinsukserm
Wolfram Community, STAFF PICKS, September 25, 2021
​https://community.wolfram.com/groups/-/m/t/2373334