# Tag Archives: Teaching

## Understanding “understanding”

This past Saturday, I was grading a batch of tests that weren’t looking so great at the time, and I tweeted:

I do ask these two questions a lot in my classes, and despite what I tweeted, I will probably continue to do so. Sometimes when I do this, I get questions, and sometimes only silence. When it’s silence, I am often skeptical, but I am willing to let students have their end of the responsibility of seeking help when they need it and handling the consequences if they don’t.

But in many cases, such as with this particular test, the absence of questions leads to unresolved issues with learning, which compound themselves when a new topic is connected to the old one, compounded further when the next topic is reached, and so on. Unresolved questions are like an invasive species entering an ecosystem. Pretty soon, it becomes impossible even to ask or answer questions about the material in any meaningful way because the entire “ecosystem” of a student’s conceptual framework for a subject is infected with unresolved questions.

Asking if students understand something or if they have questions is, I am realizing, a poor way to combat this invasion. It’s not the students’ fault — though persistence in asking questions is a virtue more students could benefit from. The problem is that students, and teachers too, don’t really know what it means to “understand” something. We tend to base it on emotions — “I understand the Chain Rule” comes to mean “I have a feeling of understanding when I look at the Chain Rule” — rather than on objective measures. This explains the common student refrain of “It made sense when you did it in class, but when I tried it I didn’t know where to start“. Of course not! When you see an expert do a calculation, it feels good, but that feeling does not impart any kind of neural pathway towards your being able to do the same thing.

So what I mean by my tweet is that instead of asking “Do you understand?” or “Do you have any questions?” I am going to try in the future to give students something to do that will let me gauge their real understanding of a topic in an objective way. This could be a clicker question that hits at a main concept, or a quick and simple problem asking them to perform a calculation (or both). If a student can do the task correctly, they’re good for now on the material. If not, then they aren’t, and there is a question. Don’t leave it up to students to self-identify, and don’t leave it up to me to read students’ minds. Let the students do something simple, something appropriate for the moment, and see what the data say instead.

This may have the wonderful side effect of teaching some metacognition as well — to train students how to tell when they do or do not know something.

Filed under Education, Teaching

## Speaking of the inverted classroom

On Wednesday, I gave a talk at Indiana University – Purdue Universty – Indianapolis (IUPUI, for short) to the teaching seminar for math graduate students on the inverted classroom. It was sort of a generalization of the talk I gave on the inverted linear algebra classroom back at the Joint Mathematics Meetings in January. Carl Cowen was in attendance at that talk and invited me to make the 20-minute drive from my house to IUPUI to do something like it, and I was happy to oblige.

Since putting the talk up on Slideshare yesterday morning, it’s gotten over 200 views, 2 favorites, a handful of retweets/Facebook likes, and is currently being highlighted on Slideshare’s Education page. So I thought I would share it here as well. Enjoy and ask questions!

## Misunderstanding mathematics

Image via Wikipedia

Robert Lewis, a professor at Fordham University, has published this essay entitled “Mathematics: The Most Misunderstood Subject”. The source of the general public’s misunderstandings of math, he writes, is:

…the notion that mathematics is about formulas and cranking out computations. It is the unconsciously held delusion that mathematics is a set of rules and formulas that have been worked out by God knows who for God knows why, and the student’s duty is to memorize all this stuff. Such students seem to feel that sometime in the future their boss will walk into the office and demand “Quick, what’s the quadratic formula?” Or, “Hurry, I need to know the derivative of 3x^2 – 6x +1.” There are no such employers.

Prof. Lewis goes on to describe some ways in which this central misconception is worked out in our schools and in everyday thinking. The analogy between mathematics instruction and building construction, in which he compares current high school mathematics instruction to a building project where the scaffolding is constructed and then abandoned because we think the job is done, is pretty compelling. The whole essay is well worth reading.

