Skip to content

Instantly share code, notes, and snippets.

@JoshCheek
Created January 28, 2016 17:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoshCheek/6fa26bf203f4b19b806b to your computer and use it in GitHub Desktop.
Save JoshCheek/6fa26bf203f4b19b806b to your computer and use it in GitHub Desktop.
Why students should invest in becoming good at their tools
# Why a student should invest the time to become effective with their tools
class Student
attr_reader :learned, :effectiveness
def initialize(effectiveness)
@learned, @effectiveness = 1.0, effectiveness
end
def practice(topic_difficulty, time)
# Current knowledge and effectiveness reduce the difficulty of topic
relative_difficulty = topic_difficulty / @learned / effectiveness
# The amount they learn is based on the time they put in, and how hard it is (see note at bottom)
learned_during_practice = time / relative_difficulty
@learned += learned_during_practice
end
end
# These reflect the same student, but in the latter case, they have increased their effectiveness by practicing their tools.
# Their tools either hinder them or help them, thus affect their effectiveness.
ineffective = Student.new(0.1)
effective = Student.new(0.2)
# 10 practice hours, on increasingly difficult material, we see there is already a significant gap
1.upto(10) { |n| ineffective.practice 20, 60 }
1.upto(10) { |n| effective.practice 20, 60 }
ineffective.learned # => 13.785849184900002
effective.learned # => 109.9511627776
# Double the practice hours, and we see the much more important detail: the difference is not linear
1.upto(10) { |n| ineffective.practice 20, 60 }
1.upto(10) { |n| effective.practice 20, 60 }
ineffective.learned # => 190.04963774880807
effective.learned # => 12089.258196146295
=begin
NOTE:
The math for the amount learned while practicing is oversimplified.
It's probably hyperbolic opening downward to reflect the Zone of Proximal Development (ZPD).
Something like y = d**2 - (x-d)**2
My model is good enough to express the general idea, but not good enough to reflect reality.
The other model should be able to express how differences in difficulty can lead to stagnation of all students:
if it's too easy, no one is challenged so no one grows
if it's too difficult, no one understands what they did, so no one grows
or ineffective students catching up
target the ineffective students ZPD and they excel quickly, while effective students stagnate b/c the material is too easy
or effective students leaving them behind)
target effective students ZPD and they excel, while ineffective studetns stagnate b/c the material is too hard
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment