TITLE: Observing Students Learn to REPL in Dr. Racket
AUTHOR: Eugene Wallingford
DATE: May 24, 2022 4:09 PM
DESC:
-----
BODY:
I recently ran across an old post by
@joepolitz,
Beginner REPL Stumbles,
that records some of the ways he has observed students struggle as they
learn to use IDEs with REPLs and files. As I mentioned
on Twitter,
it struck a chord with me even though I don't teach beginning programmers
much these days. My tweets led to a short conversation that I'd like
to record, and slightly expoand on, here.
I've noticed the first of the struggles in my junior-level Programming
Languages class: students not knowing, or not taking seriously enough,
the value of ctrl-up to replay and edit a previous interaction. If
students cannot work effectively in the REPL, they will resort to typing
all of their code in the definitions pane and repeatedly re-running it.
This programming style misses out on the immense value of the REPL as a
place to evolve code rapidly, with continual feedback, on the way to
becoming a program.
As recommended in the post, I now demonstrate ctrl-up early in the
course and note whenever I use it in a demo. If a student finds that
their keyboard maps ctrl-up to another behavior, I show them how to
define a shortcut in Preferences. This simple affordance can have an
inordinate effect on the student's programming experience.
The other observations that Politz describes may be true for my students,
too, and I just don't see them. My students are juniors and seniors who
already have a year of experience in Python and perhaps a semester using
Java. We aren't in the lab together regularly. I usually hear about
their struggles with content when they ask questions, and when they do,
they don't usually ask about process or tools. Sometimes, they will
demo some interaction for me and I'll get to see an unexpected behavior
in usage and help them, but that's rare.
(I do recall a student coming into my office once a few years ago and
opening up a source file -- in Word. They said they had never gotten
comfortable with Dr. Racket and that Word helped them make progress
typing and editing code faster. We talked about ways to learn and
practice Dr. Racket, but I don't think they ever switched.)
Having read about some of the usage patterns that Politz reports, I
think I need to find ways to detect misunderstandings and difficulties
with tools sooner. The REPL, and the ability to evolve code from
interactions in the REPL into programs in the definitions pane, are
powerful tools -- if one groks them and learns to use them
effectively. As Politz notes, direct instruction is a necessary
antidote to address these struggles. Direct instruction up front may
also help my students get off to a better start with the tools.
There is so much room for improvement hidden inside assumptions that
are baked into our current tools and languages. Observing learners
can expose things we never think about, if we pay attention. I wonder
what else I have been missing...
Fortunately, both Joe Politz and Shriram Krishnamurthi encountered my
tweets. Krishnamurthi provided
helpful context,
noting that the PLT Scheme team noticed many of these issues in the
early days of Dr. Scheme. They noticed others while running teacher
training sessions for
@Bootstrapworld.
In both cases, instructors were in the lab with learners while they used
the tools. In the crush to fix more pressing problems, the interaction
issues went unaddressed. In my experience, they are also subtle and
hard to appreciate fully without repeated exposure.
Politz provided a link to
a workshop paper
on Repartee, a tool that explicitly integrates interactive programming
and whole-program editing. Very cool. As Krishnamurthi
noted
to close the conversation, Repartee demonstrates that we may be able to
do better than simply teach students to use a REPL more effectively.
Perhaps we can make better tools.
I've been learning a lot about CS education research the last few years.
It is so much more than the sort of surface-level observations and
uncontrolled experiments I saw, and made, at the beginning of my career.
This kind of research demands a more serious commitment to science but
offers the potential of real improvement in return for the effort. I'm
glad to know CS ed researchers are making that commitment. I hope to
help where I can.
-----