I do think that it’s a bit too easy to lay the blame for the current state of mathematics instruction at the feet of American high schools, as Lewis does multiple times. Even if high schools do have flawed models of math instruction, certainly they are not alone in this. How many universities, even elite institutions like Fordham, have math classes or even entire curricula predicated on teaching math as rote mechanics? And what about the elementary math curricula? Pointing the finger at high schools is the natural thing to do for college professors, because we are getting students fresh from that venue and can see the flaws in their understanding, but let us not develop tunnel vision and think that fixing the high schools fixes everything. Laying blame on the right party is not what solves the problem.

Lewis brings up the point that we should be aiming for “genuine understanding of authentic mathematics” to students and not something superficial, and on that I think most people can agree. But what is this “authentic mathematics”, and how are we supposed to know if somebody “genuinely understands” it? What does it look like? Can it be systematized into a curriculum? Or does genuine understanding of mathematics — of anything — resist classification and institutionalization? Without a further discussion on the basic terms, I’m afraid arguments like Lewis’, no matter how important and well-constructed, are stuck in neutral.

Again coming back to higher education’s role in all this, we profs have work to do as well. If you asked most college professors questions like What is authentic mathematics?, the responses would probably come out as a laundry list of courses that students should pass. Authentic mathematics consists of three semesters of calculus, linear algebra, geometry, etc. And the proposed solution for getting students to genuinely understand mathematics would be to prescribe a series of courses to pass. There is a fundamentally mechanical way of conceiving of university-level mathematics education in which a lot of us in higher ed are stuck. Until we open ourselves up to serious thinking about how students learn (not just how we should teach) and ideas for creative change in curricula and instruction that conform to how students learn, the prospects for students don’t look much different than they looked 15 years ago.

## Active learning is essential, not optional, for STEM students

This article (1.2 MB, PDF)  by three computer science professors at Miami University (Ohio) is an excellent overview of the concept of the inverted classroom and why it could be the future of all classrooms given the techno-centric nature of Millenials. (I will not say “digital natives”.) The article focuses on using inverted classroom models in software engineering courses. This quote seemed particularly important:

Software engineering is, at its essence, an applied discipline that involves interaction with customers, collaboration with globally distributed developers, and hands-on production of software artifacts. The education of future software engineers is, by necessity, an endeavor that requires students to be active learners. That is, students must gain experience, not in isolation, but in the presence of other learners and under the mentorship of instructors and practitioners.  [my emphasis]

That is, in the case of training future software engineers, active learning is not an option or a fad; it is essential, and failure to train software engineers in an active learning setting is withholding from them the essential mindset they will need for survival in their careers. If a software engineer isn’t an active learner, they won’t make it — the field is too fast-moving, too global, too collaborative in its nature to support those who can only learn passively. Lectures and other passive teaching techniques may not be obsolete, but to center students’ education around this kind of teaching sets the students up for failure later on.

One could argue the same thing for any kind of engineer, or any of the STEM disciplines in general, since careers in those disciplines tend to adhere to the same description as software engineering — a tendency toward applications (many of which don’t even exist yet), centered on interaction and collaboration with people, and focused on the production of usable products.

Comments Off on Active learning is essential, not optional, for STEM students

## MATLAB as a handout creator

One of the fringe benefits of having immersed myself in MATLAB for the last year (in preparation for teaching the Computer Tools for Problem Solving course) is that I’ve learned that MATLAB is an excellent all-purpose tool for preparing materials for my math classes. Here’s an example of something I just finished for a class tomorrow that I’m really pleased with.

I was needing to create a sequence of scatterplots of data for a handout in my Functions and Models class. The data are supposed to have varying degrees of linearity — some perfect/almost perfectly linear, some less so, some totally nonlinear — and having different directions, and the students are supposed to look at the data and rank the correlation coefficients in order of smallest to largest. (This is a standard activity in a statistics class as well.)

I could have just made up data with the right shape on Excel or hand-drawn the scatter plots, but whenever I do that, it looks made it up — not with the randomness that a real set of data, even if it’s strongly linear, would have. So instead, I thought I would take a basic linear function and throw varying degrees of noise into it to make it less linear.

I wrote this little function to generate noise:

