RoboTutorLLC / RoboTutor_2020

Other
3 stars 1 forks source link

Feature request: allow return to PLACEMENT mode to escape misunderestimated level #84

Open JackMostow opened 2 years ago

JackMostow commented 2 years ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Accidental misplacement at low level due to noisy environment

Describe the solution you'd like A clear and concise description of what you want to happen. Return to PLACEMENT mode -- when?

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered. Add "I want something harder" to activity picker:

a. Always +: simplest -: unmerited -: clutters menu

b. After scoring 100% correct on any activity <-- DO THIS +: reward

c. After acing hardest or final activity in a level -: makes misplaced kids wait too long

Approach to be followed (optional) A clear and concise description of approach to be followed.

Additional context Add any other context or screenshots about the feature request here.

JackMostow commented 2 years ago

Re-PLACEMENT: Anjali, When to offer escape to PLACEMENT mode? What option(s) should it replace? How to phrase it? (see “too easy, I want something harder”) How should it be represented visually? (upward diagonal arrow didn’t work in self-assessment version years ago) – and why (or why not)? – what if any questions are worth asking our Swahili-speaking partners or even trying By prototyping as screenshot By implementing in RoboTutor (much costlier)

JackMostow commented 1 year ago

What to keep/change in https://github.com/RoboTutorLLC/RoboTutor_2020/blob/development/app/src/main/assets/tutors/activity_selector/animator_graph.json:

"INPUT_HESITATION_FEEDBACK": "method": "postEvent", "parms": "RIPPLE_DESCRIBE:String": keep; device sequence of options in Java

"BUTTON_DESCRIPTION": "parms": "POINT_AT_BUTTON:String|{{activity_selector.buttonid}}:String": keep; just define its activity_selector.buttonid in Java "soundsource": "{{activity_selector.helpAudio}}.mp3": keep; just define "too easy; I want something harder" in the Java component

NOTE: helpAudio describes what will happen if tap menu item to choose it; promptAudio acknowledges the choice

"method": "postNamed", "parms": "DESCRIBE_NEXT:String|DESCRIBE_NEXT:String|800:Long": [ ] does this go to next button?

"BUTTON_BEHAVIOR": "soundsource": "{{activity_selector.promptAudio}}.mp3": keep; just define "something harder" in the Java component "parms": "BUTTON_EVENT:String|{{activity_selector.buttonBehavior}}:String": keep; just define its buttonBehavior in Java

"INIT_MODULE": "method": "setTutorSelectLayout": keep; make Java pick "Do it again" vs. "Too easy" icon "method": "setDebugLayout": keep; [ ] check if still used and if so what if anything to change

JackMostow commented 1 year ago

What to keep/change in Java

app/src/main/java/cmu/xprize/robotutor/tutorengine/widgets/core/TActivitySelector.java: ll. 300ff: if (menu instanceof StudentChooseMatrixActivityMenu) { SaskActivity.initializeButtonsAndSetButtonImages(layoutName, _activeLayout, null); } else if (menu instanceof CycleMatrixActivityMenu) { SaskActivity.initializeButtonsAndSetButtonImages(layoutName, _activeLayout, nextTutors);

[app/src/main/java/cmu/xprize/robotutor/tutorengine/util/StudentChooseMatrixActivityMenu.java] and [app/src/main/java/cmu/xprize/robotutor/tutorengine/util/CycleMatrixActivityMenu.java]

activeLayout.items[3].behavior = AS_CONST.SELECT_REPEAT; -- 76 | activeLayout.items[3].prompt = "lets do it again"; 77 | activeLayout.items[3].help = "lets do it again"; 146 | activeLayout.items[2].behavior = AS_CONST.SELECT_REPEAT; -- | -- 147 | activeLayout.items[2].prompt = "lets do it again"; 148 | activeLayout.items[2].help = "lets do it again"; -- 76 | activeLayout.items[3].prompt = "lets do it again"; 77 | activeLayout.items[3].help = "lets do it again";

behavior = AS_CONST.SELECT_HARDER prompt = "That was too easy. I want something harder." help = "something harder"

comp_session/src/main/java/cmu/xprize/comp_session/AS_CONST.java

public static final String SELECT_MAKE_HARDER = "SELECT_MAKE_HARDER"; // get rid of me

app/src/main/java/cmu/xprize/robotutor/tutorengine/util/PerformanceData.java:

        case AS_CONST.SELECT_MAKE_HARDER:
            selfAssessment = StudentSelfAssessment.TOO_EASY;
            break;

app/src/main/java/cmu/xprize/robotutor/tutorengine/util/SelfAssessmentPromotionRules.java: public PromotionDecision assessPerformance(PerformanceData performance) { ... case TOO_EASY: return PromotionDecision.DOUBLE_NEXT;

NOTE:

  1. Leave obsolete SelfAssessment logic as is, but borrow and adapt relevant components
  2. Define constants like TOO_EASY and SELECT_MAKE_HARDER with different names, e.g. WANT_HARDER, RESUME_PLACEMENT
  3. Whether Cycle_matrix or Choose_matrix --> stay in same matrix, switch to placement mode, jump to the position it picks, and start that activity, because activity menu should always launch an activity unless "stop using RoboTutor"
  4. What if already in placement mode? a. Apply the same logic anyway b. Apply this logic only if in promotion mode, i.e. keep Do it again if in placement mode