36-350, Fall 2013: Self-Evaluation and Lessons Learned (Introduction to Statistical Computing)
This was not one of my better performances as a teacher.
I felt disorganized and unmotivated, which is a bit perverse, since
it's the third time I've taught the class, and I know the material very well by
now. The labs were too long, and my attempts to shove the excess parts of the
labs into revised homework assignments did not go over very well. The final
projects were decent, but on average not as good as the previous two years.
I have two ideas about what went wrong. One is of course about kids these
days (i.e., blaming the victims), and the other is about my own defects of
character.
First, in retrospect, previous iterations of the course benefited from the
fact that there hadn't been an undergraduate course here in
statistical computing. This meant there was a large pool of advanced
statistics majors who wanted to take it, but already knew a lot of the
background materials and skills; the modal student was also more academically
mature generally. That supply of over-trained students is now exhausted, and
it's not coming back either — the class is going to become a requirement
for the statistics major. (As it should.) So I need to adjust my expectations
of what they know and can do on their own downward in a major way. More
exactly, if I want them to know how to do something, I have to make sure
I teach it to them, and cut other things from the curriculum to make
room. This, I signally failed to do.
Second, I think the fact that this was the third time I have taught
basically the same content was in fact part of the problem. It made me feel
too familiar with everything, and gave me an excuse for not working on
devising new material up until the last moment, which meant I
didn't have everything at my finger's ends, and frankly
I wasn't as excited about it either.
Putting these together suggests that a better idea for next time would
be something like the following.
- They need to be drilled in interacting-with-the-machine skills, like how
to use text editors (not word processors) and command
lines. Therefore: require the use
of RStudio, and that all assignments be
turned in either
in RMarkdown
or Sweave. (This
would be a bit hypocritical, since I normally don't use any of those myself,
but I am not going to teach them my own Emacs-centric work habits.)
- Programming style (meaningful names, commenting, writing effect tests
which are clearly separate from the main code, etc.) needs to be religiously
enforced. Therefore: enforce it religiously, and make it an explicit
part of the grading scheme. Grading rubrics need to be transparent about this.
- They need to learn to think through debugging, design, and
re-design. Therefore: Devote some lectures to live examples of all
these, with non-trivial code, and pair them with assignments.
- They need more practice with collaboration. (If nothing else this will
help them see the importance of writing code others can read.)
Therefore: Institute pair programming in labs, and/or require paired
work on homework; rotate partners. (I'm not so sure about this requirement.)
- They need to learn about version control and collaboration
tools. Therefore: at least one lecture on version control with git,
and require its use on projects. (The start-up costs for learning git may be
too harsh, but it's what I use and I really won't go through teaching myself
something else.)
- They need me to walk them through linear regression (or at
least lm) and the logic of maximum likelihood. Therefore: Add
a lecture (and assignment) with a systematic demo
of lm, formula, residuals, predict. Include at least one non-linear regression method as a contrast case.
- The in-class midterm exam consistently fails to give useful additional
information about what they know and can do. Therefore: scrap it in favor of a mini-project.
- The final project needs a lot more scaffolding, or at least
feedback. Therefore: have them start projects earlier, and require
more interim reports from them.
- They need more concrete data-analytic examples earlier, they need to see
the data-manipulation material earlier. Therefore: re-organize the
lectures, putting off the classic computational-statistics topics of simulation
and optimization towards the end. Chop off material as needed to fit the
basics.
- The labs are too long and too poorly integrated with homework. (Also,
they are sequenced to the current lectures, and there are too many copies of
old solution sets circulating.) Therefore, throw out all the old
assignments and write new ones. One student suggested making the labs not the
beginning of a take-home assignment, but a chance to get feedback/corrections
at the end; this seems promising. Provide very explicit rubrics.
All of this will be a lot of work for me, but that's part of the point.
Hopefully, I will make the time to do this, and it will help.
Introduction to Statistical Computing
Posted at January 02, 2014 18:01 | permanent link