```function n = noise(degree, size)
n = degree*cos(2*pi*rand(1,size));
```

This just creates a vector of specified length (“size”) centered roughly around 0, and the bigger “degree” is the more wildly the numbers vary. (I’m sure there’s some built-in way to do this in MATLAB, but it probably took less time to write the function than it would have taken for me, the MATLAB neophyte, to look it up.)

Then I just made four linear functions and literally added in the noise for each, as well as a fifth function that was just spitting out 25 random numbers and a sixth that was a pure linear function with no noise. Then plot all of those in a 2×3 subplot. Here’s the code:

```x = 1:25;
y_bigneg = -3*x+90 + noise(5,25);
y_smallneg = -5*x + 100 + noise(30,25);
y_bigpos = 3*x + 3 + noise(3,25);
y_smallpos = 3*x + 3 + noise(10,25);
subplot(2,3,1), scatter(x, y_bigpos)
subplot(2,3,2), scatter(x, y_smallneg)
subplot(2,3,3), scatter(x, y_smallpos)
subplot(2,3,4), scatter(x, y_bigneg)
subplot(2,3,5), scatter(x, rand(1,25))
subplot(2,3,6), scatter(x, 90-4*x)
```

Here’s the result, after going in and adding titles and removing the legends in the Plot Tools window:

That can then be saved as a PDF and embedded into a $\LaTeX$ document or just posted directly to Moodle for students to play with. All of that code above could easily be compacted into one big M-file with some modifications to let the user control the number of points and whatever else.

This is basic stuff, but it’s awfully handy for creating professional-looking documents and graphics for teaching mathematics. That’s an area where I’m finding MATLAB is highly underrated.

1 Comment

Filed under Calculus, Math, MATLAB, Problem Solving, Teaching, Technology

## Analyze, hack, create

One of these days I’ll get back to blogging about the mathematics courses I teach, which make up the vast majority of my work, but the MATLAB course continues to be the place where I am working the hardest, struggling the most, learning the biggest lessons about teaching, and finally having the greatest sense of reward. This week was particularly rewarding because I think I finally figured out a winning formula for teaching a large portion of this stuff.

This was the last in a three-week series on introduction to programming. We had worked with FOR loops already. I had planned to look at WHILE loops in the same week as FOR loops, then have the students play around with branching structures in week 2, then have them apply it to writing programs to do numerical integration week 3 for use in their Calculus II class in which most of the class is currently enrolled. But the FOR loop stuff went very roughly. So I moved the numerical integration stuff up a week and saved the entire remainder of looping and branching structures — WHILE loops, the IF-ELSEIF-ELSE structure, and SWITCH — for week 3.

I approached it like this.

The majority of their homework consisted of watching three videos: one on general programming in MATLAB, another on MATLAB loop structures in general, and a third on IF and SWITCH statements. That’s about 20 minutes of straight viewing; I told the students to budget an hour for these, since they’ll want to pause and rewind and work alongside the videos. Then, the majority of their homework was this M-file:

```%% Script M-file for April 5 Prep/HW for CMP 150.
%
% For each block of code below, write a clear, English paragraph that
% explains what the code does. You can play with each block of code by
% removing the comment symbols and running this file. (You can "uncomment"
% lines by deleting the percent symbol or by highlighting the code you want
% and selecting Text > Uncomment from the menu above.)

%% Code example 1

x = input('Please enter in a number less than 100: ');
while x < 100
disp(x)
x = 2*x - 1;
end

%% Code example 2

x = input('Please enter in a number: ');
if x>=0
y = sqrt(x)
else
y = exp(x) - 1
end

%% Code example 3

value = input('Please enter in a whole number between 1 and 20: ');
switch value
case {2, 3, 5, 7, 11, 13, 17, 19}
disp('Your input is a prime number.')
case {1, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20}
disp('Your input is a composite number.')
otherwise
disp('I do not think you entered in a whole number between 1 and 20.')
end
```

In other words: Here’s a bunch of code. Write up a plain-English description of what everything is doing. That was their homework. (Here’s the full assignment.)

