Requirements Analysis - 1024mb-Wits/moodle_plugin GitHub Wiki
Project Brief (as provided by Professor Tamlin Love)
With the move to online learning, the use of Moodle as a learning tool is more important than ever. This project will focus on the development of new question types for Moodle quizzes. The questions should allow students to write tests about Binary Search Trees, Binary Heaps, AVL Trees and Sorting. The plugin should support the automatic generation of questions and should be able to randomly generate questions within a specific format so that students writing tests can be given their own version of the relevant questions. Client for this project: Dr Richard Klein.
Purpose of the system
The purpose of this project is that it will make testing students on data structures a much easier experience for lecturers by allowing for auto-generation of questions as well as automatic marking.
Current System (how the system worked before the start of this project)
Questions are manually marked by lecturers and tutors, which is a time-consuming and repetitive process. The questions themselves are also not auto-generated and are created manually.
Proposed System
The important human users of this system are lecturers and students. Lecturers should be able to set questions in an efficient and simple manner using the plugin software. This includes creating questions, editing question settings, and adding questions to tests or quizzes. Students should then be able to answer these questions in an assessment. Their answers or input should be recorded by the software and interpreted in such a way by the software that it can check if their answers are correct and provide a mark. The plugin should be designed in a way such that interacting with it is intuitive and non-complex; in particular, editing AVL trees using the HTML canvas should not create confusion for students. The goal is easy-to-use and beneficial software that simplifies the testing process for both lecturers and students.
Sprint 1
Requirements
-
The plugin should allow lecturers to add questions to Moodle quizzes and test.
-
The plugin should allow the lecturer to adjust question settings upon question creation.
-
The plugin should allow students to delete and insert nodes in the tree.
The user stories for sprint 1 and their corresponding user acceptance tests are as follows (please note that the size point scale is from 1-5):
#1 Question Creation User Story: As a lecturer, I can create questions based on trees so that I can add them to students' assessments. Size points: 2 UAT: Given I am a lecturer and have access to the IDSA Moodle course, when I create assessments, I can choose to create a new question, then a question will be created and added to that assessment.
Tasks: • Write Moodle code that allows a specific question type (AVL tree) to be selected, which creates the tree question.
#2 Question Selection User Story: As a lecturer, I can select a specific question subtype so that I can add specific types of questions to assessments. Size points: 2 UAT: Given I am a lecturer and have access to the IDSA Moodle course, when I create assessments, I can choose AVL trees from a list of question types, then an AVL tree question will be created and added to that assessment.
Tasks: • Write Moodle code that allows a specific question type (AVL tree) to be selected, which creates the tree question.
#3 Inserting nodes User Story: As a lecturer, I can insert nodes into the HTML widget tree to construct a tree that can be added to questions. Size points: 4 UAT: Given that I am a lecturer and have created an AVL tree question and accessed the settings page for the question, when I double click on an empty space on the canvas of the HTML tree widget, then I can add nodes to the canvas and thus insert them into the tree I am constructing.
Tasks • Write HTML code that allows nodes to be inserted into the widget
#4 Inserting nodes User Story: As a student, I can insert nodes into the HTML widget tree to answer questions requiring the insertion of a node. Size points: 4 UAT: Given that I am a student, when I double click on an empty space on the canvas of the HTML tree widget, then I can add nodes to the canvas and thus insert them into the tree I am constructing.
Tasks • Write HTML code that allows nodes to be inserted into the widget
Sprint 2
Requirements
-
The plugin should allow students to move nodes to where they wish in the tree.
-
The plugin should allow lecturers to move nodes to where they wish in the tree.
-
The plugin should allow students to change or insert the value of a node.
-
The plugin should allow lecturers to change or insert the value of a node.
-
The plugin should allow students to add and delete edges in the tree.
-
The plugin should allow lecturers to add and delete edges in the tree.
-
The plugin should allow students to delete nodes in the tree.
-
The plugin should allow lecturers to delete nodes in the tree.
The user stories for sprint 2 and their corresponding user acceptance tests (UATs) and tasks are as follows (please note that the size point scale is from 1-5):
Student-side user stories
#1 Inserting edges User Story: As a student, I can insert edges into the HTML widget tree in order to connect two nodes in the tree I am constructing. Size points: 4 UAT: Given that I am a student, when I select two existing nodes on the canvas of the HTML tree widget and click the “Connect Nodes” button, then I can an edge between those nodes.
Tasks: • Write HTML code that allows nodes and edges to be added onto the HTML tree widget canvas.
#2 Dragging nodes User Story: As a student, I can drag nodes in the tree in order to place them where I want them. Size points: 4 UAT: Given I am a student, when I press down on an existing node, then I can change the position of nodes by dragging them across the canvas until I lift my finger.
Tasks: • Write HTML code that allows nodes to be dragged across the HTML tree widget canvas.
#3 Delete nodes and edges User Story: As a student, can delete nodes and edges from the HTML widget tree in order to answer questions requiring the deletion of a node. Size points: 4 UAT: Given I am a student, when I double click on an existing node in the HTML tree widget, then that node gets deleted along with its associated edges.
Tasks: • Write HTML code that allows nodes and edges to be deleted from the HTML tree widget canvas.
#4 Editing the value of a node User Story: As a student, I can click a node on the widget and be able to edit its value, to answer a question to correct the AVL property. UAT: Given that I am a student, when I click on a node I can edit it using the pop up provided, then the value of the node will change.
Tasks: • Write HTML code for a pop up in order to be able to edit values.
Lecturer-side user stories
#1 Question Settings User Story: As a lecturer, I can adjust the settings on questions while setting them to ask questions with specific characteristics. Size points: 5 UAT: Given I am a lecturer, when I create a question, a settings page appears, then I can use the settings page to adjust the settings on the question to specify the question’s content.
Tasks: • Write Moodle code that allows specific settings for the content of the questions to be selected (i.e.: create a settings page that appears upon the creation of a tree question). • Write Moodle code that auto-generates theory questions based on the settings specified by the lecturer.
#2 Accessing tree widget User Story: As a lecturer, I can access the HTML tree widget during the question-setting process so that I can construct trees and add them to questions. Size points: 5 UAT: Given I am a lecturer, when I create a question a settings page appears then I can access and interact with the HTML tree widget within that settings page.
Tasks: • Write Moodle code that allows the HTML widget to accessed during the setting of a tree question • Write Moodle code that adds the HTML tree created by the lecturer to the question that the student will see when accessing the assessment
#3 Inserting edges User Story: As a lecturer, I can insert edges into the HTML widget tree in order to connect two nodes in the tree I am constructing. Size points: 4 UAT: Given that I am a lecturer and have an AVL tree question given in my assessment, when I select two existing nodes on the canvas of the HTML tree widget and click the “Connect Nodes” button, then I can add an edge between those nodes.
Tasks: • Write HTML code that allows edges to be added onto the HTML tree widget canvas.
#4 Dragging nodes User Story: As a lecturer, I can drag nodes in the tree in order to place them where I want them. Size points: 4 UAT: Given I am a lecturer and have created an AVL tree question, when I press down on an existing node in the HTML widget tree, then I can drag that node across the HTML tree widget canvas until I stop pressing the node.
Tasks: • Write HTML code that allows nodes to be dragged across the HTML tree widget canvas.
#5 Delete nodes and edges User Story: As a lecturer, I can delete nodes and edges from the HTML widget tree in order to answer questions requiring the deletion of a node. Size points: 4 UAT: Given I am a lecturer and have created an AVL tree question, when I double click on an existing node in the HTML tree widget, then that node and its associated edges will be deleted from the tree.
Tasks: • Write HTML code that allows nodes and edges to be deleted from the HTML tree widget canvas.
#6 Editing the value of a node User Story: As a lecturer, I can click a node on the widget and be able to edit its value, to change the AVL tree generated to my liking. UAT: Given that I am a lecturer, when I click on a node, I can edit it using the pop up provided, then the value of the node will change.
Tasks: • Write HTML code for a pop up to be able to edit values.
Sprint 3
Requirements
-
Add construction question type
-
Add properties question type
-
Add functionality to drag entire subtrees
-
Add functionality to delete entire subtrees
The user stories for Sprint 3 are as follows:
#Construction
As a lecturer I can create an AVL question of type “AVL Construction” so that I can test the students' knowledge of how to construct an AVL tree.
#Properties
As a lecturer I can create an AVL question of type “Properties” so that I can test the students knowledge of tree properties.
#Subtrees
As a student, I can drag subtrees in the tree widget in order to place them where I want them.
As a lecturer, I can drag subtrees in the tree widget in order to place them where I want them.
#Delete subtrees
As a student, I can delete subtrees from a tree in order to build my desired tree.
As a lecturer, I can delete subtrees from a tree in order to build my desired tree.
Sprint 4
Requirements
-
Add height question with functionality to add height to nodes
-
Add auto-generation of trees
-
Add conversion of trees into string representation
The sprint 4 user stories are as follows:
As a student, I can click a node on the widget and add the height of the node, to answer a question requiring the height of the nodes in the tree.
As a lecturer, I can convert a tree created using the HTML widget into a string representation in order to store the tree’s representation easily in the Moodle database.
As a lecturer, I can auto-generate a tree with a specific number of nodes on the HTML widget canvas, so that I can create a tree without having to add nodes and edges manually.
As a student, I can enter the postorder, preorder, and inorder traversals of a tree into the widget to answer questions requiring those traversals.
As a lecturer, I can choose to create a question of type "Construct a Tree Given Certain Nodes", in order to create a question that uses an auto-generated AVL tree.
For more details, visit this project's Taiga page.