JIT Learning Using Expert Systems

Chris Gammell is a guy that should need no introduction around these parts. He’s a co-host on The Amp Hour, and the guy behind Contextual Electronics, a fabulous introduction to electronics and one of the best ways to learn KiCad. If you want to talk about the pedagogy of electronics, this is the guy you want.

Chris’ talk at the Hackaday | Belgrade conference was on just that – the pedagogy of electronics. Generally, there are two ways to learn how to blink an LED. The first, the bottom-up model taught in every university, is to first learn Ohm’s law, resistance, current, voltage, solve hundreds of resistor network problems, and eventually get around to the ‘electrons and holes’ description of a semiconductor. The simplest semiconductor is a diode, and sometime in the sophomore or junior year, the student will successfully blink a LED.

The second, top-down method is much simpler. Just wire up a battery, resistor, switch, and LED to a breadboard. This is the top-down model of electronics design; you don’t need to know everything to get it to work. You don’t need to do it with a 555, and you certainly don’t have to derive Maxwell’s equations to make something glow. Chris is a big proponent of the top-down model of learning, and his Belgrade talk is all about the virtues of not knowing everything.

The Car Store
Chris’ car store, the place that has every part to build a car. In the electronics world, this type of store is known as AliExpress and eBay.

Chris begins his example by going through the process of building a car. In the bottom-up model, you would begin building a car by first learning thermodynamics. The top-down method of building a car is much simpler – you don’t need to know thermodynamics to build an engine, because you can just buy an engine and put it in a chassis. For every part you need, you can just go to the car store and buy some wheels, an engine, and a steering wheel.

For every electronic project you build, each piece of your block diagram is available as a module. If you need a boost converter, that’s a black box you can buy from Digikey, Mouser, or China. If you need a better boost converter, you’re still able to design your own, but you’re not starting by learning all the theory.

Chris’ solution to learning electronics isn’t learning theory and equations. This gives you tunnel vision, a simple problem – an LED that fails to light – leads to a rabbit hole of textbooks and Wikipedia. Four hours later, the student still has no idea why the LED doesn’t work and is simply aggravated. Instead, Chris suggests taking things apart and looking at how they work. This takes the learning process up one abstraction layer, and after looking at a few dozen circuits with LEDs, the problem isn’t one of remembering equations and theory. The problem becomes pattern matching. Humans are very, very good at matching patterns, making this the ideal way to learn.

Effectively, this is Just In Time learning – you don’t need to know everything at the start, you just need to know what to do to get to the next step. How do you do this? Expert systems, or more specifically, the Hackaday.io community, the EEVblog forums, or any of a dozen other electronics communities around the web.

Compared to learning a bunch of theory and then futzing around trying to get a circuit to work, Chris is saying you should dive in and iterate quickly. It’s not going to change the pedagogy of universities, but it will get you blinking an LED faster, and that’s what we’re all about anyway.

