As someone who teaches computing, I see this issue a lot. Overall, I agree with Jeff Erickson's Answer to I understand material but cant solve problems
I will add some more context.
Many
students don’t really know what learning means. They think memorizing
facts or “looking over notes” is enough. Often, because they have done
well in earlier classes that way. They think that if an assignment says
to write a poker game, then submitting a working poker game means they
understood the assignment, even if they submit their roommate’s program,
find 90% of it on the web, or get TAs to dictate most of the program to
them. They focus on getting a grade or a working program by any means
they can, even if they don’t actually learn to do the things that are
asked of them. I see this every semester. Students come to office to ask
about the exams and say “I do so well on the assignments.” So I ask
them to describe their work process, and I know where we are when I hear
“When an assignment comes out, I read it over [good!] and then go to
office hours, because I know I’ll need help [bad].” What’s bad? Going to
office hours to get TAs to tell you stuff before you’ve actually tried
anything yourself. Getting help AFTER you’ve tried a few times and
thought about things deeply is good. Going before you’ve even thought it
through or drawn or a picture of a data structure or listed subtasks is
bad, because you are robbing yourself of learning.
I
often remind students that the world doesn’t need 200 more poker
programs (or search tool, or RPN calculator, or whatever). The point of
the assignment isn’t to get a working poker program: it’s to develop the skills
that, it turns out, let you write something like a poker problem. If
you actually engage the exercise authentically, you will develop the
skills and you’ll get the program as a side effect of that. Figuring out
how to get the result without developing the skills undercuts the
assignment.
Any
course, not just computing or other STEM courses, should give you new
abilities, skills, not just information and a grade. History classes
should ultimately teach you how to analyze evidence and historical
processes in a way that allows you to interpret, for example, current
events. This is MUCH more than memorizing.
One way to understand this situation is to consider a version of Bloom’s Taxonomy of learning (What Is Bloom's Taxonomy? A Definition For Teachers -
)
Bloom
classified skills into different levels. There are a few versions
around, but let’s pick this one: memorization, understanding, applying,
analyzing, synthesizing, evaluating, and some add creating (the one at
the link above leaves this out, but I think it’s important).
I
was lucky to learn this in high school. I had a high school teacher who
would classify her assignments into these categories, and she said
memorizing was important, but if you only did the memorization
assignments, you got a D. That’s the lowest, minimal level of cognitive
skill. And yet most students come to college believing that’s all there
is! To get a C, you had to show understanding (usually by being able to
summarize things in your own words) and apply information to novel
situations. To get a B, you had to analyze situations (solutions) and
synthesize novel approaches from the different things you had studied.
To get an A, you had do think critically and evaluate things and create
something new (for her, this was always a creative presentation to the
rest of the class). I had her for two classes. She drove me nuts, and
she made me realize what learning really means. Thank you, Ms. Evans!
After her class, I not only learned to set my sights higher, but I
developed some skill at evaluating my own understanding. “Does this make
sense?” That means I might be up to a D level of understanding. Can I
recognize when to apply this? Now we’re getting somewhere! I find many
students are unable to evaluate their own understanding, and they suffer
the self-delusion of assuming that, if they turned in a working program
dictated by the TA, and the grade was good, they must have been
successful.
Honestly,
most exams, even in STEM classes, have most of the questions at the
lower levels. But, in computing, we routinely ask you to understand
programs on the exam (without a roommate or TA there to explain things
to you or a computer you can use to run it), and we ask you to solve a
problem, devise an algorithm, and write code. That gets at application,
which many students are not used to doing. (Math is the same: can you
see when to apply the chain rule, for example.) We will sometimes get at
the higher levels, though not so often creativity. For example, we may
ask for an algorithm/function to do something, then ask about its
runtime or memory complexity, then ask about alternatives and what
situations would be best for which alternatives (analysis and
evaluation). As a working programmer, this last step, the ability to
weigh alternatives based on the current need, is vital.
So,
the key to doing better on exams is not to think about how to get
better exam grades. That’s trying to get the effect without working on
the cause. You need to practice. Do practice problems. Do lab problems
if there are any. Then, you and your friends can test yourself by
proposing variations on lab/practice problems and solve them. When you
read, read actively: do the exercises and work through the examples on
your own and make sure you are able to derive everything yourself. It
can be very effective to have a study group where you pick problems,
work on them separately, and them compare your solutions. You’ll find
each other’s mistakes, and you’ll have the experience of solving a
problem yourself, and then seeing and evaluating a few other solutions.
Good skill!
No comments:
Post a Comment