1. Learning computer science is surprisingly hard, but drawing on lessons from learning sciences can help improve learning.
2. Live coding in class is like demonstrations, which only help if students make predictions; subgoal labeling also improves learning and transfer between languages and problems.
3. Programming can be taught efficiently with little coding through activities like Parsons problems, examples, and practice problems.
Using Learning Sciences Research to Improve Computing Teaching: Predictions, Subgoals, and Parsons
1. USING LEARNING SCIENCES
RESEARCH TO IMPROVE
COMPUTING TEACHING:
PREDICTIONS, SUBGOALS,
AND PARSONS
D R . M A R K G U Z D I A L
P R O F E S S O R , S C H O O L O F I N T E R A C T I V E
C O M P U T I N G
2. Learning Computer Science is Surprisingly Hard
We can improve success by drawing on Learning Sciences.
• We can use models of motivation to improve retention.
• We can use subgoal labeling to promote learning and transfer.
• We can teach programming with activities other than simply
coding.
STORY
3. THE RAINFALL PROBLEM
Problem: Read in integers that represent daily rainfall,
and printout the average daily rainfall.
• If the input value of rainfall is less than zero is less than zero, prompt the user
for a new rainfall.
When you read in 99999, print out the average of the
positive integers that were input other than 99999.
4. RESULTS AT YALE IN PASCAL IN 1983
% of Students who solve
the problem correctly
Novices (3/4 through first
course)
14%
Intermediates (3/4 through
second course)
36%
Advanced (Jrs and Srs in
Systems Programming)
69%
5. NOT AN ANOMALY
Elliot Soloway and his students replicated this study many times.
Others have used this same problem with similar results in
different programming languages (e.g., Venable, Tan, and Lister,
2009)
Only recently (Kathi Fisler, ICER 2014) has anyone achieved student
success on the Rainfall Problem, by switching the language to
Scheme and teaching higher-level functions.
6. Three Examples from Drawing on Learning Sciences:
#1: We can use prediction to help students retain knowledge from
in-class live coding.
#2: We can use subgoal labeling to dramatically improve learning
and transfer.
#3: We can use instructional design principles to teach
programming more efficiently with less coding.
Example: Parsons Problems
HOW CAN WE IMPROVE
LEARNING IN CS?
8. DIGITIZING SOUND: HOW DO WE GET THAT INTO BYTES?
Remember in calculus,
estimating the curve by
creating rectangles?
We can do the same to
estimate the sound curve
with samples.
9.
10.
11. Eric Mazur study on Physics
Demonstrations
Do Demonstrations in Physics classes help with learning?
ERIC MAZUR ON
DEMONSTRATIONS
You can
probably guess
who did best.
Who do you
think did
worst?
12. RESULTS FROM POST-TEST
Students who did not see the demo did better than those who did.
• Students who saw the demo mis-remembered it.
Students who made predictions (with or without discussion) did
best.
Suggestion: Every time we run a program in class,
it’s a demonstration.
13. Students are often overwhelmed when programming.
“You’ve taught me so many details, I don’t know which ones to use.”
(Clancy & Linn, 1990)
How do we convey how to think about the purpose for the parts of
the program? About why each part is there?
Richard Catrambone (1994) invented a way to label the subgoals in
examples provided to students.
• Never tested before in Computer Science
#2: SUBGOAL LABELING
14. Used subgoal labeling to teaching Andriod App Inventor
(a blocks-based programming environment) to new
Computer Science Students.
Two groups of undergraduate students:
• One group was shown a video for how to use the software to build an App
and given text listing the steps in the instruction.
• Another group was given the video and the steps with subgoal labels.
EXPERIMENT WITH APP INVENTOR
Lauren Margelieux, Mark Guzdial,
and Richard Catrambone,
ICER 2012
15. Week 1:
Watch the video.
Take a test to demonstrate understanding.
Week 2:
Take a test to demonstrate retention.
Watch a new video.
Take a test to demonstrate understanding of second video.
Take a test where students must build a new app,
transferring knowledge.
STEPS IN EXPERIMENT
16. EXAMPLE OF WRITTEN MATERIALS
Subgoal
Define Variables from Built-in
Click on "Built-In" and "Definition"
and pull out a def variable.
Click on the "variable" and replace it
with "fortuneList". This creates a
variable called "fortuneList".
Click on "Lists" and drag out a call
make a list
Click on "Text" and drag out a text
text block and drop it next to "item".
Click on the rightmost "text" and
replace it with your first fortune.
Handle Events from My Blocks
Click on "My Blocks" and "Button1".
Drag out a when Button1.Click.
Non-subgoal
Click on "Built-In" and "Definition"
and pull out a def variable.
Click on the "variable" and replace it
with "fortuneList". This creates a
variable called "fortuneList".
Click on "Lists" and drag out a call
make a list
Click on "Text" and drag out a text
text block and drop it next to "item".
Click on the rightmost "text" and
replace it with your first fortune.
Click on "My Blocks" and "Button1".
Drag out a when Button1.Click.
21. RESULTS: DEFINE VARIABLE STEP
IN TRANSFER TASK
0
0.2
0.4
0.6
0.8
1
Define Variable
Subgoal
Conventional
p < .001, f = .61
22. Effect is twice as strong for high school teachers.
Works in text-based languages, too!
How I use it in my classes.
REPLICATED IN OTHER SETTINGS
(Work by
Lauren
Margeliux and
Briana
Morrison.)
23. One of the strong findings in Educational Psychology is that we
often ask students to solve too many problems, when seeing more
examples might lead to more learning (Clark, Nguyen, Sweller,
2006; Renkl, 2005).
Could we teach Computer Science to teachers by asking them to
look at examples and solve a variety of examples (with very little
coding)?
#3: TEACHING PROGRAMMING
WITH LITTLE CODING
27. FINDINGS: WHAT DO USERS
DO IN AN EBOOK?
Ericson, Guzdial, &
Morrison, ICER 2015
28. Use in our studies: 445 high-school teachers and 516 high-school
students. (New ICER 2017 paper by Miranda Parker et al.)
Teachers who use the ebook and engage with the activities (e.g.,
do more than half of the activities) gain in understanding of
computer science (pre/post-tests) and confidence in their ability to
teach.
Teachers are learning successfully in short segments (~20 minute
settings).
FINDINGS: EBOOK USE
29. Learning Computer Science is surprisingly hard.
We can improve learning in computer science by drawing on
lessons from the Learning Sciences.
1. Live coding in classes is a form of demonstration. Ask students
to predict results to improve learning.
2. We use subgoal labeling to promote learning and transfer, in
both blocks-based and text-based languages.
3. We can teach programming successfully and efficiently with
activities other than simply coding, such as Parsons Problems.
SUMMARY
30. Barbara Ericson, Miranda Parker, Kathryn Cunningham, Amber Solomon,
Kantwon Rogers
Colleagues: Richard Catrambone, Lauren Margulieux, Betsy DiSalvo, Tom McKlin,
Rick Adrion, Renee Fall, Brad Miller, Ria Galanos, & Briana Morrison
Our Funders:
US National Science Foundation
http://computinged.wordpress.com
http://home.cc.gatech.edu/csl
http://tinyurl.com/StudentCSP
COLLABORATORS ON THIS WORK
Thank
you!