# WTC2016_GeraldThomas_ExperiencesTeachingComputational-SD(1)

0 (0 Likes / 0 Dislikes)

Okay. My name is Jerry Thomas. I'm from the Milwaukee School of Engineering
and my talk is my experiences on teaching computational engineering to a variety of students.
About a year ago, I had a conversation with Stephen
about the possibility of teaching a course on computational engineering
at MSOE. And I faced several challenges to do that.
First of all, MSOE did not have Mathematica license, so that was one one of the first problems.
I wasn't sure how to work it into the curriculum, that was another problem.
I wasn't sure what kind of book to use, which was the third problem. So, in rapid-fire succession,
I ended up solving all these problems and I ended up using Stephen’s book.
I should say that one of the things I do as an adjunct
is I end up teaching a variety of courses, some in software engineering,
some in computer engineering, some in electrical engineering;
and the advantage of that was when we talked
about having a course in our department, it sounded like it would be a course
that would appeal to all three different disciplines.
The best choice seemed to be to target it for people who were seniors and would use this course
as one of their required electives. That’s what we ended up doing. I'm going through and
tell you a little bit of some of my experiences in teaching the course.
My personal motivation for doing the course is that—
some of you know that for long time I've been working on
advanced decision theory based on game theory
and I was hoping I would teach a course on that at MSOE
and I thought this might be a reasonable start for that.
I also thought that I might teach some other courses, all of which would be based upon Mathematica.
So, I'll go through and tell you little bit about that. I'll talk about what I
thought about computational engineering;
a little bit about how different people in these different disciplines visualize data,
because it’s really quite different,
and some of the simulations that seem to be effective;
and also I would love to talk about the stuff on game theory.
All I can say is I just finished a book. It's at the bookstore downstairs, so here's my plug.
So now I don't have to talk about that, right?
So, find my cursor again here... So, what about the computational engineering course?
I have some opening questions. It may be hard to see...
I was asked to talk—we had discussion at Carthage
this last summer about teaching a course like that.
I thought some questions were kind of interesting,
which I would share as kind of an opening to the course that I did teach.
Because I had different disciplines, what is it that the disciplines have in common?
How do you teach to different disciplines?
Of course, in today’s age—because I also teach freshmen,
and I find that the freshmen that come in come from a variety of backgrounds.
I mean, even though you think that they all have the same SATs or whatever, they're not really the same.
What do the disciplines have in common in terms of their language? They use a common mathematics,
common way of visualizing. Do they do simulations? Can just a group like this pick up Mathematica?
I mean, I wasn't sure whether that was going to be possible.
So I needed to have definition of what I thought
computer engineering was. I mean, that didn't exactly coincide with what Stephen thinks, but I think it's similar.
I see it as a method of how do you analyze datasets, whether they're large datasets or small datasets.
So it's a way of thinking about data, so that's one of the things. It's also way of simulating
if you see a bunch of—you know, if you see data, you actually don’t know what it means.
You have to have a model, some way—some conceptual way of thinking about it,
and you use the conceptual way of thinking about it by creating some kind of simulation.
So one of the things—the strength of a computational engineering approach
is how do I look the data, large and small sets; how do I simulate large and small sets; then
how do I bring the two together and make a comparison to see whether I made any progress?
These are the course outcomes. In the university setting, you have to say at end of this course
what people supposed to get out of it? So I wanted them to be, first of all, competent in programming.
I should say that I had tried an approach before—
had used, without a license, tried to teach people Mathematica
at MSOE, and I found if I started at a fairly high level,
the electrical engineers would like stop paying attention;
and the software engineers who knew Java said, "We already know programming,
that's another programing language," and they stop paying attention; the computer engineers said,
"We don’t even want to hear about it." So I knew what my challenges were.
So I couldn’t get them to be competent,
so one of my goals—first goal was nontrivial, and I really wanted them to walk away
saying, "We know how to use this for rest of our lives. This is it."
They should able to create short program segments
or language segments; they should have some knowledge of some of the more arcane parts of Mathematica,
just to see if they can really pick it up. The key thing for simulations is solvers. You need to be familiar with
all the different kinds of solvers that are there in Mathematica.
The key thing for visualizing are sort of plotters.
So, if you can get them to know how do you make plots, how you do simulations,
how you do solvers, you're kind of there.
I'm going to fast-forward, just in case I run out of time. I want to give you the end story.
I should say that the people that I started with from these three different disciplines
had no knowledge of Mathematica.
The electrical engineers had no knowledge of programming.
The software engineers had no knowledge of simulations,
all they knew were graphs. The computer engineers knew C and Matlab.
At the end, I asked them to each do a project in their respective domain
using Mathematica, using all the things
that we had learned. This was one of the projects, and the person gave me a full notebook
explaining what an L-System was, showing me simplified examples of weeds, building
it up from weeds and weeds that had colors and colors that had branches, branches that had leaves
at the end that were still brown and then the branches at the end like this, which is a real tree,
and then what would happen if you varied some of the algorithmic parameters.
So I was really impressed, and some of the other projects at end were—
some people were interning at an industry,
they applied the project to one of their industry-type problems;
some people were working on Senior Design,
they applied it to their Senior Design problem; the SEs, as you might imagine, applied it to Pokémon.
But, the point is they all did their thing and all were very happy at the end.
So, my approach was very different. Having learned
that approaching it at the level I thought they were at was going to be total failure. I said, why—
you know, the thing about using Wolfram’s book is it's written
for people who are like high school, junior high school students, right?
I'm not ashamed. That’s the way I learn;
I go find some very simple book, you know, I read the little prints, I learn about the literature.
So I said, "Let’s use this book." It's got so many sections or chapters, like 1 through 50 or say, whatever it is.
Let's just march through, and every week we'll do some number of chapters—
you can read it any time you want, you can keep up.
It’s so simple you would be embarrassed to show up to class
and you don't know this stuff. So one of the first things it did
is it taught people about lists and list plotting and colors
and they could start doing simple things with it.
About midway—I should say, MSOE is on a quarter system,
so three weeks into it, four weeks into it, we have a midterm—or five weeks into it, we have a midterm, so
at about midterm, this is the kind of problem I was already giving them.
I talked to them about learning sets—training sets.
So, I asked them—I said, "Here's something in the Wolfram Help I just extracted."
Right? Then I said, "First of all, I want you to do your own training set
with pictures and identify people." Then I gave them a problem
and I said—a couple of them came up with it by themselves—"How about if I give you even numbers
and odd numbers, can you create training set that works?" As far as I know, you can’t.
I asked Stephen, actually, this afternoon; he doesn’t know how to do that one, either.
But why? The why is, it's a really bad set.
The answer is obvious: 2 is even, 4 is even and 5 is odd, right? Because it’s algorithmic.
You know exactly what the answer is. That's a good context-setter for this, okay?
Doing pictures works in the Wolfram Help thing
because all the real work has already been done. You give this to students and the first thing they do is they
try to do training on those three pictures. So what goes wrong? They're different sizes,
they have different color spaces. Where is the head? Is it over next to the guy’s bow tie?
Or is that part of the face, or are there people around who have bow ties as part of their face?
The reason the training sets work is you have to go through a process.
And for time, I won't actually try to run it, but... The process is, we need to get the pictures
to have a size, you need to get rid of the ColorSpace so that you're down to like a grayscale or something,
and once you've done that, all of the sudden, the training set works.
I mean, you know that, probably. The students didn’t know that.
So when they were doing homework exercises, they got it all wrong. So then we would have this discussion,
"How come this doesn’t work?" I'm giving explanation I just did,
and notice in doing these exercises, look at all
of the technology from Wolfram stuff they had to understand. They're already doing rules with the @@@s
and the transpose @s, they're having to think through all of this.
This is after five weeks. I was very impressed.
That meant that my software engineers, my computer engineers, they're all on board.
Now, the different disciplines focused on different things.
Like this was picture that the software engineers could really hone in on.
Computer engineers, electrical engineers were sort of there, but had hard time keeping up.
Another thing for the software engineers
is once you give them a list—this is American Airlines' financial data.
Okay, so they can—it's now easy for them
to pull that off of the web and get a time series plot, they know how to do plots,
and—but you can ask some interesting questions which go way beyond the simplicity of this example.
For instance, this is a jagged-y plot. Are these things correlated in a causal manner?
That can be an interesting question, right? Because normally we think it's just statistical things.
If I were going to make a plot of the time series against the time series,
the correlation between adjacent points, it should just be white noise, right?
So the real simple, thought-provoking question to them is what do you expect?
White noise? This is what you see. It's not white noise, is it?
It has structure. It indicates there are some causal effects,
and if you thought about it, well, stock markets actually
do care about what happened yesterday and what other stocks are doing,
there are some cause-and-effects things.
Now how do I get the electrical engineers, computer engineers on board?
Because software engineers like
the beautiful pictures and the visualization. Electrical engineers, they are heavily into simulations,
so this is the world they live in. The world they live in is—have been dictated by four years, or
three-and-a-half years, of using MultiSim and tools.
And they don't even think anymore, they just use the tools.
So if you say, "What’s the behavior of an electrical circuit blah blah blah?" Then they go, "Well,
you know, I go to MultiSim and I draw these pieces in there and I push start..."
And if they get an answer, they don’t actually know whether the answer is right or wrong,
they just know, "But I press start and I got the stuff." So since I've taught those courses,
I know what their problem is. When I give them homework assignments and say,
"Okay, calculate for me by hand on a midterm
what are the voltages at each point." They get it all wrong. So they don’t have a simple way to do the algebra.
It’s the problem of algebra and getting units straight.
You know, I asked them, "Okay, gee, I've got a one-farad capacitor
and it's right here," and they go, "Okay." Really? One farad? So I said,
"Okay, if I have a plate one millimeter apart from another plate, how big is the plate?
Anybody know?" "Some miles or something big." Then I said, "I just read in a spec sheet
that they're selling—you know these cars that drive along with the big boom boxes?
They have one-farad capacitors. Is that true?"
Yes, it is true. But that’s what thinking is all about, right? Then you say, "Okay, so why is it true?"
Well, you still have the problem of spacing, but you can make it really complicated and fill the volume
in a different way and you can put a dielectric in there that really improves the capacitance
and you can do it. And someday, you know, 10 years from now, 50 years from now,
we'll use 10-farad capacitors as batteries.
They're just storage tanks. So here is the way they normally solve problems: set up a problem
in steady state, its algebra; have somebody do the arithmetic,
the units for them so that one farad is going to get interpreted correctly;
do all of that, do a solver, right—so you just have solve, you know—
physics and electrical engineering are very simple.
You have a couple of laws: conservation of energy, conservation of charge.
You put it into some vernacular,
and it will give you the solution, and boy, Mathematica does that pretty nicely.
For my electrical engineering students, they want to do problems like this. Different problem.
Same picture, same MultiSim, different button on MultiSim.
This time instead of having something simple,
you go, "Why don't you let this capacitor have some voltage or some charge on it; what happens in time?"
So how does it come to steady state? Well, a lot of what of them don’t even know what button
to push in MultiSim. But again, set-up—same set-up, same units,
visualization now is more showing the transient effects die out,
having a conversation to them about what are transient effects, what’s the time period of transient effects.
All of these become very, very important for the learning of the student.
Now I tried to intersperse in things that were outside their experiences.
Now for electrical engineers, I won’t go through that, but I did more complicated visualizations.
They know about electromagnetic fields, magnetic fields,
so I gave them, "Here's a little line so long, its charge; what does the field look like?"
Okay? "Here is a magnet, the shape; what does the field look like?
And if I have the field, can I rotate the thing around
and do this?" All of the things you know how to do, and that was another learning tool.
I brought stuff in from my own research.
So you guys don’t know this, you know nothing about game theory and finances
and stuff like that, so why don't we do some game theory problems? Okay, so we'll spend a day learning
about what is game theory, learning about matrices, min-max theorems, some neat ways to tie
that stuff together, put it together, make—take a problem like kids' rock scissors paper problem, try
that. So that’s kind of cool, and when you're all done,
you can even make it time-dependent and do some simulations.
I just interspersed these things throughout the quarter and just mentioned them, sort of like
I am now. The purpose of my course, however, was I wanted to—remember my outcomes—to get them to think.
So let me talk about the end-game, what do we learn? How am I doing on time, by the way? Oh, I'm right
on time. One of the successes was using Wolfram's textbook. I mean, not that there aren’t other textbooks
out there, potentially. The success was the textbook was so simple that they couldn't object.
And yet, it carried them through to very quickly get to advanced subjects.
And they weren't embarrassed about it,
I wasn't embarrassed about it; we just said, "Okay, this is what it does." Once they learned how to apply
it, they could do... "Gee, we did Plot—ListPlot, now we're doing Plot. We did Solve, now we're
doing DSolve." And I should say, when I look at group of students like electrical engineers,
I'd say, "You guys have to take—"
because I'm an accredit-er—"you guys have to take differential equations, right?
How many you have taken course on differential equations?"
Everybody's hand goes up. "How many remember anything
at all about it? Come on, somebody raise their hand.
Can somebody even gave me the name of differential equation?
How about <i>y</i>' = <i>y</i>? Is that okay?" "Uh, what?" Couldn't think through that. But using Solve and just
introducing differential equations in Mathematica, say, "I'm not going to ask you to differentiate it,
integrate it, multiply it, divide it, anything; just solve it
and plot it and tell me, you know, if you vary this parameter, what happens, and start thinking about it—
what does this do?" That they could do. The textbook helped.
I think that Mathematica was a really good tool to get them to think,
because I tried to challenge them with problems that were not in in their discipline, necessarily. And because
were three different disciplines, when I was talking to this group, these two groups didn't know that to start with.
So we would do, for the software engineers, a graph theory problem, bring up a geomap
like talking about in last section. "Here's a place in Eurpoe, here's another place. Find the shortest path
between the two." The software engineers would say,
"Normally, we would solve that with graph theory using Java."
And they would come back in a couple of months and say, "Okay, we solved it."
Okay, a couple of weeks, but they wouldn’t come back right away.
This one gave them the ability to do it right away. The computer engineers, the electrical engineers
didn’t know graph theory. They didn’t know the nearest path stuff, they didn’t know the Bellman-Ford,
they didn’t know any of that stuff. So they could get there also. Software engineers did not know simulations,
but they learned simulations, and the electrical engineers would say to them, "Yeah this is what you do.
This is what you do way, this is the way..." So this was helpful. I did learn
there is a value for engineers on the tools they already have, and you can’t replace them.
One of the problems has been people try to go into schools like MSOE and say, "Get rid of MatLab,
Mathematica is better." No. Look, they're tools.
MultiSim, Java—they're not for thinking, they're engineering tools.
They're simply cut and dried ways of getting the answer.
They're going to go into an industry where those tools are used; they need
to be proficient in those tools. There's nothing wrong with that. But I worked at a start-up. I wouldn't hire them
unless I could think they can think. So in addition to those tools, they need a Mathematica, they need
a way to get out of that box and say, "Okay, you've got a one-farad capacitor with no special things
and you gave that to me as an answer? Come on!" The student projects were the way I saw
that. I saw them go into their discipline and go deep into what they knew, and I saw
their thinking, like the L-System. That was, like, out of the blue. I had asked them a question,
"Draw for me a Sierpinski triangle or Sierpinski dragon and a couple of—and some fractals."
And then they—on a test—and then they went away and got that.
So I would ask them, you know, "Here's a flag,
give me the three closest flags to this Brazilian flag." So pick this one, whatever it is.
Now I just give it to you; you don’t know where it's from. Now tell me where that flag is from.
That was on the final. Most of them got it. The final grades were actually pretty good. So I think Mathematica,
in the end, was—my impression, from talking to students, is that, you know, I ask them,
"Was this of any good to you? Was this of help? Will you use this later in life?"
They said, "Yeah we're going to use this."
This is really, you know—they were kind of surprised.
I had some students who—one of the weird things about teaching
different courses in different disciplines is I had many of these students in other courses.
And I knew some of them were really pretty bright and some of them more, you know,
not as quick. That doesn't mean
they're not bright. It just means that, you know, on a test, this guy finishes in half an hour,
this guy finishes in two.
They both get to the end. Even with that kind of a spread, I got, you know, everybody's—
from that big spread, the very quick ones and the ones with the ones who were not so quick,
enjoyed it. So basically,
I was very happy. So I will take this opportunity to stop
and thank you for your very polite attention and take any questions if I have time.