Then in class, we played a game. For each code sample, I asked, “What if I entered [fill in the blank] to this bit of code?” For example, for code sample #1, what would happen if I entered in 100? One student immediately said, “Nothing”. Another said “It would give you a ‘0’ because that’s what ‘100 < 100’ returns as in MATLAB.” Then I had them close their eyes. “How many say, ‘Nothing’?” Count the hands that go up. “How many say ‘0’?” Count those hands. Put the tally on the board. The result: 7 for “nothing”, 6 for “zero”. Instant discussion fodder.

(By the way, this would have been a perfect place for clickers. I’m working on that.)

Next I asked, “What would happen in code sample 1 if I put in a negative number?” One guy said: “I know! I did that, and the thing kept running and never stopped, and I had to unplug my computer!” So I showed them all Control-C; then asked, “Why did that [the failure of the program to stop] happen?” In no time at all — a high-order discussion about an important related topic to looping structures (avoiding infinite loops) that I had not even planned to bring up.

We played that game for 20 more minutes. Students were into it. They were coming up with their own cases. We tried entering in ‘Hi mom’ to code sample #1 and it actually gave something back. It was mysterious and entertaining and nerdy. They discovered that testing out extreme cases is not only important for understanding your code, it’s fun. And it was a lot better than lecturing.

The best thing is, when I got them finally into their lab problems, they were asking better questions. “I think I can do this program with a SWITCH statement, but could I make it better with an IF statement?” And: “I’ve got all the cases listed out here in my SWITCH statement, but I wonder if I could just use a vector or LINSPACE to list them out instead.

So that’s going to be my approach from here on:

1. Analyze: Look at someone else’s code and write out a complete, plain-English description of what every part of it is doing.
2. Hack: Take the same code and modify it, tweak it, rewrite it, throw extreme cases at it. This is the bridge between reading code and writing code.
3. Create: Write some code to do something new — now that you’ve learned the language from someone else’s use of it.

For all I know I could be totally reinventing 40-50 years of established best practices in computer science pedagogy. But it’s pretty exciting nonetheless.

Filed under Education, MATLAB, Problem Solving, Teaching, Technology

## The MATLAB class at midterm: Comfort level

To end the first half of the semester in the MATLAB course, I gave students a lengthier-than-usual survey about the course — a sort of mid-semester course evaluation. I have a load of interesting data to sift through and analyze, relating to various aspects of the course and tagged with metadata about gender, GPA, major, whether they live on or off campus, and so on. I hope to finish analyzing the data before the semester is over. (Ba-dum-ching.)

One of the questions I asked was a mirror of a question I asked in the beginning: On a scale of 0 (lowest) to 10 (highest), rate your personal comfort level with using computers to do the kinds of things we do in this class. I’m thinking that there are affective issues about working with computers, and especially MATLAB, that are never discussed but which play a huge factor in student learning. (We seem to just tell engineers to suck it up and get to work, and assume that all MATLAB learners are engineers.) Here are the data, such as they are, for this question during the first week and at mid-term:

For some reason there were three students who didn’t respond to the midterm survey at all (it was worth 5 out of 15 points on week 7’s homework). I don’t know if the “4” and the two “8”‘s from week 1 that are missing from week 7 are the ones who didn’t respond to the survey; or if the “4” is now a “6” and one of the previous “6” people didn’t respond; or what.

Of course the striking thing here is that nothing has changed. I consider this a win on two levels.

1. The course has, at the very least, not made students generally less comfortable with using computers, which I think is pretty positive considering the subject matter and audience here.
2. The kinds of things we are doing with MATLAB have gotten progressively more complicated through the semester, so holding steady on comfort level while progressing in complexity is pretty much the same as progressing in comfort level. If you report the same comfort level after learning how to drive on the interstate as you did when first learning how to drive, period, it means that you’re more comfortable with driving in general than you used to be.

Comments Off on The MATLAB class at midterm: Comfort level

Filed under MATLAB, Teaching, Technology