51 thoughts on “JIT Learning Using Expert Systems

        1. Dunno. I heard someone talking about talking the talk, so I stopped to see what the talk is all about. Saw a bunch of people with walkie-talkies on the way to the talk. Some stores are having a sale on talcum powders, too, apparently.

    1. And that’s what leads to many problems where i work. An engineer goes bottom up and asks you to build it. You look at the drawings and overall design and tell the engineer that their design can not be made in the real world. The engineer responds that their calculations and the computer said it will work. You go spend hours doing what you can to build the impossible and showing the engineer that it is impossible. The engineer says nothing and come back later with an updated drawing. Lather, rinse, repeat.

      I don’t understand why it is so hard for engineers to believe that someone without a piece of paper may have the right answer or know more than they do sometimes. God forbid they take into account one’s almost two decades of personal and professional experience into account.

      1. This problem comes up EVERYWHERE
        Technicians/Mechanics/Machinists complain that engineers don’t know what they’re doing and design impossible-to-build things. Because they’re trying to design something that covers 100% of the customer’s requirements.
        Engineers complain because technicians/mechanics/machinists want to build ‘what works’, but ultimately doesn’t account for all of the customer requirements.

        Both are right, both are wrong. That’s why working together is important in design.

        (pro tip: don’t just say “that’s impossible.” Say “it would be better if…” People don’t respond well when others rudely tell them they wasted their hard work without so much as an explanation and only pride gets in the way of a helpful suggestion)

        1. Even better than saying “it would be better…” is to hint a possible problem and ask what the solution for this could be.
          like “this could be a problem, would this work?”

      2. the tech phrase for that is ‘eat your own dogfood’.

        good example: we had some design engineers product a small pcb for us and it had a reset button on it. the thing is, it was a convex dome style button and it resisted being easily pressed, even with a toothpick! this guy or group of guys who designed it, never once had that part in their hand and tried to imagine it being used. I bet they were all recent grads and had no idea that there’s more to designing than ‘yes, this part has a footprint that will fit on my board’. when we brought that board to the field, we felt embarassed and the customers could not reliably press that stupid reset button!

        it would be simple if they ordered parts, TRIED THEM and then made the board. I guess that’s asking too much from the millennials….

        1. On another thought, why would the reset button need to be easily pressed? Shouldn’t pressing the reset actually be a bit hard so people don’t do it accidentally?

          If the product requires to be reset frequently, wouldn’t that be a greater concern than how easy it is to press the physical button?

  1. I think a mix of both works for me personally. I’ve learned ohms law etc. But also used electronics kits etc to keep the interrest going without being bogged down by a lot of theory. I think ohms law is essential, even for blinking a led to calculate the resistor to limit the current. Forward voltage of a led is handy to know too.

    1. I think we share similar appoaches. I figure you don’t have enough time in life to learn everything about everything. If you start with top-down, you can then say: “hey, this particular blackbox is awesome, I wonder how it works” and then really drill down into that.

      This is personal growth, which is great for life-long achievement. But when you need to get one particular project done, on time, and within constraints, that kind of drill down can be huge hold-up.

  2. For me this is the only way that i can ever get to finish a project. When i start from the bottom up i end up rabbit holing myself trying to design the best solution to every possiblity instead of finding an adequate solution to the problem at hand.

    I also feel that top down is a good approach because most of us are tackling our designs as one man (person for those obessed with “political correctness”). To go bottom up solo tends to lead to much longer development times, more frustration than one should have to deal, and a solution that is usually not focused on the design problem at hand.

  3. “”Four hours later, the student still has no idea why the LED doesn’t work and is simply aggravated.””

    Not if he learned the theory. To me this is rubbish.

    1. The example is a bit contrived. If you’ve got a led and a resistor, and it doesn’t work – either one of the parts is broken or the connection is wrong.

      There’s only so many ways you can connect the two, and a modicum of common sense would eliminate the obviously wrong answers. Testing the remaining answers will reveal the solution to the problem.

      1. It depends on how deep you go. When I was studying there was a mandatory semiconductor/quantum mechanics course for EEs. It certainly taught you how diodes, LEDs, and the like worked but lots of people failed it and didn’t take away anything useful. Even when you’re learning from the bottom up you need to make intelligent choices about where abstraction is sensible. When you do that you’re completely right.

        1. That’s covered under the case of “broken component”. After you’ve eliminated the connection as your problem source, you’ll have to test the resistor and the LED, and that will reveal if the resistor is wrong.

          1. but how does the student know that the resistance value is important, how “should” he have known about ohms law, and shorting LEDs, and how “ON” or “HIGH” is a device specific voltage, what is voltage? its easy for anyone that has already learned something to treat it as trivial and recommend others to “just do the thing that there”…

  4. An interesting dichotomy of approaches displayed here. Which of two experiences do HAD readers find more satisfying.
    1 Putting together blocks of devices from web info and learning this ONE way to achieve an interesting result. After this the experimenter can only be reasonably certain of this one combination of widgets that worked.

    2 Working toward deep understanding of basic rules that relate different things so that new constructions can be imagined and created without extensive trial and error.

    To me number 2 is VASTLY more satisfying. I would rather know how and why a simple thing works that having memorized a few particular setups that make something yak on the internet.

    1. Number 2 is more satisfying to me as well. However, I was not proclaiming that some kit with a subset of blocks was the only things they’d ever need. Instead, I was targeting the folks in the audience who will never get to that point because of the piles of math that awaits them in traditional education. Get someone building SOMETHING and they will come back for more (including the “how”, the “why” and the “when do I get to try something even more challenging”)

    2. The car analogy is false, which weakens the whole argument. If you bottom up a car doesn’t it means you have never seen one? You are making the first car, at least as far as you are concerned? If you have seen one then you know what you are aiming for and can’t really do bottom up.

      Whereas to top down a car assumes you have seen many cars and you are going to copy what they seem to do (and miss all the emergency and passenger protection features). Maybe that Japanese x-ray telescope was a top-down design. Too many black boxes not fully understood. Yeah, it fits the scenario.

      1. When the top-down approach is used with little insight into how things actually work, it becomes cargo-cult engineering.

        In other words, replicating the appearance of a functional thing rather than building it. It may work, or it may not – often it doesn’t.

        1. I remember as a child trying to build a laser with small mirrors, a crystal (in the sense of geology), and pumping light in it with a flashlight… I still mentally facepalm when I remember that

          1. At least you would have learnt what didn’t work ;)

            As a child if you took the bottom up approach you wouldn’t got as far as playing with mirrors and lights

    3. I know way too little about electronics to be an average HaD reader, but for what it’s worth I really like 1 (top down). I’ve done a few raspi/arduino projects and quickly run into a downward spiral kind of situation. Like I need to figure out small step A but internet posts on that introduce B which I also don’t understand. Trying to figure that out leads me to C. And so on. When then asking what I need to know about A to get unstuck in the raspberry forums I got a reply of the type “go read a basic electronics book and come back in a few weeks”. Good advise for the long run for someone with a lot of time and patience. But requiring that kind of investment only to get unstuck on a small step can make a beginner drop the whole thing.

      1. It’s easy to think you are doing 1, while in fact still profiting from once having done 2.

        For example when you drive around, your thoughts center on your goals and motivations, but you subconscously (in the forms of habits and reflexes) constantly check and verify for other traffic, maintain compliance with the rules of traffic etc…

        Similarly, when you grab a LED, you may subjectively perceive it as doing top down decisions, but in the back of your head you knew you had to grab a resistor too and roughly which value, due to Ohms law, and the power dissipated across elements…

        1. People here are basically arguing either what’s more efficient or what actually happened in the mind of a creative person’s brain as a semantic reasoner: forward chaining or backward chaining or both simultaneously until they meet?

          The truth is that we as brains are not fully self-aware, I have no unique identification system for each neuron and synapse to describe how my brain concluded something, if we did we would not need EEG, MRI etc for research, we could simply study (small parts of) our own brain by mere thought, and write down the exact behaviour of single neurons, and how learning (i.e. training the neural net) works on the single cell level.

          The brain has hardly been fully understood yet, so the best we can do to resolve the discussion is hold futile hope that we can self-asses to which extent we have forward or backward chained in the solution of problems in the past, and then all recommend what we _believe_ to be most important…

  5. It is a cute idea and fits current education trends. We never know if they are any good until 30 years later. Watch all 18 of these https://www.youtube.com/watch?v=xMP_AfiNlX4 and you will learn why you need to know a lot more than you thought you did.

    Engineers who brag about not having done an integral since school probably should have, and I recommend they not watch these videos to avoid depression.

    1. a lot of building (and even designing systems) is INTEGRATION. you glue logical parts together.

      I spend time finding what parts are out there, what works together, what is known to work and what is probably more of a time or money waster. I rarely go super deep in things but I need to know enough so that I can COMBINE things and get larger functional blocks or whole products working.

      times have changed. its now more of an integration (‘cut and paste’ is a derog but almost accurate way to think of it) process. how often do you build up your own transistors? chips? sometimes even boards are the FRU and you think in terms of boards or modules.

      things are very complex and its not scalable to know all the up and down the stack stuff. nice to know, and over decades you get to know things, but to be FUNCTIONAL, you don’t need in depth knowledge of all the parts.

      we keep raising the bar. a few decades ago, considering a chip to be a black box was sort of ok. now, whole subsystems are black boxes, they have inputs, they do things and they have outputs. HOW they do it, it almost does not matter. if it meets your needs, you use that block or box. life is too short to get into every little detail. there are things to build! ;)

      1. I agree about integration. I used to read several publications a week, especially the new product sections (back when it was all print). I could remember any part I saw that caught my interest probably because it caught my interest as I could imagine doing something in particular with or it made something easier or possible for the first time. I always had a huge mental catalog that included the manufacturer and a part family – sometimes the number. This was indispensable in doing the best design for the money. Just browsing and collecting info and ideas. Also gleaning the app notes and app books from Analog Devices and TI and National and Motorola.

        Top down I would have built junk. There was no easy search or way to get tech help unless you called the manufacturer and could get past the sales reps. Today I do the search and copy paste for code and whole open source and open hardware projects and the wealth of material everyone contributes in blogs and forums. But I feel lazy and sloppy when I do it because there is not way for me to know if I am near the bottom or the top in terms of efficiency or accuracy or cost or performance when I’m plucking things from people who might or might not know what they are doing.

      2. “how often do you build up your own transistors? chips?”
        ah, now I see, we are all in fact thinking of different things like building, designing, reasoning (making deductions for problem solving), learning (personally re-deriving deductions by following derivations made by others) etc…
        You are talking about bottom up vs top down building/fabrication/assembly. Compare it to the learning process of understanding diodes.

        There is a difference between fabricating your own diodes, and learning from theories of others on how they work. Most people accidentally encountering variable capacitance of a diode wouldn’t know (because they don’t notice in practice or they notice but fail to interpret it as a variable capacitance) nor then remember the practical experience of variable capacitance if they can’t explain what is happening and hence don’t dare rely on an unexplained effect in future designs. Unless they were exposed (by others or by actively seeking more theory, simple or complex) and learned to visualize the very thin but variable seperation between the conductive parts of the diode as a function of voltage.

        1. consider the proofs of in the metamath software, a proof forms a tree you can view it both as top down (the root / topmost deduction, and then drill down to get an explanation of the hypotheses this deduction relied on), or as bottom up, first making a lower layer of deductions, and then using these to deduce the next layer of deductions until at the result).

          The verifier of course works bottom up for verification, but the mathematician can choose to work top down or bottom up… the human reader of the proof can view it as both. merely assessing if a completed result is top down or bottom up is subjective… Can you tell by looking at a project’s source code if the author wrote it top down or bottom up? It can also have been both until it started working together… Even if project -implemented bottom up 80%- kept a complete log of the history of the project, the project could have had a design phase that was top down 80%.

  6. I don’t think one approach is neccesarily more valid than another, but less knowledge is very rarely a good thing. For example, instead of having to learn all about timing circuits from scratch for a recent project, I just had to brush up on a few of the finer points and off I went. Why use a $20 Arduino when a 555 and some passives will do? I have more time than money right now, so figuring out component values is better for me than just buying a black box. It really depends on the goals, requirements and time frame of any given project. I’ve seen an awful lot of microcontroller projects that could have been accomplished with a few components for less cost, more simply, and in less space, given sufficient time and knowledge; I’ve also seen the opposite. Very generally though, getting a working device seems to require a bit more top down, while refining and optimization tends to be a series of bottom up things. It ultimately comes down to a generalist vs. specialist argument, and possibly form vs. function, but in my mind there really is a need for both, and there’s no reason you can’t effectively learn both ways.

    Why not microcontroller projects that focus on leds, then rlc circuits, then motors, or whatever, with each unit adding a more complex part (but with more capabilities) to an overall design, perhaps even going back and replacing parts with more effective ones after the student has learned the more complex subject matter? The better practical guides already do this to some extent, but I feel like taking it one step further would be an excellent way to accomplish both goals.

    At the intermediate level, I think we all do this sort of thing eventually anyway by learning more about how some lesser used microprocessor library or interrupts or something while trying to fit a big program into memory, or getting really into filter circuits for an audio project, or whatever. That’s one of the best things about this hobby to me is that I’m always learning something new, and I know I would have a more difficult time learning it without a fair unferstanding of basic theory. It certainly doesn’t keep me from going larger in scope, but without that background, I would be lost while drilling down into more arcane subjects.

    A solid grounding in theory preemptively answers some of the “whys” that crop throughout the learning process without having to handwave and say it just works that way and provides a firm foundation to scale up from. At the same time, I don’t need to know what every single bit is doing in my phone right now to generally understand how I am typing this reply, so black boxing provides a good perspective to scale down from. The former is not at all detrimental to the latter, nor vice versa. As with almost anything, a balanced, integrated approach will yield much better results over time, and arguing over which end to start on seems a bit odd when you can do both; one way or the other, if you go far enough you meet in the middle anyway.

  7. Seriously?

    “Effectively, this is Just In Time learning – you don’t need to know everything at the start, you just need to know what to do to get to the next step. How do you do this? Expert systems, or more specifically, the Hackaday.io community, the EEVblog forums, or any of a dozen other electronics communities around the web.”

    1. ..and one wonders where all these people are coming from, that dump their problems into a forum without doing their homework first.

      Also: The line between learning by doing and Dunning-Kruger is very thin.

    2. I get this attitude from certain CAD users. They don’t care how the software works; just want to know which buttons to click to get a result. What they don’t get is when the process is that straightforward I write a macro and I don’t need them to be employed anymore. The difference in performance is between 5 and 100 times the speed for understanding the underlying basis.

  8. Anybody in a university program in engineering should already be able to hook up a switch and an LED and a battery, period. The skills they are learning allow them to go far beyond the blinking light. If you learn to solve every problem by wrote, you won’t get very far because the complexity will scale up faster than you can memorize new solutions. Of course, the “I don’t know how to do X so I will take a course in X” also is a ridiculous route, but I think that it is a bit more of a straw man than people realize.

  9. What is more important, that Obama is someones child or that he is someones parent? What is he: either “the child” or “the parent”? Answer me a single answer!

    We live with the common misconception that things are either theoretical or practical, i.e. the belief that there is some single-valued map/function from things -> {theory, practice}. Theory and practice are not global properties of things, but roles in a relation. Just like parent and child are a role in a kind of relationship.

    Consider A*(B+C)=A*B+A*C this is the theorem (generalization) for the practical result (specialization) 2*(B+C)=2*B+2*C.
    but 2*(B+C)=2*B+2*C is also the theorem for the following practical event of the cashier in the supermarket:
    A customer at the checkout has 2 transparent grocery bags each containing one orange and one apple, but the cashier found it more practical to enter: [orange] [a second one] [apple] [a second one]

    So the intermediate thing 2*(B+C)=2*B+2*C can be an practical application and a theoretical theorem.

    So the notion that “theoretical is the wrong way, and practical is the right way” is incompatible with the knowledge that “the nature of things are not inherently theoretical or practical”. Suppose someone said “being someones child is doing it wrong, being someones parent is doing it right” is Obama then doing it wrong or right?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.