Choose Your Own Solution: Supporting Optional Blocks in Block Ordering Problems
Oakeson, Smith, Winder et al.
This paper extends the functionality of block ordering problems (such as Parsons problems and Proof Blocks) to include optional blocks. We detail the algorithms used to implement the optional block feature and present usage experiences from instructors who have integrated it into their curriculum. The optional blocks feature enables instructors to create more complex Parsons problems with multiple correct solutions utilizing omitted or optional blocks. This affords students a method to engage with questions that have several valid solutions composed of different answer components. Instructors can specify blocks with multiple mutually exclusive dependencies, which we represent using a multigraph structure. This multigraph is then collapsed into multiple directed acyclic graphs (DAGs), allowing us to reuse existing algorithms for grading block ordering problems represented as a DAG. We present potential use cases for this feature across various domains, including helping students learn Git workflows, shell command sequences, mathematical proofs, and Python programming concepts.
academic
Choose Your Own Solution: Supporting Optional Blocks in Block Ordering Problems
标题: Choose Your Own Solution: Supporting Optional Blocks in Block Ordering Problems
作者: Skyler Oakeson (Utah State University), David H. Smith IV (Virginia Tech), Jaxton Winder (Utah State University), Seth Poulsen (Utah State University)
Function Collapse(M, F):
CollapsedGraphs (CD) ← empty list
PartiallyCollapsedGraphs (PCGs) ← empty queue
Enqueue(PCGs, M)
while PCG is not empty:
G ← Dequeue(PCGs)
(v, DAG) ← DFSuntil(G, F)
if v is NULL:
append DAG to CD
else:
foreach Color in G:
PCG ← copy(G)
Remove all edges on v with color ≠ Color
Enqueue(PCGs, PCG)
return CD