Math Discourse
No preview image
Model was written in NetLogo 5.0RC7
•
Viewed 335 times
•
Downloaded 39 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
breed [students student] breed [teachers teacher] breed [dialogs dialog] ;current functionality: ;teacher asks answers, students give answers, teacher clarifies globals [ rows columns student-color ;base color of the students high-clarity ;how high of clarity something has to be before clear correct-idea ;denotes which idea is correct change-idea ;how likely students are to change idea when asked challenging questions random-report ;counts for reports student-student-dialog student-teacher-dialog open-questions-count probing-questions-count more-questions-count evaluations-count advancing-questions-count recruiting-questions-count explanations-count ] students-own [ idea ; what idea you have participation ; how willing you are to participate respond ;how likely you are to respond to other students clarity ; how clear your ideas are explanation ; how in depth you explain questioning ; how likely you are to ask questions ; students only ask probing questions speaker? ; 1 if they are speaking name ; give the student a name student? ;whether they are a student ] teachers-own [ info-question ; how likely you are to ask information questions probe-question ; how likely you are to ask probing questions more-question ; how likely you are to ask generating questions evaluate ; how likely you are to evaluate student ideas advancing ; how likely you are to push student ideas further recruit ; how likely you are to get students to ask others questions explain ; how likely you are to explain ideas to students student? ;whether they are a student ] dialogs-own [ category ; what type of thing is said student? ; did a student say it sayer ; agent who said it target ; who the thing is targeted at (not always someone) text ; the words it is last-idea ; what student idea was discussed last ] to setup clear-all reset-ticks ;set globals set rows 5 set columns 6 set high-clarity 50 set student-color 50 set correct-idea 3 ;set which idea is correct set change-idea 30 ;30 percent chance of changing ideas set student-student-dialog 0 set student-teacher-dialog 0 set open-questions-count 0 set probing-questions-count 0 set more-questions-count 0 set evaluations-count 0 set advancing-questions-count 0 set recruiting-questions-count 0 set explanations-count 0 ;create rows of students let yrepeat 3 let xrepeat 3 let yoffset 4 let xoffset -11 let student-count 0 repeat rows [ repeat columns [ create-students 1 [ ;put them into 'desk' formation set shape "person" set ycor (yrepeat + yoffset) set xcor (xrepeat + xoffset) set xrepeat (xrepeat + 3) set idea random 4 set participation ((Average-participation - 20) + random 40) set explanation ((Average-explanation - 20) + random 40) set questioning ((Average-questioning - 20) + random 20) set respond ((Average-responding - 20) + random 20) set clarity random 100 set speaker? 0 set student? 1 set size 2 set name (word student-count) set student-count student-count + 1 ;sets the color of the turtles according to participation level set color scale-color student-color (participation + 10) 0 100 ] ] set yrepeat (yrepeat - 3) set xrepeat 3 ] ;give students ideas label-by-idea ;make the teacher create-teachers 1 [ set ycor (yoffset + 6) set xcor (xoffset + 2 * columns - 1) set shape "face happy" set color 15 set size 2 set info-question Info-questions set probe-question Clarifying-questions set more-question Generating-questions set evaluate Evaluation set advancing Advancing-questions set recruit Encourage-student-talk set explain Give-explanations set student? 0 ] ;make the dialog create-dialogs 1 [ set ycor 14 set xcor 14 set color 0 set shape "dot" set target "nobody" set category "nothing" ] end to go ; ask dialogs [set label-color white] ifelse all? dialogs [category = "nothing"] [teacher-ask-question] [ ifelse all? dialogs [category = "probe-question"] [student-clarify] [ ifelse all? dialogs [category = "question"] [answer-question] [ ifelse all? dialogs [category = "student-request"] [student-request] [ ifelse all? dialogs [category = "targeted-question"] [targeted-response] [ ifelse all? dialogs [category = "idea"] [respond-idea] [ stop] ] ] ] ] ] label-by-idea tick end to answer-question ifelse all? dialogs [student? = 0] [student-answer-question] [teacher-answer-question] end to respond-idea ifelse all? dialogs [student? = 0] ;a teacher idea was experssed [teacher-ask-question] ;a student idea was expressed [respond-to-student-idea] end to respond-to-student-idea ;if the idea is unclear, see if someone will probe it ifelse all? dialogs [ [clarity] of sayer < high-clarity] ;see if a student will respond to it [let responder one-of students with [questioning > random 100 and speaker? = 0 and participation > random 100] ;want to sometimes not get a student ;if we get a student to respond, have them probe ifelse is-student? responder [probe-student-thinking responder] [low-clarity-teacher-moves] ] ;if the idea is clear ;does a student want to add to the idea [let responder one-of students with [respond > random 100 and speaker? = 0 and participation > random 100] ifelse is-student? responder [ask dialogs [set target sayer] student-to-student responder ] ;ask for another idea [high-clarity-teacher-moves] ] end to low-clarity-teacher-moves ;see if we can recruit a student to probe ifelse all? teachers [recruit > random 100] [recruit-student] ;otherwise see if the teacher will probe [probing-teacher-moves] end to probing-teacher-moves ifelse all? teachers [probe-question > random 100] [probe-student-thinking one-of teachers] ;if no probing, either ask for another idea or evaluate current idea [ifelse all? teachers [more-question > random 100] [generate-student-idea] ;do we evaluate the idea? [ifelse all? teachers [evaluate > random 100] [eval-wrong] [no-eval] ] ] end to high-clarity-teacher-moves ifelse all? teachers [more-question > random 100] [generate-student-idea] ;is it correct? [ifelse all? dialogs [ [idea] of sayer = correct-idea] [correct-teacher-moves] ;wrong: recruit or [wrong-teacher-moves] ] end to correct-teacher-moves ;are we going to push student thinking further ifelse all? teachers [advancing > random 100] [push-student-idea one-of teachers] ;are we going to explain the right answer [ifelse all? teachers [explain > random 100] [teacher-explains] ;are we going to evaluate? [ifelse all? teachers [evaluate > random 100] ;if the idea is correct, eval-correct [eval-correct] ;otherwise don't evaluate the idea [no-eval] ] ] end to wrong-teacher-moves ifelse all? teachers [recruit > random 100] [recruit-student] [no-recruit-wrong-teacher-moves] end to no-recruit-wrong-teacher-moves ifelse all? teachers [advancing > random 100] [push-student-idea one-of teachers] [ifelse all? teachers [explain > random 100] [teacher-explains] [ifelse all? teachers [evaluate > random 100] ;if the idea is wrong, eval-wrong ;ifelse all? dialogs [ [idea] of sayer = 3] [eval-wrong] ;otherwise don't evaluate the idea [no-eval] ] ] end to student-request ifelse all? dialogs [ [clarity] of target < high-clarity] ;see if a student will respond to it [let responder one-of students with [questioning + 20 > random 100 and speaker? = 0 and participation > random 100] ;want to sometimes not get a student ;if we get a student to respond, have them probe ifelse is-student? responder [probe-student-thinking responder] ;otherwise see if the teacher will probe [probing-teacher-moves] ] [let responder one-of students with [respond + 20 > random 100 and speaker? = 0 and participation > random 100] ifelse is-student? responder [student-to-student responder] [no-recruit-wrong-teacher-moves] ] end to student-to-student [responder] ;students respond to each other ifelse all? dialogs [[idea] of target = [idea] of responder] [student-agree responder] [ifelse [questioning] of responder > random 100 [push-student-idea responder] [student-disagree responder] ] end to student-agree [responder] ask dialogs [ set category "idea" ifelse is-student? responder [set student? 1] [set student? 0] ask links [die] if target != responder [ ask target [create-link-from responder] count-links ] set target "nobody" set sayer responder ifelse student? = 1 [ask students [ set speaker? 0 ] ask sayer [ set speaker? 1 ] ] [ask students [ set speaker? 0 ] ] set last-idea [idea] of sayer set text "I agree" set label text ] end to student-disagree [responder] ask dialogs [ set category "idea" ifelse is-student? responder [set student? 1] [set student? 0] ask links [die] if target != responder [ ask target [create-link-from responder] count-links ] set target "nobody" set sayer responder ifelse student? = 1 [ask students [ set speaker? 0 ] ask sayer [ set speaker? 1 ] ] [ask students [ set speaker? 0 ] ] set last-idea [idea] of sayer set text (word "I disagree. I think " generate-idea sayer) set label text ] end to push-student-idea [responder] ;ask students questions to push understanding forward ask dialogs [ set category "targeted-question" ifelse is-student? responder [set student? 1] [set student? 0 set advancing-questions-count advancing-questions-count + 1] ask links [die] ;if the teacher is facilitating, we want link btwn target and responder if is-teacher? sayer [set sayer target] if sayer != responder [ ask sayer [create-link-from responder] count-links ] ask students [ set speaker? 0 ] if is-student? responder [ask responder [ set speaker? 1 ] ] set target sayer set sayer responder set text (word "What about " generate-question target) ; set label-color red set label text ] end to recruit-student ;get student to ask advancing question ask dialogs [ set category "student-request" set recruiting-questions-count recruiting-questions-count + 1 set student? 0 let responder one-of teachers ; let participation-level random 100 ; ifelse any? students with [participation > participation-level and speaker? = 0] ; [set target one-of students with [participation > participation-level and speaker? = 0]] ; [set target max-one-of students [participation]] set target sayer ;we want to keep the speaker the same ; ask students [ ; set speaker? 0 ; ] ask links [die] ; if sayer != responder [ ; ask target [create-link-from responder] ; ] set sayer responder set text (word "Does anyone have a question or reply to " [name] of target "'s comment?" ) set label text ] end to teacher-explains ;teacher explains math idea ask dialogs [ set explanations-count explanations-count + 1 set student? 0 let responder one-of teachers ask links [die] ask students [ set speaker? 0 ] let explained-idea last-idea ask students with [idea = explained-idea] [ raise-clarity 10 ] set sayer responder set category "idea" set target "nobody" set text "Teacher explanation" ;include idea set label text ] end to targeted-response ask dialogs [ set student? 1 let responder target set category "idea" ask links [die] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set sayer responder ask students [ set speaker? 0 ] ask sayer [ set speaker? 1 ] set target "nobody" let change-level random 100 ifelse change-idea > change-level and [idea] of sayer != correct-idea [ask sayer [ set idea correct-idea set clarity random 100 ] set text (word "I change my mind. " generate-idea responder)] [set text generate-idea sayer] set last-idea [idea] of sayer set label text ] end to teacher-ask-question ask dialogs [ set open-questions-count open-questions-count + 1 set student? 0 let responder one-of teachers if is-agent? sayer [ ask links [die] if sayer != responder [ ask sayer [create-link-from responder] count-links ] ] set sayer responder ask students [ set speaker? 0 ] set category "question" set target "nobody" set text "Teacher Question" set label text ] end to teacher-answer-question end to student-answer-question ;if the student ask dialogs [ ;I want the students with more participation to be more likely to be called on let responder one-of students with [participation > random 100] ;if we don't get any students with participation high enough, use one with highest if not is-student? responder [set responder max-one-of students [participation]] ;if we had a specific student in mind if is-student? target [set responder target] set student? 1 ask links [die] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set sayer responder ask students [ set speaker? 0 ] ask sayer [ set speaker? 1 ] set target "nobody" set category "idea" set last-idea [idea] of sayer set text generate-idea sayer set label text ] end to probe-student-thinking [responder] ask dialogs [ set category "probe-question" ifelse is-student? responder [set student? 1] [set student? 0 set probing-questions-count probing-questions-count + 1] if is-student? target [set sayer target] ask sayer [ raise-participation 10 ] ask links [die] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set target sayer set sayer responder ifelse is-student? sayer [ask students [ set speaker? 0 ] ask sayer [ set speaker? 1 ] ] [ask students [ set speaker? 0 ] ] set text "What did you mean?" set label text ] end to student-clarify ask dialogs [ set category "idea" set student? 1 let responder target set target "nobody" ask links [die] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set sayer responder ask students [ set speaker? 0 ] ask sayer [ set speaker? 1 ] set last-idea [idea] of sayer set text (word generate-idea responder " - clarity") ask responder [ raise-clarity 10 ] set label text ] end to generate-student-idea ask dialogs [ set category "question" set more-questions-count more-questions-count + 1 set student? 0 let responder one-of teachers let participation-level random 100 ifelse any? students with [participation > participation-level and speaker? = 0] [set target one-of students with [participation > participation-level and speaker? = 0]] [set target max-one-of students with [speaker? = 0] [participation]] ask students [ set speaker? 0 ] ask links [die] if sayer != responder [ ask target [create-link-from responder] count-links ] set sayer responder set text (word "What did you think " [name] of target "?" ) set label text ] end to no-eval ask dialogs [ set category "idea" set student? 0 let responder one-of teachers ask links [die] ask students [ set speaker? 0 ] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set sayer responder set target "nobody" set text "Interesting" set label text ] end to eval-correct ;teacher saying an idea is correct ask dialogs [ set category "idea" set evaluations-count evaluations-count + 1 set student? 0 let eval-idea [idea] of sayer ask students with [idea = eval-idea] [ ;ask sayer [ raise-participation 10 ] let responder one-of teachers ask links [die] ask students [ set speaker? 0 ] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set sayer responder set target "nobody" set text "Good!" set label text ] end to eval-wrong ;teacher saying an idea is wrong ask dialogs [ let eval-idea last-idea ask sayer [ lower-participation 30 ] ask sayer [ask other students with [idea = eval-idea] [ ;how do I make it not the sayer student? ;ask sayer [ lower-participation 10 ] ] let responder one-of teachers ask links [die] ask students [ set speaker? 0 ] if sayer != responder [ ask sayer [create-link-from responder] count-links ] set category "idea" set evaluations-count evaluations-count + 1 set student? 0 set sayer responder set target "nobody" set text "You're wrong!" set label text ] end to-report generate-idea [responder] if [idea] of responder = 0 [report "Student response A"] if [idea] of responder = 1 [report "Student response B"] if [idea] of responder = 2 [report "Student response C"] if [idea] of responder = 3 [report "Student response D"] if [idea] of responder = 4 [report "Student response E"] end to-report generate-question [recipient] if [idea] of recipient = 0 [report "Question for response A"] if [idea] of recipient = 1 [report "Question for response B"] if [idea] of recipient = 2 [report "Question for response C"] if [idea] of recipient = 3 [report "Question for response D"] if [idea] of recipient = 4 [report "Question for response E"] end to raise-clarity [amount] ifelse clarity < 100 - amount [set clarity (clarity + amount)] [set clarity 100] end to raise-participation [amount] ifelse participation < 100 - amount [set participation (participation + amount)] [set participation 100] set color scale-color student-color (participation + 10) 0 100 end to lower-participation [amount] ifelse participation > amount [set participation (participation - amount)] [set participation 0] set color scale-color student-color (participation + 10) 0 100 end to label-by-idea ask students [ if idea = 0 [set label "A"] if idea = 1 [set label "B"] if idea = 2 [set label "C"] if idea = 3 [set label "D"] if idea = 4 [set label "E"] ] end to count-links ask links [ ifelse all? both-ends [student? = 1] [set student-student-dialog student-student-dialog + 1] [set student-teacher-dialog student-teacher-dialog + 1] ] end
There is only one version of this model, created about 13 years ago by Elizabeth Dyer.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.