Embedded - 303: Kids, Turn in Your Chips
Episode Date: September 19, 2019Jay Carlson (@jaydcarlson) is back on the show to discuss education and the techniques he’s using to teach embedded systems. Jay has some great posts on his jaycarlson.net blog. The one related to t...his show was entitled “How I Teach Embedded Systems.” Jay was also on Embedded 226: Camp AVR Vs. Camp Microchip where we discussed his fantastic survey of micros in The Amazing $1 Microcontroller. We also mentioned one of his recent posts about 3 cent micros. Teaching has many different approaches. We talked about Bloom’s taxonomy and mentioned the Dreyfus model of skill acquisition.
Transcript
Discussion (0)
Welcome to the show.
I'm Alicia White, here with Christopher White.
Remember that episode where we talked about Jay Carlson's amazing $1 microcontroller article?
He's been teaching embedded systems, and he has some ideas about teaching.
I'm so excited to geek out with someone about how to teach things.
Hey, Jay, thanks for coming back.
Thanks so much, you guys.
Could you tell us about yourself? Maybe as though you hadn't heard the previous episode.
Well, I am a PhD student at the University of Nebraska-Lincoln. I do research in the Perceptual Systems Research Group, where we do everything from kind of
deep learning.
We do some machine learning and wireless sensor networks and robots, and we play around with
a lot of stuff like that.
But I'm actually on a little bit of a sabbatical for my research because I've been teaching
for the last, I taught last year, and I'm teaching this semester.
So, yeah.
How do you go from PhD student to already teaching?
It's easy when your advisor is the dean of the College of Engineering because you just talk to him and say, hey, you know,
I think we could make some improvements with embedded systems. And he said, okay, go do it.
Cool.
Yeah.
Are you ready for lightning round?
Well, hold on. First of all, what's going on? So tell us about the Embedded 300 party.
We had a party, we had many, many interesting people. And I got to talk to everyone for like five minutes, which was slightly unfortunate because I wanted to talk to everyone for an hour.
But then the party would have been like...
Several days long.
Several days.
Did the weather hold up for you guys?
Yeah, it was great.
Yeah, it was awesome.
It was actually a little too warm, but that's better than...
People stood in the sunshine and people hung out in the shade and a couple people got sunburned, I'm sure of it.
Some people brought some very cool hacks.
Yeah.
Oh, yeah.
It was cats are hacks, right?
Yes.
Let's see.
No one brought a cat, for which I am glad.
People dressed up like cats.
Yes.
Well, that's good.
That's good.
The one that won the best hack was the orrery from...
Sean Meehan.
Sean Meehan has been on the show.
He made a ring box to propose with, and it was...
It's impossible to describe on the air, but it was a little gold solar system in a box that went around.
Rotated. box that went around and the ring was inside the sun and then inside the lid was a bunch of led
white leds for stars that did things and tiny leds for stars that marked important dates in
their dating history how how small like it was a ring box you know two inches by two inches maybe
oh whoa like an actual ring like that size oh? Yeah, yeah, yeah. Oh, wow. And it was made of wood. I thought you meant it just looked like a ring box or something.
Oh, wow.
That's awesome.
Took him two years.
Two years, and she kind of knew something was up.
And so I think it's impressive, because if she knows that she has to wait two years to get her presents,
then at least they're starting on clear communicative grounds.
Yeah, yeah.
Andrei from the Great White North made the internet from the IT crowd,
the little box with the LED, but it was more than that.
And I'm really sad that I didn't get to play with it more
because he had an ESP32 in it that had a Wi-Fi hotspot
and you could log in and had a whole puzzle thing
and it had serial console and some cool stuff.
Wow.
That sounds awesome.
What else was there?
There was Tom Anderson and his hammer time with the robot that hammered itself in order to move, which was silly and fun and loud.
Is it sort of like kind of the swarm robots that vibrate around
and kind of just move randomly?
No, it only went in one path.
It could have been completely mechanical
if you'd had like a big wind-up spring in it or something.
It had a stopper on one end, and then it would hit itself,
and whichever way, the stopper would prevent it from going back
and so it would go forward based on that momentum.
Wow. And then the second prize hack
was Aaron who made a Tamagotchi
crossed with Oregon Trail. And so your
Tamagotchi could get dysentery.
Whoa.
Isn't that awesome?
Oh, man, that's great.
Oh, yeah, I really regret not going.
I was trying to figure out, like, okay, if I leave work early, I could hop on a flight to LAX, and then I could drive up, and then I could...
And it was just, yeah, it just wasn't gonna happen no it was it was fun but um
i was a little sad because people came and i wanted to hang out with them for a while and
i wish everybody would just like come over for an hour or two like every other weekend or something
oh yeah yeah two or three at a time and then i could actually sit down and talk to people
yeah that would be awesome it's called a bed and then I could actually sit down and talk to people. Yeah, that would be awesome. That's called a bed and breakfast.
Okay.
Chris and I are starting a bed and breakfast.
A bed and breakfast.
Ooh, that's got a lot going on.
Oh, that works really well.
Yeah, I like it.
And there were some good cats.
But I think other than Wendell's spectacular sweater, Wendell of EMSL. And Miri, who won the cat prize, who was, I think, four, totally deserved it because she was a great cat.
And iRobot and Chris Vex sent us some excellent prizes, so that helped.
Yeah, we got their coding robots, and the four-year-old has already posted videos of her learning coding.
I think I saw some retweets on Twitter about that. So, very cool.
Okay, but you. We're here
for you. Oh, okay.
He's turned this around.
Okay.
Lightning, are you ready?
I will never be ready for this,
but let's just do it. That's the idea.
Favorite
type of apple?
Fuji.
Most important criteria in selecting a microcontroller flavor
yeah i was gonna say like uh package i don't know something dumb like that
favorite mistake i'm telling you, that's
a terrible question.
Trying to roll it in, but it's not working.
Not going into jazz performance
instead of engineering.
Okay.
Title of your
PhD thesis?
On
the importance of No, I on the
he's looking it up you can hear him look it up
no I mean I have no I don't have a PhD yet you guys
I'm still working on it my thesis exists only in my brain
at this point so I would be yeah I don't
know yet it's going to be something about motors and machine learning.
I think you should just title it that.
Motors and machine learning?
No, something about motors and machine learning.
Well, you have to start with on, right?
Like on the importance of machine learning and motor control.
Oh, see, that sounds really genius.
There you go, you're done.
You're done.
Yeah.
Just have to write the damn thing now.
What lightning round question should we add should you add yeah yeah we're crowd crowdsourcing these now oh man i don't
know uh like a like a favorite favorite ethnic dish or like a favorite movie or something like that. I don't know. Something off topic.
And this one is on topic.
Do you have a tip for people wanting to learn things?
I feel like I should, right?
Because that's what this whole podcast is about.
My tip is that perseverance and grit and practice are the most important thing in any field. So, whatever you want to learn,
plan to spend eight hours in one sitting just barely getting your brain around just the
beginnings of something before you even, you know, I mean, it just takes forever to become
a master of something. And so, just so just yeah i mean just just plan to fail
i like that i think that's really important and i think it's something
many of us fail to do yeah we plan instead of plan to fail yeah well that's important because
it's so easy to become frustrated when you don't see progress. Oh, yeah. Well, I mean, and do you guys remember
learning things and just feeling like, you know, you're trying to do the homework assignment,
you don't understand it. And it's like, okay, well, I'm obviously stupid, or the professor
obviously sucks, or, you know, right? You guys remember that from undergrad.
The professor obviously sucks was my go-to. Caught me in a lot of trouble.
Oh, yeah. Yeah professor obviously sucks with my code, too. Got me in a lot of trouble. Yeah, a lot of trouble.
And if you just if you kind of back up and you have that perseverance and you just remember that, like, no, this is like really, really hard to do.
Like there are professionals who spend their entire careers trying to do this and they're still making mistakes.
Like, how am I supposed to be able to compete on that level?
Having like, you know, the first homework assignment you get from a Fourier analysis
class, like you've spent all of three hours of your entire life doing Fourier analysis,
you know? Yeah.
But this was one of the big questions that came up at the party was uh brian wanted to know a better resource for learning linear algebra
and a couple other people wanted to know how to do this or that and it was always
something really hard like how do i learn all of embedded systems or how do i become an expert in
machine learning it's like how do you learn learn? Well, the question we often get from
listeners is,
I'm a professional in
field X and I really want to be an embedded engineer.
Tell me how
to get there. And what they really want us
to say is you just snap your fingers
and click your heels. Or here's the one
book you need. Or here's the one website you
need. Here's a weekend class.
Yeah.
And even college students ask questions like that like that well and it's such a huge field i mean you know it goes
from everything from discrete continuous signals finite state machines computer architecture
debuggers software patterns some people even do you know verification formal analysis i mean you're
you've just got all these topics these these huge, huge topics that people spend their entire careers specializing in. And, you know,
I think people, you know, the problem, it comes down to economies of scale. You go to Walmart
and you buy a webcam for 20 bucks and it just feels like, oh, well, if this thing costs 20
bucks, I should be able to go home and like make this in a weekend. That's a really interesting point.
But they don't realize that,
you know,
this webcam was,
they made a hundred million of these things and,
and they paid an engineer full time,
you know,
$150,000 to design,
you know,
the circuit board for this,
or,
you know,
do some of the firmware development,
get all the video decoding stuff working.
They had supply chain people
that were able to source
that special ROM microcontroller
that's like some wacko 8051
that's purpose-built
as a webcam controller.
So they reached out to some
Taiwanese supplier and found this chip.
They were able to
get all the IP they needed.
These are big, massive projects, and I just feel chip they were able to you know get all the ip they needed they you know i mean this this is
these are big massive projects and i just feel horrible when i i go to stack exchange i go to
electronic stack exchange and i see you know some younger student that like yeah i've got an arduino
i kind of want to make a usb webcam with it like what's what's the how do i get going on that
stop and yet i hear about people wanting to learn a new programming language in a weekend.
Yeah.
And I don't really get that because to me that's not a weekend activity.
Not only is it not that much fun to me, it's also I can't understand it in a weekend.
Well, what they mean is try out.
Yeah.
Well, let me turn it around.
So, Alicia, if you could learn a new programming language in a week or a weekend,
do you think that programming language would be substantially or sufficiently different than the ones you already know that would actually enable you to solve new and different problems?
I think it would be called Forth.
Yeah.
Or it would be called like Sci-pi is part of of python where i already know
numpy i already know matplotlib i already know tensorflow curious so sci-pi is not going to be
a big extension yeah actually that's a really good point because why do people think that if
they can learn it in a weekend, it's a valuable skill?
Yep, exactly. That's exactly what I was about ready to say. And like with the language thing,
people always get wrapped up on languages and I'm always the a-hole that comes in and says,
well, actually what you're really talking about is learning the framework libraries that are
generally bundled with the language. I mean, Java and C and C sharp, those are simple,
simple languages. C, C, my Sharp, those are simple, simple languages.
C, C, my God, there's what, like 15 reserved words?
Like, there's...
Yeah, yeah.
It's the easiest language.
Like, you can read and write variables.
There's not much to it.
You can add, subtract, you can do pointers,
you can call functions, and that's about it.
I mean, C doesn't even know what a damn array is.
You know, I mean...
It pretends to.
Well, I mean, the array operator... It's a damn array is. You know, I mean, the array, well, I mean, the array operator.
Syntactic garbage.
Yeah, exactly.
It is just syntactic sugar.
So, yeah. Okay, so I think it is important to talk about that learning is hard.
And perseverance, yes, so much so.
But it's got to be more than that. So, you wrote a blog post about teaching embedded systems. And one of the things you started with was the, I started by trying to do like kind of a didactic analysis and doing a lit review of like, what even is embedded systems?
And, right?
I mean, pass the joint over here, but like, whoa, an analysis and they basically said, embedded systems, this is not formal. It's functional. So it's all about you're working on these concrete tasks. It's not like linear algebra or Fourier analysis or something like that. It's thematic. It's not disciplinary, which means, you know, you could
teach embedded systems a thousand different ways and it would still be valid, right? Versus could
you imagine a DSP class that does not go over the Z transform, right? That would just be insane.
But you could have an embedded systems class that is taught on embedded Linux and you're
writing kernel drivers and you're doing Wi-Fi and networking,
and someone would think that would be an embedded systems class.
Well, these days you could teach it with Python probably.
Yeah.
Oh, yeah.
It'd be perfectly valid.
Yeah, exactly. So, you know, they kind of went through the list. And what's funny is embedded
systems does not, even though it's taught in an electrical engineering context, at least at my university.
It's not electrical engineering, right?
It's not related to all of our other engineering classes.
Well, I mean, is that because it's more digital or is that because it's all software?
Well, I think, you know, so like abstractions in computer science, which is sort of how, you know, you think of embedded systems when you're doing software engineering, they don't cover the theory and the analysis of
the physical processes in the systems.
So they're not really related to the physical architecture.
And I think that the pedagogy of teaching abstractions and electrical engineering is all about sort of
modeling a system, analyzing it, you black box it, and then you exploit those abstractions.
You know, think of like an LTI system, right? You sort of have this-
I had this picture of the resistor, the capacitor, and the inductor, and like everything
boils down to that somehow.
Linear time invariant for academic challenge
yeah and so when you guys were taking embedded systems did your classes did they try to
teach it that way like like almost like a modeling i like you're nine million years old
that's i like that you assume that we took embedded systems actually no that that is true i
well i actually listened to the episode yeah so Alicia, you did not take an embedded systems class, right? You took some computer science classes and some electrical engineering classes. I don't know, Chris, I don't know what you studied.
I was a math major, and I took the CS courses I was interested in. So I had almost enough for a double major for CS, but didn't care that much. But I didn't take anything embedded-ish at all.
Let me tell you, you didn't miss out.
Because, you know, our classes, like, so the existing class for this, it's really strange.
It really approached this from, like, kind of almost a system modeling.
It was sort of like you would throw the code on the Arduino and see what it did.
Wait a minute.
On the Arduino?
Yeah.
The class used to be taught on an Arduino.
So just between you and me, I think it still is.
So I teach the intro class.
I taught it in the spring, but I'm not teaching it this semester.
There's a different instructor teaching it this semester.
I'm pretty sure he went back to the Arduino.
And so, yeah, you kind of throw the code on the Arduino, and you see what it does. And so,
you don't have a hardware debugger, you have no breakpoints. So, it's kind of guess and check
debugging. And so, in many ways, I think that these professors, and this is not just at the
University of Nebraska-Lincoln, I mean, tons and tons of undergrad embedded systems classes are taught this way. And I think professors, they sort of try to draw those parallels. They try to treat this almost like finding a Thevenin equivalent impedance of a circuit. You have kind of this black box and we can kind of measure it and throw different signals at it and see what it does.
That's a very strange
approach that's a very very strange approach yes yes so that's the approach i get into when i'm
debugging something and i'm very very tired and i just start changing inputs to see what might be
wrong but there is yeah there's like that modicum of of uh usefulness there right because i mean you
guys as consultants you've gone into scenarios where there's other people modicum of, of usefulness there, right? Because I mean, you guys as consultants,
you've gone into scenarios where there's other people's code and this is how you have to do it.
Yeah, no, absolutely. Yeah. So, I mean, I think that there, there's some value there, but the,
the problem is, you know, in, in week one, it's like, okay, let's, let's, let's try to estimate
the frequency our microcontroller is, or let's try to estimate, you know, how many cycles it takes to do a GPIO pin wiggle.
We don't really know how long these hardware libraries take.
We're not going to look at the assembly code.
We're not going to look at the instruction set of the microcontroller.
We'll just sort of plot this on a scope.
And so what ends up happening is, you know, they have kind of these
interesting projects that they have students do, but they all, you know, the discussion questions,
you know, I think you're going to get pretty low quality answers from students who just don't have
the understanding, you know, that they would need to have to be able to solve these problems.
Is that in the philosophy department?
Oh, yeah. That's what it feels like.
No, I can see this is a double a double e class because what you're teaching
there actually is how to use an oscilloscope not it has nothing to do with the code there's
some valuable things there's other yeah there's other learning outcomes there for sure but you're
not going to come out of that knowing how to do anything well yeah and and it's set up a scope
you know what i mean you're not going to be able to build it is nothing to do with the
arduino at that point yeah well and and I think that like the other thing is the projects, they're not projects, they are labs.
These are investigative labs.
You know, plug this into here, hit that button, press this, take a picture of that, upload this code, do all this, write down your observations.
And, oh, by the way, here's three really sort of introspective questions that we expect you to answer that we haven't prepared you for.
You know, it's.
Yeah, it sounds exactly like physics and chem lab.
Yeah.
Yes.
No, Chris, it's the same thing.
It's that same approach.
It really is.
And it's just such a weird way of teaching something that is just so practical and useful to the world. So it's like what I wanted to do was restructure it.
Instead of having these sort of individual laboratory investigations,
I wanted to do like a project-based learning component in the class, right?
So every week students, they are still achieving those same learning outcomes.
So they're bringing up a SPI peripheral.
They're print effing through their UART.
They're, you know, getting the ADC working. But at
each step, they're building up, they build up their own little API, their own little library.
And then they're using that in their final project. And they keep basically adding an
additional component. So they end up with this final project in my class. So the last time I
taught it, it was a DMX light fixture. So I bought this off-the-shelf
light fixture and we basically reprogrammed the firmware on it starting from scratch. And so they
were able to make progress every week on it. And it turned it into just a completely practical
project, which was very cool. You started a high-level concept more like how would you go
about making an embedded system, like defining an embedded system.
You didn't start with here's how you blink a light, which is how so many other things start.
Well, think about it like this.
If you were to explain to a friend that's not an engineer, how would you explain to him what you do or what an embedded system is?
Or if they asked, so could make like a thermostat
like what how does that like how would you actually do that you know what would you do you draw a
little block diagram and say well you got your microcontroller you got a relay you got a this
you got a temperature sensor you got a that right so i sort of thought why not start with that so
first week we were block diagramming things that's excellent and we yeah we learned about all the peripherals at
sort of like a a high level like what would you actually use this for well and that makes a lot
of sense i mean when i when i used to talk to elementary schools about engineering because
that was as deep as they needed i would invariably take apart the teacher's Kleenex box and show them the little marks that show the color and show them how it was cut out and that everything requires engineering.
Oh, yeah, that's great.
And what you were doing is getting them to look around and say, oh, my phone, my radio, my car. And then they start thinking about what sensors can exist and what
sorts of outputs can exist. And then now they're looking up and they're not just
wondering why I'm blinking light.
Yes. And at every level, they're going to make mistakes. They're going to have the abstractions
a little funny. And that's okay. So I had a group that one of the groups, uh, cause so this is all, um,
reverse classroom stuff. So this is stuff that they're doing in class while any other instructor
would be lecturing. These students are working in teams, uh, building up these block diagrams
as a basically during lecture time. And, uh, and we should talk about the reverse classroom later
on, but the, you know,
so I had a group that they did an oven. And of course, to control the heating element,
they used a DAC, right? Which is not how you would actually do it in real world, right? You
wouldn't want an analog voltage controlling a heating element because it would dissipate a ton
of power. But like they're thinking about that, right? They're thinking, you know, well, the heating element, it'll be proportional to the voltage or whatever.
And so we'll just do that. So, you know, I, I like, I like that. Right. And then we can refine
that later. And when we talk about PWM, we can kind of go back to that example and then they
can kind of see, oh, you know, maybe there's a more power efficient ways of doing that,
which is cool. Okay. So you, you get them to have high level concepts of what things are and block diagrams, which
I love. I don't think the world has nearly enough block diagrams.
It's also my favorite interview question when they ask me to diagram. Here's the thing.
Tell me, show me the block diagram for this.
How many times have you been asked to diagram the speakerphone in the interview?
Because that's all they could think of that was near them.
Yep.
Those are the questions I ask when we've got undergrad students that want to join the lab.
I always have them block diagram something.
And, you know, I've turned seniors away because they just don't really seem like they understand what's going on around them in the real world. And we hired a freshman, which is sort of unheard of to do undergraduate research at a freshman level.
But, you know, all based on those block diagrams.
Good stuff.
And so you're having them do this in the classroom.
You mentioned reverse classrooms.
That's where they watch videos offline, and they do their homework or projects or things in the class where you can talk to them.
That's what most reverse classrooms are.
I hate lectures.
They're not effective.
I think reverse classrooms, the only reason why reverse classrooms quote unquote work, which they do, you know, massive, massive research.
There's 50 years of research on them, not 50 years there's you know 50 years of research on not
50 years but there's a ton of research on this and you know i think that why they work is the
in-class stuff i don't know that the lectures are that effective what i do is i do interactive
reading assignments um instead of like video lectures i i did a few just a couple video
lectures when we were doing very interactive stuff like circuits, and I wanted to be able to scribble things out and draw on a resistor and draw paths of current flow and do some of that stuff.
That's where static reading assignments don't work well.
But embedded systems is so much about, if you're looking at blooms, it's so much about those low-level recall, remember. And that stuff, the best way to do that is to give them the content and give them quiz questions over it right immediately.
And so they can assess how well they know this stuff.
Okay, so Bloom's.
Bloom's is a pedagogy model, a taxonomy is what they call it, although I've always wondered why. But it's how you,
how people normally integrate information. It goes from being a beginner to being advanced,
but you have all of these steps in between. I would actually push back a little bit on that.
I would say that what Bloom's Taxonomy does is it differentiates types of
learning and I would say like types of understanding into different categories.
So you've kind of like remembering, understanding, applying, analyzing, evaluating,
creating, right? Those are different levels of learning. And, you know, I'm a little, so the
classic picture of Bloom's is a pyramid showing that, you know, creating and evaluating, those
are the highest order learning, and those are what is most valued. And I kind of push back
on that a little bit because I think there's too many people that are kind of, you hear this all the
time, like, oh, if you can just look it up on the internet, why teach it? You know, right? But you
guys know, like, if you had to look up, like, binary to hex conversion every time you needed
to convert, you know, a number, right? That would be horrible. It would be. So, you have to know
things. You have to memorize things. You have to have some stuff at your fingertips.
And so I treat blooms like I want to be able to hit all of those things.
And I feel like so much of our engineering curriculum is just analysis.
It's like analysis, analysis, analysis.
Here's some circuit.
It's got a whole bunch of resistors and voltage sources and current sources.
Analyze the circuit. And we're not going to talk about
creating circuits. And we're not going to talk about memorizing, you know, voltage dividers,
memorizing common circuit little patterns. We're just going to analyze, analyze, analyze. You're
going to do nodal analysis. You're going to do mesh analysis. You're going to do KCL. You're
going to do KVL. And that just, that analysis gets hammered into you. And, you know, we don't spend enough time doing the design work and we don't do through this because not everybody has this nice picture in front of them. The first step when you come up to something is you have to start
remembering things about it. I mean, when you're learning something, you have to at least learn
its name and maybe the names of its things. If I'm learning a language, this is where I'm memorizing what cat is. And every time I want
to build a sentence, I have to remember every single word individually. And when people talk
to me, they have to talk super slow because I have to translate everything from memory.
And then the next step is understanding. Maybe I should let you explain that one.
Well, again, I'm going to keep pushing back. I really, yeah, I don't, I, I may, maybe you and I, we just learned
this differently, but I really don't approach it as like novices. You're, you're, you're almost
talking more like Dreyfus model, right? Where you have like novices, you're beginners and experts.
And, and there's like different, different ways that you interact
with information as you progress and get more advanced. In Bloom's, what I really like to think
of like, okay, so like binary and hex, you know, that's, that's like, we could just have a learning
outcome that says students remember how to convert between binary and hex. And, you know, if you have
like that memorization, then you just know that, you know that hex 7f is 01111111, right?
And it's just sort of this memorization.
Now, different learning outcomes are going to fall under different Bloom's centers of
learning or whatever.
So something like binary hex conversion, you could just do a memorization.
You could do an understanding, right? Where you actually, something like binary hex conversion, you could just do a memorization.
You could do an understanding, right? Where you actually, okay, here's the formula. But the thing is, it's like, you can have the understanding without having the memorization, right? So,
it's not like, oh, you know, you progress from remembering to understanding to applying to
analyzing. It's more like, you know, you can analyze a circuit, right? You can measure it and observe it or about,
let's say, evaluate, right? That's an even higher order learning concept than analysis, right? You
could evaluate a circuit, measure it, take all these measurements and tell me what it's doing
without actually, you know, remembering it or really knowing what these components are doing.
You're just sort of
evaluating and coming up with these numbers. So I would push back a little bit on that.
But yeah, so you have understanding. And understanding is where you put the pieces
together and you can describe how something works. And then above that, you have apply.
You can apply a tool. So like using a logic analyzer, right? If
you know how to hook up a logic analyzer and, or how to use a voltage source and how to configure
it and all that sort of stuff, you're sort of applying that tool or that concept, right? Maybe,
maybe you know how to apply a finite state machine. So if I give you a state transition table, you can implement that in C, right?
Now, analyzing, I mean, I think these are kind of self-explanatory, right?
Analyzing would be, you know, could you come up with a finite state diagram, you know?
Or evaluating would be, could you look at power consumption on your product and determine,
you know, how good it is.
Or could you compare different microcontrollers and pick one that is going to be best suited for a job?
And create or design, you know, that's the highest level.
And that would be to actually synthesize new information. And I did learn it more as a pyramid, although I understand what
you're saying about keeping them level. And one reason to have the pyramid is because usually
in order to create something, you have to be able to evaluate, analyze, apply, understand,
and remember it. But sometimes you don't need to do all of those at once. Sometimes
you can do a little bit of creating and then learn a new thing and then a little bit of creating.
I've seen some people who write books and basically they don't understand thoroughly
what they're writing about. They're learning something new. They're writing it out because
they're good writers and they aren't going through this whole taxonomy they're creating because they are
working with other people who can do all of the other pieces oh yeah well and think about like
the block diagramming right i mean students are definitely creating they're synthesizing
these block diagrams first week of class they know nothing right they have no memorization
understanding applicant they have very little understanding of all this stuff but they are designing things i'm not saying they're doing
a good job yeah you know they're doing it yeah the thing that comes to my mind when talking about
all this is that there's there's kind of a stage of mastery um where somebody can be fluent enough
with a skill or a topic to be able to, to produce something with,
with minimal,
minimal frustration,
I guess.
But,
uh,
I think as part of that,
there's knowing what you understand and what you don't need to have mastery of
and having the skill of being able to look things up.
Yes.
Yes.
Um,
and the difference between some excellent engineers
and some not-so-excellent engineers sometimes
is just a matter of,
oh, this person knows where to find the information
they need very quickly.
And they don't have it in their head.
And they might forget it
because they might not use it all the time.
But that's a separate kind of little corner of learning,
I think.
It's about building those models in your brain where you have like that abstraction and that intuition, which are like, yeah, I mean, if you're kind of looking at like sort of like the Dreyfus model, right?
I think that's more in line with what Alicia was saying, where you progress from sort of novice to competency to experts. You know, experts, they don't have that reliance on rules
and they sort of have that intuition
that you don't get at younger,
while you're younger in a field.
And yeah, so you know how things should work.
So if I'm interacting with like an MP3 decoder library,
right, I can sort of like look at the function call,
look at the parameters,
and I have a pretty good idea
of what I'm going to be passing to these functions
to decode, you know, frames from an MP3 file, for example.
And that's something that like a beginner or novice
wouldn't have that intuition about.
Because they have to spend their time being analytical of it. They have to
remember what it's supposed to do and break down what they need. They don't just have this
intuitive, I've already seen this 97 times and averaged the results sort of
expert level decision-making. That's a great point. Yeah, because they, what's a good way
of putting it? Like, all the work, they treat everything as like equally important and separate.
And it's so they would spend just as much time looking at each parameter. It's almost like,
it's like, they don't know what to skip over. They don't know what they don't need to know, right? Yeah. Yeah. Right. I don't keep a list of chip names in my head because once you start with MSP,
I just go to TI's website. I don't have to remember all of them.
Yes, exactly.
And then I know what class you're in. You don't have to tell me it's an STM, blah, blah, blah, blah, blah, blah.
You can just say it's a Cortex-M3.
And I'm, okay, I'm 75% there with you and I can guess the rest.
Yeah, yeah, definitely.
So you're saying that I shouldn't treat blooms as a pyramid,
that I should be treating it more as a circle?
Like I should be doing some of this and some of that and some of
this yeah so like i i don't know one thing that i always so like chris you you play guitar right
and elisa do you do you play musical instrument no i listen to him play guitar that's that's great
so i would say i'm learning guitar right now okay okay well but that's perfect right so i play
keyboards chris plays guitar so
i think everyone sort of intuitively knows you don't get good at playing a musical instrument
by like just learning how to play a chord once right like you you know you you play that c sharp
major seven chord right you finally get under your fingers and then you know a few minutes later you
play that you know a d7 or whatever, right?
And you go to play that C sharp major 7 chord.
And you can't immediately, yeah, it's gone, right?
You can't immediately get it, right?
So, how do you get good at that stuff?
Practice.
Repetition.
Practice.
Repetition, practice, practice, practice.
And sometimes repetition.
Not just repetition, repetition with analysis.
Because if you're playing a crappy fingering and your fingering is always crappy, then you're only going to learn to, you know, play it badly.
Oh, yeah.
Yeah.
No, that's a good point.
So, it's like that intense practice or that there's like a special, there's a modifier that they put in front of practice to describe what you're talking about, where you're like practicing the right way, you know.
And so, like I always remind my students, my engineering students, it's like, you know,
school of music students on the other side of campus, they practice their instruments
for four hours a night after they get done with all their classes and all their homework
and all their group ensemble rehearsals, then they go practice their instruments.
So I always ask my students, uh, how many hours did you spend practicing engineering
last night?
I mean, does my homework count?
No, no.
And the reason why it doesn't count is think about your homework problems, right?
They're always crafted.
Like the professors, there's like a trick, right? You're supposed to look for the trick.
Like, oh, this Fourier analysis is really, really complicated unless you see that, oh, you could do a partial fraction decomposition and then it really simplifies things. But like, you know, if you don't see the trick,
you know, you're going to spend hours doing this one problem. And, you know, the homework
assignments are not built to encourage practice. They're built to encourage trickiness, right? They're built to encourage sort of like this cutesy,
these cutesy little tricks that students pick up.
But you do have to, you do have to like, I want to say, pound your head against the wall for a
while before you really can remember those sorts of tricks. You can't just have somebody tell you
them and expect to remember them. Yes, I agree.
But now, you know, imagine, so first of all, I think homework load on engineering students
is far less than it should be.
I know that is a really aggressive statement to make.
Your students love you, don't they?
Yeah.
Well, yeah, no, we should talk about that.
Yeah, a different experience than I did.
I get about 15 hours a week on average out of my students, which is nuts when you think about it.
And I got all my assessments back from last semester.
Out of the 30 assessments I received, not a single person rated the homework as being too intense.
So you can get that kind of work out of students, but they've got to feel like they're doing it for a reason, right?
And, you know, with these homework assignments, when you start giving them, oh, you know, find the Fourier transform of hyperbolic cosine of 2x times natural log of x divided by x plus e to the 3x.
It's like, what is that? It's like, sure, they can do that, but it's going to
take them hours and they're going to have to do all these weird tricks and stuff to decompose that
and figure that out. And where does that signal exist in reality, right? What problem are we
solving? And if they don't see that, they're not going to do it. So it's that emotional connection to the material.
They've got to have it.
So basically, you're running a Montessori school.
Yes, exactly.
And I guess the way I'd look at it is, imagine we keep talking about 4A analysis because it's
like a great example of what you could be doing.
And imagine having, I don't know, like 50 problems on a homework assignment, but they're all like very simple, right? Sine of 2x,
sine of 3x, cosine, you know, like just very, or I guess I need to have a T in there, right? But,
you know, you keep, you start with these simple problems and what ends up happening is the
students, they really start seeing that pattern quickly, right? They see, oh, well, if I've got
the sine, it's like an odd function. So I've got the little dot that's positive. And then on the negative or
imaginary negative frequency, well, I never really understood what that meant. Then I've got the
negative signal, right? And with cosine, then it's an even function. So, you know, it's positive on
both, you know. And they're working through these problems. And, you know, I think that that's where
you get that practice, where they really start to develop that.
The problem is how do you make that something that is emotionally, that they can stick with it, right?
Then again, you know, if you're practicing scales, you know, and you're practicing all your different modes and you got your Lydian, your Dorian, and your Phrygian, you're going up and down on all 12 keys and doing all this stuff, I feel like that gets pretty tedious too.
Well, it does.
Somehow.
I think even that's probably taught wrong.
I think newer music instructors tend to say, okay, we're going to do these exercises, but we're going to make them musical.
Yes, exactly. we're going to make the musical, you know, take this and do it, you know, in dotted eighth notes
or something, or hop around, or take this and put it on a melody over some chords, but don't just
sit there and do scales. And I think you're headed toward the same kind of thing with your foyer.
Yeah, yeah, exactly. You've got to make it so that it actually is meaningful, you know?
And that's something we've said all along when people ask us, well, how do I learn C? And so I've got this book.
Oh, yeah.
That's great.
Throw it away.
That's great. Throw it away. Find something you want to make that needs it.
Yes, go program it.
And then go do it.
It's going to take you 10 times longer to write that program the first time because every single thing you're going to have to look up.
Sure. 10 times longer to write that program the first time, because every single thing you're going to have to look up. But once you know how to do that, the next time you do it, it'll only take you five
times longer and then two times longer, you know? So yeah, I mean, no, I totally agree. I think
if you look at like circuit analysis, so Alicia, you know, well, I guess I don't think you took
that many circuits classes, but you know, if you even took a simple, you know,
beginning circuits class, they get into nodal analysis and they've got these wacko circuits
and it's like a whole bunch of resistors and voltage sources and current sources.
I didn't take any particular classes.
Right? And so here's the funny thing. You solve that and you know, you get all the voltages and
currents and it's like, okay, Chris, what is this?
It's a mess. It's a rat's nest.
It's a heater. Like it's a element it's it's voltages and resistors yeah this thing is going to heat up
that's what it does that's it's a lot in life right and so so i'm always saying okay if i'm
going to teach like mesh analysis or nodal analysis i want to do it on like a dc dc converter
right like where you actually have like an inductor and you've got your switching element because, hey, here's an actual practical application.
I think the instructors or the people writing the text think, well, we can't have these elements in
yet. And all we've got is resistors at this point. So we've got to do some resistor problems.
Yeah, but so why are we even doing this topic at this point, right? Why not teach the basics
of the elements first? And then we can,
yeah, do the mesh analysis. Why would you do mesh analysis when the only thing you know
is a resistor? It makes no sense. So, yeah, I don't know. I think that that's definitely a
problem. And really what that comes down to is scaffolding, right? Scaffolding is a huge problem
in electrical engineering curriculum because the easiest way to teach a class is to
teach it topically, right? So you have a section on GPIO pins. And so, you know, what topics are
there in GPIO pins? Well, you have data direction register. You have the output register. You teach
output impedance. You teach input impedance, right? You teach all these different parts about GPIO
pins and then you move on to something else. But output impedance and input impedance, right? You teach all these different parts about GPIO pins, and then you move on to something else.
But output impedance and input impedance wasn't something I learned until pretty late,
until I started to need those things.
Which is good.
Yeah, I learned it in about a half an hour, and my double E said,
no, you idiot, this needs to be set like this, here's why.
Yeah.
Oh.
I mean, the digital part, I needed right away.
Yeah, exactly.
But the impedance part, yeah, that was much harder.
Yeah, so you split things up, right?
You teach stuff as you need it.
It's kind of like JIT learning, just-in-time learning.
I call it the corkscrew approach because it's not purely breadth first versus depth first, you know, top-down versus bottom-up or whatever.
But it's more like you kind of touch on the top, like first week of
class, they sort of know what UART is, they sort of know what SPI and what, you know, all these
different peripherals are. And we just kind of keep circling down through everything again and
again and again. So, we start out with GPIO as sort of, oh yeah, it's for buttons and LEDs and
like, yeah, it's just for digital signals on off, right? We don't talk about output
impedance. We don't talk about data direction. We don't talk about any of that stuff. Then we talk
about, yeah, what you're talking about, kind of the digital stuff. Now I'm teaching this in an
EE department, electrical and computer engineering department. So I want to go into the electronic
side of things too. So we actually look at, you know, what's the internal structure of a GPIO pin
and why do we care?
So, yeah, that's where the output impedance comes up.
But that only comes up, you know, well into the semester.
And it only comes up when they need it, when they go to start making motors spin or, you know, blinking an LED, a high power LED, and they want to know why is this not very bright?
Well, it's because, you know, your crappy PIC16 only has a 200-ohm output impedance.
That's pretty high output impedance.
Because otherwise, I don't know how you teach.
Students ask me all the time.
They see these LEDs, and they're connected backwards.
Why are you connecting the grounds to the pin?
They're connected to power and then the pin, right?
Because it's an open-drain config.
And it's really hard to explain that like an open drain config. And it's
really hard to explain that to a student without talking about output impedance. So that's where
we introduce that. That's an interesting approach because it sort of reminds me of how I ended up
learning on the job, which is where I learned most of the embedded system things I know.
And it was through kind of, okay, I need to know about this today. Tomorrow there's this problem
and I'll be over on this side of the device doing this and then you circle around and maybe you get
a little deeper oh there's a bug and in the spy for some reason and then oh learn some concept that
that has to do with what's causing the bug but it was never a well today i'm gonna this week
i'm gonna learn all about spy on this device. And that's all I'm going to do.
That wasn't how it happened.
It was like, okay, this needs to happen now, and I need to learn it now.
And then tomorrow something else will happen.
So why wouldn't we teach a class the same way that people naturally learn things?
That's kind of the whole approach that I've taken.
But does it feel like, do students say they feel that you're hiding things? I mean, it's like, I'm guiding you along and I'm hiding information and look, surprise, that thing you were starting to wonder about, here it is. Except maybe you were wondering about it and you went off and found it all out by yourself, but it was much harder than what I was going to tell you in 10 minutes. Well, okay. I don't think my students would ever accuse me of hiding anything.
I mean, the second week of class, I pulled up a hex editor and we started looking up
opcodes for an 8051.
And we wrote a Blinky program with hex, just like binary, you know, like opcode level programming
of a microcontroller.
No C, no assembly language. Like,
you know, I want people from a very early part of the class thinking about this microcontroller
as almost this mechanical box. It's just kind of chugging along, reading a byte, decoding the byte,
executing the, you know, reading the next byte, executing the instruction, and it just keeps on
chugging along, you know? So I jump from very, very high-level stuff,
block diagrams, to very, very low-level stuff.
And then we jump way back up to high-level stuff.
You know, we're writing, we're using code gen tools,
and then we're digging down into bits and registers,
and we just go all over the place.
And that'll give the kind of, that's, yeah,
I'm excited about this,
because I think that'll give that kind of exposure.
They're not going to remember everything, but they'll get a sense for the gestalt of the whole,
the way the systems work.
Well, I got like two or three emails from students this summer after the class had concluded,
and I'm not making this up. They emailed me and they're like, hey, I was going to hop on
our learning management
system and, and download the quiz or look at the quizzes again, just to brush up on some things.
I had some questions about that, you know, it's just, so yeah, they are going back to that material
and, and, and trying to, trying to come up with that stuff. You know, I don't really care if they
don't remember that, you know, hex seven five is the op code for doing an immediate move,
you know, into a, into a Ram location on a 80 51. Right. But what I want them to see is,
you know, the micro, so the main thing I'd say, like the fundamental theory of embedded systems
is that peripherals are memory mapped and peripherals run independent from the CPU core
inside the microcontroller. And I have such a
hard time teaching that if I don't show them that, you know, for example, we can just attach a
debugger, right? I can create a blank project in my IDE, right? I don't have to write a single line
of code. I can attach a debugger to it. And we can start wiggling bits around in peripheral
registers and LEDs start lighting up. I can do an ADC conversion, right?
I can just click on the go bit and then wait, you know, a little bit and then refresh the
result register.
And I have an ADC conversion just sitting there waiting for me to read.
And so students can kind of, they understand that, oh, wait, it's the CPU is like sort
of just the thing that's kind of, it kind of runs the show,
but really all it's doing is moving memory around, right?
It's just moving data around, doing a little bit of math, not much math, right?
On an 8-bit CPU and an intro embedded class, but just a little bit of math, a little bit
of coordination.
And yeah, they can really understand that these are all separate entities moving on.
And that C programming has nothing to do with embedded systems at all. It really
doesn't. It's just a programming language. It's just a tool that we use to generate this hex code
that the CPU knows how to execute. I can see that. Yeah. I mean, it should be separate.
And I can see how being able to walk through the code in the relatively safe environment of having your professor do it would help you really understand that that's what's at the bottom.
You don't have to look at it.
You don't have to program in it.
But at the bottom, there are machine codes.
And machine codes move memory around.
And that's what happens.
Well, you know, it's amazing. What's really cool is, you know, depending on how crappy your tool chain is, you know, if you have the optimizer turned on, right, you know, and you set a breakpoint somewhere, it doesn't always really hit it. Well, you know, in any other embedded systems class, I don't know how an instructor would deal with that. You know, I was able to say, okay, well, look at the disassembly, right? What's, you know, I mean, you've got the disassembly view. It comes up right next to, right next to your
code, you know, what's going on. Yeah. Right. Yeah. No, it's just, it's just to make it make
you look like a hacker with the disassembly view. Yeah. Oh yeah. But like, so the thing is,
so this happens all the time where a student forgets to call function, right. And they have
like a little knit function for their LEDs or
something. And they actually go to the trouble of writing this whole function, you know, maybe even
in a separate C file. And then they run their program and the LEDs don't work. It's like,
what is going on? And they set a breakpoint inside their function and it's got like a little gray
symbol and it's, you know, source can't be found. And, you know, it's only once they go to the disassembly
where they realize, oh, shoot,
the compiler just discarded all my code.
Why did it do that, right?
It's so attacked right now.
I'm pretty sure I did that at least once this year already.
Chris, it gets way crazier than that, right?
You have a for loop, right?
For int i equals one, i less than that, right? You have a for loop, right? For int i equals
1, i less than 5, you know,
like you can, or like a while loop, right? If you have like a while
i equals 1 instead of while i double equals 1,
that while loop will always evaluate to true,
no matter what, right? And no matter what you do
with i. And what happens is outside of that
while loop, all the code
underneath that wall loop never gets executed. The compiler is smart enough to just discard it,
right? It just gets rid of it. Can't set breakpoints down there. So yeah, now these
students, they can understand that. We look at disassembly quite a bit. But I don't teach them
assembly, right? We don't talk about that. We talk about, well, what kinds of instructions does a CPU
execute? Loads, adds, things like that. But yeah, that's all they need to know at this point. And
if there's ever something they need to investigate, it's kind of like what you guys are talking about.
It's the JIT stuff. You can just go look it up. In your blog post on teaching embedded systems,
you talk about formative versus summative. What do those mean? And why are you so careful in
separating them? Oh, yeah. So, I'm kind of an assessment nerd, and I'm getting weirder and
weirder and weirder. We'll have to talk about the advanced class I'm teaching right now after this.
But so, formative assessment is during the formation of learning, that's how you can remember it, it's tools that
you can use as a student and that your instructor can use to help determine how well you're learning.
And that's-
Flashcards?
Quizzes?
Yes.
Okay.
I mean, keep going. Anything, right? So, I have reading assignments that have little quiz questions embedded in the reading assignments. We have project-, right? They just, they really do not
understand these timers, right? So, I can use that as a tool to then determine what are we going to
go over and lecture that day, right? So, I always make the reading assignments due like at least
an hour before class. So, I sort of, I have the ability of quick like scrambling the lecture and
figuring out, okay, what are we going to do here? So, whereas I might've gone on to another topic, it's like, okay, we need to do
like an in-class activity. I want to do some peer learning and get these students hooked up with
other students that, you know, did succeed on this assignment and just kind of clarify that stuff.
So, that's all formative assessment. And then summative assessment is sort of like, okay,
once you should be done
learning this topic, let's see how much you have learned, right? So that would be like a unit test
or a unit quiz, right? So after every unit, I gave my class a quiz and that was worth 50% of their
grade. It probably should have just been worth 100% of their grade in sort of like a theoretical, if you're actually
like into assessment, I mean, their grade should be based on summative assessment. It should be
based on how much learning did you, how many of the learning outcomes did you achieve?
And so these are midterms and finals and the very last project. These are the,
ideally, you would be given your summative assessment six months later,
because that's when you need to know if they actually learned stuff. But thank God that we
don't do that. Yeah, we can't do that. Yeah, yeah, yeah. They like to have grades, you know,
within a few days of finishing the semester. Okay. So, and you're careful about separating
them because summative is more helpful for long-term outcome,
but formative is actually more helpful for short-term relearning.
I mean, I'm going to be a little aggressive here and say,
I might say that summative is not helpful and formative is helpful,
so that's why I want to separate it.
But you said your unit tests should be 100% of their grade.
Yeah, and I don't think that grades are necessarily helpful. I don't think it's
necessarily a good way of giving feedback to students about the progress they make in their
class.
Okay.
Yeah.
What would you replace it with?
So what I'm doing in my advanced class, so first of all, the university requires me to assign a grade, a letter grade to every student at the end of the semester within
three days. What I did for my advanced class this semester is we are not doing any graded
assignments. I don't have these arbitrary categories. Oh, quizzes are worth 15%,
tests are worth 10, projects are worth... Those are just
numbers that people pull out of their butt, and I'm not doing it. So, what we're doing is it's a
project-based class. So, we're doing in-class, a lot of in-class discussions. I'm meeting with
students, and I am assessing their learning outcomes as they're going along. I have a rubric,
and I basically assess each student individually and I give them
feedback in class, in writing, you know, on Slack, via email, and I let them know what they need to
improve on or what they need to do better. So, you know, if they're doing a block diagram of their
project and it's a little Spartan on certain technical details, I'll let them know and they
can kind of rework it and do better.
And at the end of the semester, I will figure out which learning outcomes each student achieved and I will give them a grade proportionate to that.
I don't know.
I don't know.
I don't know.
Not because I disagree with.
I agree that that's how an ideal world works.
But I don't know if I would take a class like that.
Because it depends so much on the professor being fair.
And one of the great things about midterms and exams is that if I got the right answer, I got the right answer, you have to give me the points.
It doesn't matter if you like me or not.
The problem is in a design class,
because this is an advanced embedded systems class,
this is not a required class.
This is an optional class that you would take if you're interested in this field.
I don't know what a right answer looks like.
Unless I have very sort of just
contrived design problems like, okay, read the data sheet for the following three voltage
regulators. Which one would you select for each application? And it's sort of basic.
I want a more open-ended and just more broad understanding of this stuff.
And you're right.
I could give them a final exam.
It depends.
Written tests.
So there's all these different modalities of learning and different modalities of thinking.
And a written test suits some people very well.
It doesn't suit other people as well. Right. I love tests. So, yeah. And as you can imagine,
I hate tests. You know, you could probably guess that from my spiel that I just gave you. So,
I don't know. I, yeah, I, I'm trying it out. We'll see. I've, it has worked flawlessly so far,
you know, knock on wood. But it has worked flawlessly so far, you know, knock on wood.
But it has worked flawlessly thus far. I tell people, I tell my class, yeah, you know,
get, you know, just on Tuesday, bring in your design documents and everyone does it.
No one would ever not do, you know, what I, what I asked them to do. And maybe it is like what you're saying. Maybe it's out of fear of, you know, pissing off the professor and not getting a good grade. But I think at this level, students are interested in the projects. They're actually just, they want to achieve these outcomes. And it's not like, it's really not about the grade, you know. And, you know, if they do well, I hope none of them are listening to this, but I mean, if you do pretty well, you're probably just going to get an A in the class, right? I mean, because it's harder to defend, you know, giving a student an F or a D
or a C. So yeah, I don't think it'll, I don't think it'll be that bad.
I guess for an advanced design class, I can see it. For freshman chemistry?
No, yeah, no. And not my intro class. I mean, my intro class, the other thing is just, you know,
when you have older students that have better abstractions, you know, you can have more abstract grading criteria.
Oh, that sounds like grad school grading, you know?
Oh, yeah.
It's pretty, you have to work really hard to get a C because a C is a test sentence in a grad school
class.
So, have you guys ever taken a test where you have gotten a grade on it that you did not agree with?
Yes.
Okay. So, I mean, I think grading already is arbitrary, right? I mean, the moment that you
don't complete a problem completely perfectly according to what the professor expects,
then all of a sudden, you have no idea what grade you're going to get. Is the professor
going to give you 2 out of 10, 1 out of 10, 8 out of 10? I don't know, right?
Not only that, I think a half a dozen times I've argued with the professor and he's found mistakes in his grading.
So, well, yeah. And there's that too. I mean, I just feel like grading is actually quite
arbitrary to begin with. It's sort of as cloaked in something that looks very like mathematical
and statistically sound, but it really isn't, you know, I mean, I was talking, we had a,
um, uh, like a teaching, I'd say like a teaching researcher that was
actually working in my lab doing engineering STEM education research last semester from Ireland.
And I was talking to him a ton about this. I was so proud of myself. I was bragging to him how I
made the summative assessments were 50% of the grade for my intro class. And
he's like, well, I should have made it worth 100% of your grade, right? I mean, if that's your
assessment, you know, that's what the grade is. And it's like, well, how do I motivate my students
to do my reading assignments, right? How do I motivate my students to do the labs, to do the
projects, to do all that stuff? And what he said is there's a ton of evidence that shows that if you give
feedback, written feedback, or just oral feedback to students, that is a much more powerful motivator
than a letter grade. Oh, yeah. Oh, definitely. I mean, imagine, Elisa, if you'd gotten like,
I don't know, like 70 out of 100 on some lab report, right? And it's just that 70 out of 100
and, you know, needs more explanation or whatever, right and it's just that 70 out of 100 and
you know needs more explanation or whatever right you kind of put it in your backpack and
or i guess you would probably go argue with that professor right because you're i can tell you're
you're someone who'd probably pick a fight over over a grade more more than i would
but no really okay no i i didn't argue very often with i No, I didn't argue very often. With your grades?
I didn't argue.
I didn't argue in undergrad at all. No.
I played graduate school and argued a lot because the problems were harder and there was a lot more judgment call.
Do you think that that correlates with why you like tests or is there a relationship there?
Oh, I like tests because I'm really good at them.
I mean, that's the type of learner I am. If you give me a test, I actually remember the material better.
And I'm pretty good.
I mean, I remember in some of my systems engineering classes, there was Foyer, man, come and save me because I often could intuit the answer and get the algebra wrong.
And so I remember getting almost full credit for a problem where Fourier man came and took away the two because it clearly did not belong there, and I don't know where it got it from.
So yeah, it's just that I am a good test taker.
It isn't always that useful in my job because nobody ever hands me a test anymore.
Sometimes they hand me, like, a quiz that I have to go study for, and then I have a meeting, and that's cool.
But nobody ever asks me.
4-year man hasn't been around in years.
Yeah, you know, if you left that two in, you know, whatever you were working on wouldn't work, you know?
Yeah.
And it's kind of interesting to think of a professor just sort of bypassing that.
Because at the end of the day, you really kind of didn't get the right answer.
Well, I knew the right—I mean, I didn't remember the right answer from, it wasn't an equation.
It wasn't that I remembered an equation.
It was that I could break down the problem into problems I understood well.
And I showed that path, but it was all sparse.
And then I showed the path that I knew he wanted because that was the way this class
worked.
And it was his math path that I just got lost on.
And you know, maybe if I'd had enough time,
I'd have gone back, but. Okay, now I have to ask,
and you think that's less contrived
than just a rubric in learning outcomes?
It depends on the rubric
and how much judgment there is for the professor.
Now remember, I went to an engineering school, and most of the professors were fantastic.
But there were professors that would stand up if they heard high heels coming down the hallway.
Oh, yeah.
And so I didn't always trust as much as I might have.
And that has made me more aware of, I mean, I had it really good.
I was pretty good at what I wanted to do and not bothered. But it makes me think that sometimes these more judgmental forms of grading can be hard on minority students.
Yeah, yeah. And yeah, I'm super cognizant of that, definitely.
Yeah, I would think you would be, but it's just one of those, you know.
Yeah, oh, no, I'm totally with you. I think that if you're going to do anything like that,
I sort of identify. So, first of all, I try to build a personal relationship with each one of my students.
I think that actually it's really critical.
You know, I want to know what my students are interested in.
I want to know what they do when they're not in my class.
I want to be able to relate to them.
And, you know, so I think it's important to, to build those bonds. And I, I'm, I'm like
sort of extra careful when I'm dealing with anyone who's, you know, underrepresented in the classroom.
You know, I have a lot of white boys that I teach, right? And so whenever I have a student that
doesn't look like one of those white boys that I teach, you know, I, I definitely want to make
sure that this is a great space for you to be part of. And I think that's really important
so that, you know, they need to have trust in me as an instructor that I can do the right thing.
So, yeah, I'm really glad you made that point, though.
Okay. This seems like a very hard way to teach. I mean, like a really hard way to teach.
Like, if you had 200 students, it would be impossible.
Yeah.
Why do you think that when you walk into a classroom, you know, nine times out of ten, you're going to expect the professor is just going to walk down and she's going to pull out a marker and start drawing on the board and start lecturing, going through some PowerPoint slides?
Because it's easy.
It is so easy, right? I mean, you two have PowerPoint slides, because it's easy. It is so, so easy,
right? I mean, you two have excellent subject matter expertise about embedded systems. You wouldn't need to prepare at all, right? I mean, think about if you had to teach an intro embedded
systems class, it would be a snooze fest for you. You just get in front of class and start talking
about things. And I think that's why that's sort of the customary default reaction or what an instructor is going to do. So for me, what I wanted to do, though, is put some upfront investment in making the reading assignments. So that took a ton of time. Right. While I was teaching this class and wrote interactive quizzes and made it online and did all this stuff and all the formatting and everything.
And by the way, made massive errors here and there that, you know, my students pointed out over over the semester.
But you put all this stuff together in the thinking is that once that's in place, this course kind of runs itself.
That's the hope. Of course, the reality is that that's not what
really happens, but that's the hope. I will say it's not, I think if I were to teach,
and I don't know if I'll be teaching intro embedded systems again, because I'm a grad student
and we are sort of lowest order on the totem pole and you never know how teaching assignments are
going to fall. But if I were
to teach this again, I think it'd be substantially less work. But you know what I will say? It's a
lot of work, but I think a bigger problem is it does rely on subject matter expertise a lot more
than I think traditional lectures would. Because with all the project-based learning, you're going
to run into students with very weird errors onbased learning, you're going to run into students with very weird errors on their computers.
And you're going to run into very interesting questions because you spend three hours a week talking with students bidirectionally in a classroom where people are asking questions, people are working through things.
It's very, very open-ended.
It's scarily open-ended, right? Because anything could happen. The discussion could go anywhere. So you might be a devices person who's doing all this semiconductor research
and you're expected to go teach intro embedded systems
or a circuits class or something like that,
and it's not really an area that you're super familiar with.
So there are problems, right?
And I don't want to walk over those because they are important to talk about.
And I should point out that Chris could definitely walk into a classroom and teach an embedded systems class.
What?
Just off, just walk in and do it.
It'd be lies.
You don't think you could?
I would prepare.
I have to prepare.
It's my nature. Well, I mean, you could just walk in would prepare i i have to prepare it's it's my nature well i mean you
could just start just walk and start reading your book you know i would still have to prepare
it's just i mean i would i would prepare it would be in the first you know the half an hour
beforehand in a panic yeah i mean if the students came in with questions
and all I did was answer questions, that would be
easier for me.
Just imagine them answering questions.
The preparing.
What you did, where you have to figure out
what do they know now?
What will they know
when I teach this?
And how do I make sure I don't make them feel bad
because I forgot to teach them
something? Well, I guess, I mean, if you want to be good at your job, then yeah, you would do that.
But what I'm saying is that like, you know, you wouldn't have to do that to do lectures. And
certainly I've taken many classes where the professors simply walk in and start talking
about stuff, right? And, you know, they might have some scribbled out lecture notes, you know,
that they prepared a half hour before, but yeah.
Okay, so here's a question that I thought about putting in the lightning round.
If a student fails a test, a summative test, assessment, not a test, assessment,
is it the fault of the student or of the teacher?
A summative assessment, it is the fault of the student at that point,
because what that would imply, at least in my class, what that would imply is that they did well on the formative assessments. And then when I came back a week later and said,
all right, sit down, take this quiz and, you know, just do, do what you did, you know,
do what you already know how to do. You already know how to do this stuff. Um, and, um, if it's
not, if, if they're not doing well on summative assessments, though, what that means to me is that I did a really lousy job both in instruction and in doing formative assessments.
So my formative assessments actually didn't cover what they needed to.
And so what I've done is when there's been – I hope future students don't listen to this.
But what I've done is toward the end of the semester, I sort of look at the grade book.
And if there's some students with some just awful, awful summative assessment grades, I'll send them an email and say, hey, that quiz looks like you didn't have a good day.
Why don't you come retake that?
And we can talk about the material beforehand.
Just come up to my office.
Let's discuss the material.
Walk through it.
Walk through any questions you have. And then you can retake that quiz. So that's typically how I do it.
Because, you know, at the end of the day, my goal is to get students to achieve their learning
outcomes. And if it takes until the last week of class, I don't really care, right? The only reason
why we actually have deadlines and why we, you know, sort of keep the class moving is just so
that, you know, we don't have every single student procrastinate until the very last moment
to do all this stuff. As a multiple F recipient, I feel like I should weigh in here and say that,
yes, it is very often the fault of the student, but there probably were things the professors
could have done to prevent me from getting an F. Yes, absolutely. And so, I do my darndest. I had a student last semester in my intro class
who, you know, the first three or four weeks of class, I think he just didn't quite realize,
like, the amount of work that was going to go into this. And here's what happens, you know,
you fall behind a little bit and it's like, oh oh shoot, it looks like I'm just going to fail this class, whatever, right? And I don't know why he didn't drop it, but he
just kind of kept going along, just barely squeezing along. He didn't do a lot of his
reading assignments. He was missing labs. And no, I emailed him the first month or actually,
I guess after the second week, right? I have no problem mommying my students.
These are young kids.
These are 19, 20 year old, you know, sophomores, uh, in college and they've never been away
from home.
They're, you know, they've, they've had one year of college under the belt.
I'm going to send them an email and say, Hey, you're let's, why don't, why don't you come
in and talk?
Cause you're, you're really not doing well in class.
I want to figure out what changes we need to make.
And so I called him in and he said, yeah, I know I need to do better.
I spend too much time playing video games.
And he kind of got his act around and we sort of went through the labs and he got the labs,
resubmitted the labs and kind of got everything together.
I think he got a B, B plus when he was
done with the class. And he's in my advanced class right now doing pretty well. So, you know,
I mean, I think that like, to me, my favorite students are, this sounds cheesy, but my favorite
students are the F students, right? The ones that are not doing well, because those are the students
that you have to work, right? Those are the interesting students. Those are the ones that's
like, why, what is going on in your brain? Why is this not clicking with you?
Is it because you don't have that emotional connection with the material? Is there like,
can I, can I make this material interesting to you? Or is it, are you, are your study habits
bad? Do you, you know, do you have a situation going on at home? Right? I mean, there's,
you have students of all walks of life and you know, those, those are the interesting students. The ones that get A, and those are the interesting students.
The ones that get A's, those are the boring students.
I never see them.
They never come into my office.
They just sit at home.
They do all the reading assignments.
They do all the labs.
They get 100% on everything, and they get out of there.
Those aren't really that interesting to me to work with, but it's those hard-to-reach
students that are much more exciting.
I can imagine that.
And I suspect that your students enjoy your teaching.
Have your students seen the post on which,
in which you talk about teaching methods?
Have they made any comments on it?
I haven't gotten any comments on that.
I've gotten a ton of comments on the dollar microcontroller one,
but yeah,
no thoughts on the other one.
Yeah. The last time we spoke to you, it was about your
interactive article on the amazing $1 microcontroller.
Yeah. God, that was a lot of work.
Do you consider redoing it?
So I get these comments from time to time that are like, oh, you know,
you should just update it every six know, every six months, you know, as new parts come out.
It's like, yeah, I'll just do that.
In your infinite free time.
My free service to the engineering community.
So I do have an update article that I'm sort of playing with right now.
Because, yeah, a lot has changed, right? I think like microchip and Atmel, uh, or microchip, I should just say has, has really tightened
its integration in, uh, with all the Atmel stuff.
And so now, uh, hell froze over and you can use MP lab to develop code on an AVR and you
can use a pit kit to program an AVR and it's bizarre, but that's the world we live in.
Have any, yeah, it's yes, but that's the world we live in. Yeah. It's yes. It is a bizarre world.
ST bought a tall lick.
And so now you have a thousand dollar true studio that you just get for free.
You know, it's crazy. The world that we live in.
So I think like some of my recommendations, you know,
like I was not super big into ST's IDE when I wrote that article because they hadn't bought a Tolic yet.
And their old system workbench, it was just kind of a stock Eclipse.
It was like whatever.
The peripheral register view, which I tend to use a lot, was awful.
Yeah, Eclipse does not do that well.
Yeah, because it uses, I don't know what open source plugin it was using,
but it was not good.
And so, but with True Studio,
or now, what is it called?
STM32 Cube IDE.
They just put all the words together, right?
It's awesome, you guys.
Like, I'm finally on the bandwagon.
It's really, Chris, you tweeted, uh,
no one ever got fired for picking an STM 32 one time. And that like has been seared into my brain.
And yeah, you know, it's, it's, I have to say, cause people ask me for part recommendations
all the time. I want to be the guy that says, well, actually there's lots of arm micro controllers
to choose from. It's really hard to say, and you know, just, actually, there's lots of ARM microcontrollers to choose from.
It's really hard to say, you know, just go get an STM32.
You know, just go get a BluePill, right?
At least start there.
I mean, there's plenty of applications where it's like, okay, that's not going to work for us because we need this peripheral configuration or this power configuration.
But once you're to that point, you're a pretty sophisticated organization to start with.
So, for most things yeah it's
hard to beat yeah have any silicon vendors reached out because of your article yes uh microchip their
main vp of whatever of engineering or whatever reached out to basically explain why the i'm
surprised by the way, I'm surprised
that we got through this entire recording without talking about the PIC 16.
So we might have to circle back around, squeeze that in at the end, but they basically explained
why their part was so slow and kind of the technical decisions that they made to make
it a four T, a four cycle part.
And they, and it was, you know,
it was very enlightening. They basically said, Hey, you know, flash memory is really slow,
which is true. And if you want to make it fast, you use a lot of power, which is true.
And we don't want to do that. So there's no reason to make it run faster than eight megahertz,
because you're just not going to get flash memory that runs faster than eight megahertz
without, you know, and you don't want wait cycles, you don't want wait states, because then your CPU is just sitting there burning power. So they have an 8 MHz flash access time, which means the PIC16 runs at 32 MHz because it's a four cycle machine. And I was like, okay, yeah, that seems reasonable. I've had flash wait cycles be the limiting factor.
And been so appalled that my whole processor went this fast
and it was spending all this time just waiting to get instructions.
That's when you compute Bitcoins.
Yeah, exactly.
Well, yeah, and you can start moving code into ram and start getting
so yeah exactly who wants to do that right no it is really sad when you you get some code working
at 24 megahertz and you bump it up to or you get code working at 12 megahertz you bump up to 24
megahertz and it's twice as fast and you bump it up to 48 megahertz and it's 15% faster because the flash starts eating into things.
You also wrote a new post about 3-cent micros, which is just crazy.
3-cent.
Yeah, I want to try this out, and I don't even know why.
Yeah, no, it's super weird.
You guys are going to hate it.
Like, you will hate this.
I don't know i mean from from all the
you know from what you what you dish about pick 16 i think uh this is this is like arguably worse
right if you guys like weird compilers that don't know how to do like basic things you know then
you're gonna love this i forgive a lot of things when it doesn't cost anything three cents sure
okay i'll put up with a lot.
Well, and we would play with it as hobbyists, as toys, as puzzles.
This is a weird thing. I want to try it out. Yeah.
As a professional, this would annoy me.
Yes.
Well, so the funny thing is, I think my article, one thing I wanted to point out, or one point that I probably didn't make very well, but I wanted you to not play with it as a hobbyist
because it makes no sense as a hobbyist. It only makes sense as a professional, but yeah, you
should, you should do it for fun as a hobbyist, but not like it, it isn't actually a platform that
you'd want to use. Uh, because I, you know, and Dave Jones mentioned this, you know, just the
act of programming, like putting the chip in the little programmer and hitting the program button,
like you'd want a part that you can get mass per or, you know, mass program by a, by a company.
Right. And you'd want that to be done like in the U S or somewhere where it's easy to coordinate.
And you're not, you don't have time, you know, a time zone differences and language barriers.
And there were some architectural things that were amusing to me, like the multiple execution
context bits.
Yeah, isn't that cool? Because it's not really, it's not multiple core, right? And yeah, it's just, it basically, it's just multiple registers. It's just got a bunch of different copies of the same registers. And it just switches between them, you know, which is, it's similar to like the parallax propeller or the, what's the other one? The XMOS. Have you guys ever used either of those? The propeller or the what's the other one the xmos have you guys ever used either of those
the propeller yeah propeller yeah i've never i've never uh done a project on either of those but i
think i think it's similar to those it does it does a propeller is it does it work uh like like
in other words if you have one core going you know at i don't know 10 megahertz if you get like four
cores going are they each working at that same speed?
I think so, yeah.
Okay.
They are actually like truly individual processors.
Yeah, so that's quite different than this, right?
Because this is, you turn on FEP, A,
and your CPU drops to half speed,
or you get four cores and it drops to fourth speed. So yeah, it's goofy, you guys.
But it's $0.03.
I mean, how do you say no to that? Right.
And you can get like, so what I did was I built two projects with it. I built like a NeoPixel
SPI to NeoPixel bridge, because I've had these projects before where it's like,
I'm in like Linux or something super high level. Right. And I can't bit bang out my NeoPixel thing.
And so I, you know, I just drop it and go, go get some
different, um, LEDs. Uh, but you know, like imagine just soldering down a 3 cent chip that
does all the conversion for you, you know, and it just gives you an SPI interface to the NeoPixel.
So I, I, you know, you wouldn't normally break up a system into multiple chips like that, but
when they're 3 cents, you know, if you've got a 3.3 volt system and you want to use a NeoPixel, which does not take a 3.3 volt, cause it's like a
what T or a CMOS instead of TTL logic level. So you need at least four volts, right? For a logic
one. Well, you go buy a logic level converter from DigiKey and it's going to cost more than
three cents. So it's actually cheaper, right? It's cheaper to get the chip that does the spi to to neopixel
conversion for you that also does logic level conversion in the process well this is the sort
of thing we were talking about uh when we talked to mike uh about pics and it was kind of the the
piece we were missing with why a lot of people like them is well i have this little one little
function i have to do and that's all i wanted to do it's not running a lot of people like them is, well, I have this little, one little function I have to do.
And that's all I wanted to do. It's not running a lot of software. It's doing level conversion.
It's driving some, a particular device and making a friendlier interface. And I stick it on my board and I never think about it again. Um, when we're usually thinking about larger applications. So
these sound like, oh, I could replace, you know, a small PLC or, you know.
Have people started saying, okay, sell me like a dozen of these Spyde new converters?
Because, I mean, I can think of places.
People would buy those and you could probably sell them for 10 cents.
I could spend, you know, 15 minutes putting each one in a little envelope, putting in the mailbox.
Yeah.
Putting a stamp on it.
If you had a little baggie, it would cost more than the chip.
Yeah.
Oh, I know, right?
No, I'd sell them in packs of 100, probably.
Yeah.
For $3.
The thing that interests me, too, is where does this say that microcontrollers are going, right?
Because in 10 years, isn't stm32 equivalent part going to be
a couple of cents yeah i mean you can already get you know the cortex m0s for 30 cents kind of in
that price range which is nuts you know you have to go over to china to do it but uh yeah in shenzhen
you can get um a true actual real not copy not clone clone SM32s for kind of in the 30 cent range.
I don't know, my professor, my advisor, who's not an embedded systems person, you know, when I was
doing some wireless sensor research, and I've sort of looking in the field, you know, he sort
of talked about the, you know, the 10 year vision of having, you know, just, you know, these sensors
everywhere. It's like, you know, he's like, you put them in the cans of paint, you know, just, you know, these sensors everywhere. It's like, you know,
he's like, you put them in the cans of paint, you just paint them on the wall and they can harvest
energy and they can transmit data. And, you know, those, those were kind of the applications that
excited him. And I just rolled my eyes. It's like, you're never going to be able to afford to, no,
that wouldn't make any sense. But now we have three set microcontrollers. You could put,
you could dump them into cans of paint and they wouldn't add much to the cost so you know we still have power and
you know rf issues to figure out but uh it's a start and maybe water ingress or latex ingress
yeah yeah whatever yeah details details but yeah i mean, so, you know, I think for a long time, the 555 timer, you know, people, there's like, you know, this cohort of, you know, religious zealots that are obsessed with the 555 timer.
And it's like, I don't know when those no longer made sense, but now they certainly no longer make sense, right?
A 555 timer is much more expensive, especially when
you add in all the extra support circuitry. You know, if you want slow pulsing on a 555 timer,
that means you've got to have big RC constants. So that means either noisy resistors or really
big expensive capacitors. And so when you go to lay out a board with a 555 timer and you want it
to blink every second, I mean, it really doesn't
make sense. Like you just want to use a three cent micro, you want to use a 20 cent micro,
honestly. And so, yeah, that was the second project I built was just a bike light. It just,
you click the button, it turns on, starts flashing, you click it again and it turns off.
So it's like a toggle switch thing. When it goes into low power mode, it's in like the 300 nano
amp range. So your battery will self-discharge before the micro discharges, right?
So it just doesn't use any power when it's off.
It's pretty incredible.
Wow.
Okay.
I want to play with it, but part of me is like, no, you have enough hobbies.
Well, and the thing is, it's like you've got to buy an ice and you've got to buy a programmer.
And you really have to.
There's no getting around those.
No. to buy an ice and you've got to buy a programmer and you really have to there's no getting around those there's no well you guys i don't know if you notice there's like uh sdcc the small device
c compiler they have support for the the paddock parts now it's it's cool i think it's it's awesome
that you can use a real c compiler that that understands for loops right which the paddock
compiler doesn't understand i mean let that sink in for a second. But, right, you know, the problem, though, is there's no integration with the vendor ICE.
So I don't know how you develop on these, right?
Because you want a debugger, right?
You want to be able to look at memory.
You want to be able to look at this stuff.
These parts, you can't print F.
You can't, like, there's just no room on these to do any of that stuff. So I think that that's where you're kind of stuck in the vendor toolchains for now until someone comes along with an open source ICE, and then it'll be cool.
All right.
Well, if anybody out there is working on an open source ICE with these processors, let us know.
Okay. let us know okay you mentioned pick 16 and i skipped over it because the only question i
thought i could ask was if you were teaching the intro class again what processor would you choose
because clearly you made the wrong decision previously well okay so i want to flip it around
to you miss alicia again i know i don't want to ask you okay what picks a key with a perfect choice
and you had good reasons yeah yeah yeah so so that's the thing like what part would you know and and
seriously your listeners write me let me know i would love to switch parts because there are some
problems with the pic 16 right one problem is the debug speeds are awful it takes uh it can take
10 seconds or longer to start a debug session and to end up on your main break
point see but i think you gotta you gotta give kids that experience first because that happens
all the time in your job and you just gotta you gotta you gotta now you sound like that old
crotchety professor that's like well you know learn how to use the slide ruler you know before
you use the graphing copy i don't know Like I want to give students the best experience. I want them, I want a debugger that starts up in half a second
and immediately they can see everything that's going on, right?
I, you know, I do want those good experiences.
GCC and GDB on an STM32.
Yeah, with 500 lines of startup code, right?
And you're dealing with...
No, I know it doesn't work.
No, it doesn't work.
And one thing, you know,
one of the big ones is actually the packaging, right? I want a dip microcontroller. I want
something I can put in a breadboard because for me, you know, we haven't even talked about like,
you know, the different modalities of learning, right? I'm really into psychomotor stuff. You
know, when I'm going over timers, I get students up out of their chairs. I bring them
up to the front of the classroom and they act out a timer peripheral. You know, I'll have a student,
I'll start a metronome and I'll have a student act out the prescaler and, you know, he claps on
every other click, you know, if I've got a one to two prescaler. And I've got another student acting
out, you know, and using their hands and moving around, right? And same
thing with breadboarding. I want students plugging things into breadboards and blowing things up and
trying things out. That psychomotor learning is... But you don't act out that part.
We don't act out the breadboard. We don't do, you know, dance.
The explosions.
Yeah, well, yeah, no, we don't do that. But the breadboarding is super important to me
because on Arduino or really any other platform, what students see is like a red board or a blue board.
It's got a whole bunch of junk on it.
It's got a USB connector.
And that's the embedded system.
And they don't separate the debugger from the microcontroller.
They don't separate all the LEDs and the buttons.
We tell them, oh, PA6 is located on pin 15 on this header, right?
And then they look up the schematic.
It's just, it's super clunky, right?
I want to give a kid a chip that I can put in her hand and say, this is a microcontroller,
right?
And it's not like, oh, this is a model of a microcontroller or this is an abstraction
or, you know, in learning we use this, but in practice you'll
use, no, I want to give students an actual microcontroller. They can hold in their hand,
they can hook up power, they can hook up ground, they can hook up the reset pin.
If they screw up the reset pin, their microcontroller doesn't work. I want them to
screw up that reset pin, right? And, and accidentally pull it low instead of pull it high,
right? Like I want students to have those sorts of experiences. I want them to have a standalone
debugger and I want them to wire in the ground and the data and the clock and the reset pin to it. And if they forget to wire in the ground, their debugger won't work. And I want it to not work. Right. I want them to to sort of remember all that stuff, because then when they go to build their own circuits, you know, they'll have all that understanding. And, you know, it's so easy for us as, you know,
professional embedded engineering people with all this experience, we can abstract all that stuff
away. But, you know, younger kids, you know, they don't have the prefrontal cortex development,
right? So, their brains just are not nearly as developed and they don't have that abstract
reasoning, you know, so you want to keep things keep things concrete so i think that's honestly one of the main reasons why i went to pick um what do you
know what other dip micros msp430 maybe that was the only one i thought but he looked at that and
he said they didn't work well in mac os which would eliminate yeah chris you're on mac right
have you have you ever done debugging on an MSP430 on your Mac?
Yeah, I don't. I've had students that have reported that it just doesn't work with the FET,
the FET tool, which is on the launchpad. They're professional tools. I think it does work, but all of a sudden you're buying a hundred dollar debugger. So that's kind of the other thing.
Yeah. You know, you narrow it down and that's... Yeah, yeah. And what's funny is, so from when I wrote my blog post, the amazing $1 microcontroller, Microchip really turned things around. They've got the MPLAB Snap debugger, so you can get started on a pick for like 16 bucks for a debugger, a USB debugger, which is pretty cool. And it's full speed. It's the same as their latest, greatest picket for. So, you know, I, I think the part
works. It's not, it's certainly not perfect, but it was really important for me to go through that
tool selection. I think for a lot of instructors, it's sort of, oh, it doesn't really matter,
right? Because we're, we want to teach the concepts that the tool is just the tool,
but I think it's a great choice. Yeah. It makes sense. It's simple enough. It's straightforward enough. It met all the criteria. And I don't want to teach the tools, except then that's what the student's spending all their time fighting. 6-damp, which was a pick on an extra-tip package.
Yeah, that was great.
So, yeah, I'm not going to complain about that.
Yeah, sorry.
We're in favor of microchip on this one, although
if there are others, it would be nice to know.
Yeah, seriously. Why aren't there
others? That's my actual question.
Because anything with an arm
has too many pins for a dip.
There's plenty of other architectures.
Yes, let's teach them 8051.
Oh, you know I want to.
There is, I found a weird, shady, gray market supplier of older Silicon Labs dip packaged 8051 microcontrollers that still work with the new IDE and the new debug probe. And I
was like this close to going with it, but it was like, what happens when I want to teach this class
again? Am I still going to be able to buy these chips? Kids turn in your chips. Yeah, exactly.
Don't bend any of the pins. Don't blow them up. Yeah. Don't blow them up.
Yeah. I know I was supposed to ask and say, don't blow them up. Yeah, I know.
I was supposed to ask and say microchip is awful, but, you know, we don't actually think that.
Well, so here's the other thing.
Just be honest with your students. So, you know, I tell my students, this is not a part that I would generally use for a design.
It's expensive.
Like, for what you get, it's really, really expensive. Even among 8-bit
parts, there's much better 8-bit parts that are faster and have better peripherals and are half
the price or even less or a hundredth the price, right? In the Paduk case, right? So,
well, because seriously, so Paduk, the Paduk basically is the same speed as a PIC 16.
It's, I mean, it's very similar architecture and it's the same performance.
So, yeah, I mean, that's where you're at with that stuff.
But with the PIC, it's just, yeah, it was perfect for the class, right?
And I'm upfront with my students about that.
And we kind of joke around about that.
And, you know, again, this is like with subject matter expertise, right? I have the ability because I know I'm the microcontroller
guy. So I can bring in all these class demos. So I bring in like STM32 H7s running touchscreen
stuff. And we kind of talk about that and, and I'll bring in why, you know, wifi microcontrollers
and, and we bring in eight bit parts and super cheap stuff. And, you know, I had some students
from my class that were, you know, Chinese international students. So we were talking about all the STC
parts, you know, and, and how they've got kind of a leg up over a lot of the students, because they
can read Chinese, you know, they can read these data sheets natively. And, you know, they should
look at those parts and get good with those parts, because there's a lot of cool stuff coming out
all over the all over the world these days. So, if you're upfront with your students and you
sort of remind them that this is just an example of a microcontroller, right? Because you're right,
Lisa. You shouldn't teach a chip. That's not the point, right? And so, the reading assignments and
all the in-class, all that stuff, very rarely talked about PIC 16 specific stuff. In fact, a lot of times I would
explicitly teach against it, right? I'd be teaching ADCs and I'd be like, so let's say you have a 16
bit ADC or let's say you have a 8 bit ADC or 10 bit. And what's funny is the students, they
weren't really sure what kind of ADC the PIC had because who knows, right? And so they'd have to
go look it up and figure out exactly what they had.
You know, when I was teaching timer peripherals,
a timer block model that I used was quite different
than what the PICs actually had.
So they had to sort of adapt that model in their brain
and from the reading assignments to the labs that they did.
And so there's some good learning outcomes there too.
Yeah, I mean, that's great.
You're teaching theory and then they actually get to figure out
how little theory has to do with the real world. Yeah. Yeah. And as you can imagine, I gave up
kind of toward the end of the semester. There was a lot of, you know, toward the end, there was kind
of some reading assignments. It's like, how does PWM work on the PIC-16? Let's do a reading
assignment about that. Because, oh, you got to enable this timer and you got to do that you
got to hook that up to there and you got to remember to multiplex your pins and you got to
do your peripheral pin select because of the flexible pin routing on the pic 16 f18446 do
you guys notice that there's like that spectrum in your head between flexible and like easy to use
oh yeah oh yeah yeah flexible always it's like it's like when you're looking at houses and it's
a fixer-upper or cozy or something it's like yeah that's a positive word that means doom
yeah yeah i hate flexible that's my least favorite we couldn't figure out how to make this easy so
we gave you all the knobs. You figure it out.
Yeah.
I just want to turn on my SPI peripheral and have like four pins just magically become SPI.
I don't want to.
Exactly.
Yeah.
I just, yeah.
I will, you know, we have multi-layer PCBs.
Like, guys, we have the technology.
I will route them.
I will find a way to route the pins, you know, to where they need to go.
Don't worry about it.
That's how you can tell that you're more software than hardware because hardware engineers
want to be able to move the pins to wherever it's convenient for routing. I've been there.
I've seen that. Well, I'm both. And so my problem is I know it's going to take an extra 30 seconds
to drop some vias in and route the pins to where they need to go, but it's going to take an extra 30 seconds to drop some vias in and route the pins to where they need to go but it's going to take an extra 30 minutes to figure out how to pin mux this so
i'll just drop the vias and get the pins routed some other some other way well we have kept you
for quite a while and while i suspect we could continue talking for quite a while
we should let you go back to your weekend.
And we didn't talk about student modalities.
No.
It's fine.
They can look that up.
I'll put a link in the show notes.
Everybody learns differently.
That's their takeaway.
Yeah.
Do you have any thoughts you'd like to leave us with?
More thoughts. Do you have any more thoughts?
Yeah, more thoughts.
I don't know i you know i think so every engineer should try to
find a way to contribute back to the community i think we've talked a lot about that either from
teaching or writing blog posts you know i don't know it's it's it's what's amazing is how much
i've learned uh about engineering from teaching engineering you, they say those who can't do teach,
but I disagree with that tremendously.
And I think you actually learn how to do better by teaching.
Yes.
Absolutely.
Yeah, I don't know.
So like you two, you create professionally produced podcasts
that have distribution through all the major platforms.
And I sit in front of my WordPress CMS
and just kind of mash the keyboard and come up with some blog posts.
So, you know, we all kind of do our little part.
And yeah.
I like that.
And I'm cool if the little part
is maybe just helping someone else today,
not having to do nicely edited posts.
You really don't want to go back to the blog, do you?
No, I'm happy to go back to the blog.
It's the guys who wouldn't do it.
It's not my fault.
Our guest has been Jay Carlson,
electrical engineering consultant
and PhD student at the University of Nebraska.
He is teaching advanced embedded systems this semester.
We'll see what he teaches next.
Thanks, Jay.
It's good to talk to you again.
Yeah.
Thanks, you guys. Thank you toopher for producing and co-hosting and thank you for listening you can
always contact us at show at embedded.fm or hit the contact link on embedded.fm and now a quote
to leave you with this from charles schultz i don't know the context, but it doesn't really matter.
Try not to have a good time. This is supposed to be educational.
Embedded is an independently produced radio show that focuses on the many aspects of engineering.
It is a production of Logical Elegance, an embedded software consulting company in California.
If there are advertisements in the show,
we did not put them there and do not receive money from them.
At this time, our sponsors are Logical Elegance and listeners like you.