-
-
Save CalvinHarrisUK/8016408 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
= Personalized Learning = | |
Personalized learning is a problem that has yet to be solved in the real world. Students learn in all sorts of different ways and each student could achieve more if concepts are presented to them in a way that matches their personal learning style. It's not possible to have a teacher assigned to every individual student but if we use automation and graph theory, we can start to get closer to just that. In this Gist I will attempt to show that by tracking specific information about learning modules and student's testing achievements, we can present concepts to a student in a way that can help them learn more effectively. | |
:neo4j-version: 2.0.0 | |
:author: Amanda | |
:twitter: @pandamonial | |
:tags: domain:Education | |
The domain model: | |
Students complete study of different styles of learning modules. | |
Learning modules have objectives to teach learning concepts. | |
Tests contain test questions. | |
Test questions align to the learning concepts. | |
If a student does extremely well at answering test questions after they completed study of learning modules of a certain style, a teacher might prefer to continue to assign that style of learning module. If the opposite is true, they might look for a different style of learning module to assign to that student. | |
//hide | |
//setup | |
[source,cypher] | |
---- | |
//Create our teachers and courses | |
CREATE (Teach:Teacher {name:'Mrs. French', grade:3}) | |
CREATE (Math:Class {courseName:'Math'}) | |
CREATE (Teach)-[:TEACHES]->(Math) | |
//create some students | |
CREATE | |
(Tim:Student {name:'Tim', grade:3}), | |
(Jan:Student {name:'Jan', grade:3}), | |
(Lisa:Student {name:'Lisa', grade:3}), | |
(Rylan:Student {name:'Rylan', grade:3}), | |
(Kelly:Student {name:'Kelly', grade:3}), | |
(Austin:Student {name:'Austin', grade:3}), | |
(Caitlyn:Student {name:'Caitlyn', grade:3}), | |
(Zack:Student {name:'Zack', grade:3}), | |
(Zelda:Student {name:'Zelda', grade:3}) | |
//Create some learning concepts for the students to learn | |
CREATE | |
(Fractions:Concept {name:'CCSS.Math.Content.4.NF.A.1', description: 'Fractions'}), | |
(Addition:Concept {name:'CCSS.Math.Content.3.NBT.A.2', description: 'Addition'}), | |
(Multiplication:Concept {name:'CCSS.Math.Content.3.NBT.A.3', description: 'Multiplication'}) | |
CREATE | |
(Fractions)-[:AlignsTo{quarter:3}]->(Math), | |
(Addition)-[:AlignsTo{quarter:1}]->(Math), | |
(Multiplication)-[:AlignsTo{quarter:2}]->(Math) | |
//Create some learning modules to teach the learning concepts | |
CREATE (LM1:LearningModule {name:'BreakThePieApart', learningStyle:'Interactive', link:'http://lms.school.edu/BreakPieLM1'}), | |
(LM2:LearningModule {name:'AddingGame', learningStyle:'Interactive', link:'http://lms.school.edu/AddingGame'}), | |
(LM3:LearningModule {name:'ReadAboutAddition', learningStyle:'Document', link:'http://lms.school.edu/ReadAboutAddition'}), | |
(LM4:LearningModule {name:'BreedingBunnies', learningStyle:'Interactive', link:'http://lms.school.edu/BreedingBunnies'}), | |
(LM5:LearningModule {name:'ReadAboutFractions', learningStyle:'Document', link:'http://lms.school.edu/ReadAboutFractions'}), | |
(LM6:LearningModule {name:'ReadAboutMultiplication', learningStyle:'Document', link:'http://lms.school.edu/ReadAboutMultiplication'}) | |
CREATE | |
(LM1)-[:OBJECTIVE]->(Fractions), | |
(LM5)-[:OBJECTIVE]->(Fractions), | |
(LM2)-[:OBJECTIVE]->(Addition), | |
(LM3)-[:OBJECTIVE]->(Addition), | |
(LM4)-[:OBJECTIVE]->(Multiplication), | |
(LM6)-[:OBJECTIVE]->(Multiplication) | |
//Have the students complete the learning modules | |
CREATE | |
(Zelda)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Zack)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Caitlyn)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Austin)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Kelly)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Jan)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Rylan)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Lisa)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Tim)-[:COMPLETED_STUDY {date: '1-1-13'}]->(LM1), | |
(Zelda)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Zack)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Caitlyn)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Austin)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Kelly)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Jan)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Rylan)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Lisa)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Tim)-[:COMPLETED_STUDY {date: '3-1-13'}]->(LM3), | |
(Zelda)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Zack)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Caitlyn)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Austin)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Kelly)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Jan)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Rylan)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Lisa)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4), | |
(Tim)-[:COMPLETED_STUDY {date: '8-1-13'}]->(LM4) | |
//Create some test questions, tests, and test events to assess the students comprehension. | |
CREATE | |
(Item1:TestQuestion{name:'MCQuarterOf32', type:'Multiple Choice',question:'What is 1/4 of 32? Hint 32/8 + 32/8', a:2, b:4,c:6,d:8, correct:'d'}), | |
(Item2:TestQuestion{name:'MCTripleDigitsAddition', type:'Multiple Choice',question:'What is 356 + 234?', a:543,b:580, c:590,d:490, correct: 'c'}), | |
(Item3:TestQuestion{name:'ITripleDigitsAddition', type:'Interactive',question:'Hit stop when the man climbs to the correct number', correct:'590'}), | |
(Item4:TestQuestion{name:'EssayMultiplication', type:'Essay',question:'If three bunnies each have 5 babies, how many baby bunnies will there be? Explain your answer.', correct:'15, 3 * 5 = 15. Ensure that the explanation is correct'}), | |
(Test1:Assessment{name:'TestA'}), | |
(TE1:TestEvent{date:'9-2-13'}) | |
//Align test questions to the concepts that they are testing | |
CREATE | |
(Item1)-[:ALIGNS]->(Fractions), | |
(Item2)-[:ALIGNS]->(Addition), | |
(Item3)-[:ALIGNS]->(Addition), | |
(Item4)-[:ALIGNS]->(Multiplication), | |
(Item5)-[:ALIGNS]->(Addition) | |
//Put test questions on tests | |
CREATE | |
(Test1)-[:CONTAINS]->(Item1), | |
(Test1)-[:CONTAINS]->(Item2), | |
(Test1)-[:CONTAINS]->(Item4) | |
//Assign our test event a teacher | |
CREATE | |
(TE1)-[:ADMINISTRATION]->(Test1), | |
(Teach)-[:ADMINISTERS {date:'9-1-13'}]->(TE1) | |
//Give the tests to students and record their scores as well as what questions they missed | |
CREATE | |
(Zelda)-[:ASSESSED {score:'66%'}]->(TE1), | |
(Zack)-[:ASSESSED {score:'66%'}]->(TE1), | |
(Caitlyn)-[:ASSESSED {score:'33%'}]->(TE1), | |
(Austin)-[:ASSESSED {score:'66%'}]->(TE1), | |
(Kelly)-[:ASSESSED {score:'66%'}]->(TE1), | |
(Jan)-[:ASSESSED {score:'100%'}]->(TE1), | |
(Rylan)-[:ASSESSED {score:'33%'}]->(TE1), | |
(Lisa)-[:ASSESSED {score:'66%'}]->(TE1), | |
(Tim)-[:ASSESSED {score:'66%'}]->(TE1), | |
(Zelda)-[:INCORRECT {date: '9-2-12', response:'b', testName:'Test1'}]->(Item2), | |
(Zack)-[:INCORRECT {date: '9-2-12', response:'b', testName:'Test1'}]->(Item2), | |
(Austin)-[:INCORRECT {date: '9-2-12', response:'b', testName:'Test1'}]->(Item2), | |
(Kelly)-[:INCORRECT {date: '9-2-12', response:'a', testName:'Test1'}]->(Item2), | |
(Rylan)-[:INCORRECT {date: '9-2-12', response:'b', testName:'Test1'}]->(Item2), | |
(Rylan)-[:INCORRECT {date: '9-2-12', response:'a', testName:'Test1'}]->(Item1), | |
(Lisa)-[:INCORRECT {date: '9-2-12', response:'c', testName:'Test1'}]->(Item2), | |
(Caitlyn)-[:INCORRECT {date: '9-2-12', response:'c', testName:'Test1'}]->(Item1), | |
(Caitlyn)-[:INCORRECT {date: '9-2-12', response:'c', testName:'Test1'}]->(Item4), | |
(Tim)-[:INCORRECT {date: '9-2-12', response:'b', testName:'Test1'}]->(Item2) | |
---- | |
== What are the questions on the test? | |
[source, cypher] | |
---- | |
MATCH (test)-[:CONTAINS]->(testQuestion) | |
RETURN testQuestion.name as Name, testQuestion.question as Question | |
---- | |
//table | |
== Who took the test on what date and who was the administrator? | |
[source, cypher] | |
---- | |
MATCH (student)-[:ASSESSED]->(TE)<-[:ADMINISTERS]-(teacher) | |
RETURN student.name as Student, TE.date as Date, teacher.name as Teacher | |
---- | |
//table | |
== How did the students score? | |
[source, cypher] | |
---- | |
match (student)-[r:ASSESSED]->(TE)<-[:ADMINISTERS]-(teacher) | |
return student.name as Student, r.score as Score, teacher.name as Teacher | |
---- | |
//table | |
== What style of learning helped the students get questions correct? | |
[source, cypher] | |
---- | |
MATCH | |
(test)-[:CONTAINS]->(testQuestion)-[:ALIGNS]->(testConcept), | |
(testConcept)<-[:OBJECTIVE]-(LM:LearningModule), | |
(LM:LearningModule) <-[:COMPLETED_STUDY]-(student), | |
(student)-[:ASSESSED]->(TE) | |
WHERE NOT ((student)-[:INCORRECT]->(testQuestion)) | |
RETURN student.name as Student,LM.learningStyle as LearningStyle,count(testQuestion) as Correct | |
ORDER BY student.name | |
---- | |
//table | |
//graph |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment