Many of the questions revolve around imparting correct understanding. Often, even with seemingly good instruction, wrong understanding still occurs. There are particular concepts in CS that cause this most often, things like assignment and complex decision structures (not to mention indirection). So one issue is how to convey the right impression, in a reliable way.

However, "I have a doubt", as one of my former students would say. I sometimes wonder if any two people really understand an idea the same way? The old conundrum children tell each other is: how can we know if the way that you see green is how I see it? We cannot. More complexly, how can we know that how you understand a word is how I understand it? We cannot. Like in Philosophy, you don't get truth, you get outcomes. If you use a word in a way that makes no sense whatsoever, I might venture to you that you have misunderstood it. But what went wrong in the learning?

At times I think about how the brain and mind work, and I am tempted to state that every person actually has a unique, unsharable, unconveyable set of beliefs (we can't actually know anything, remember?), so how can we know that two people 'really' see something the same way, let alone impart an understanding to them? Things can be learned, clearly, but to what extent can they be taught? I am tempted to say: "Not at all." We know that lecturing does not work. Textbooks seem unhelpful. We are left with self-discovery, whether shaped in a classroom or not, but individual and unique all the same.

Sometimes it shapes the concepts rightly, and sometimes it doesn't. I am not sure if this process can be improved upon. I am sure you disagree. But are we even talking about the same thing? Aporia.


You seem pessimistic that anybody can teach anything ever. I think the history of the world suggests otherwise. Lots of things help. Lectures, books, etc. all help. None is likely sufficient on its own and no single thing works with everyone. Every student - every person - is different in how they learn. Repetition and practice are very effective, but students also need feedback.

While I can't guarantee that I can transfer a piece of knowledge exactly and precisely (digitally, so to speak) in a lossless way, neither can I guarantee that I understand it perfectly myself.

However, I can teach in such a way that knowledge is transferred more or less faithfully and with enough time and practice I can be pretty sure that the teacher and the learner arrive at the same place asymptotically if nothing else. We can all deepen our knowledge, of course, but that doesn't mean that we are without knowledge.

  • $\begingroup$ It is dispiriting to read in the history of teaching, or any other field, how often there are reversals, arguments and unresolved positions for generations. Some things seem to resolve asymptotically, other things polarize. If even experts can't come to agreement, then it does not bode well for anyone being able to convey information accurately and so as to be understood. CS seems to have more "holy wars" than other intellectual fields. $\endgroup$ – Scott Rowe Jul 9 '18 at 20:43
  • $\begingroup$ @ScottRowe, I don't think it is worse here. Some of what you observe is just that we have had a short history, with a lot of rapid advance. We aren't a lot older than about 60 years. Lit Crit went through turmoil a few years ago. Likely Econ as well. But in many fields it takes a generational turn-over for new ideas to come to the fore. This was the case with Einstein's ideas, actually. The idea of the "ether" was given up only when the old guys died off. Some of the old folks struggled with new ideas but no one really made the jump. Einstein was dismissed by the establishment. $\endgroup$ – Buffy Jul 9 '18 at 20:47
  • $\begingroup$ But, if it is possible to communicate (and educate when needed) effectively, then no one should cling to incorrect ideas ever. Arguments should be resolvable the first time they arise. Polarization should not happen. Why are people not rational, especially in fields defined by rationality? If they find themselves to be irrational, they should bow out. But, if they were that rational, they would not be irrational. Paradox. $\endgroup$ – Scott Rowe Jul 9 '18 at 21:50
  • $\begingroup$ @ScottRowe, now you are discounting the effect of habit and inertia. Once you learn something well, you actually change the brain and develop neural pathways that reinforce that behavior. Logic isn't enough (except for Spock, of course). It isn't a paradox at all. It is just how people evolved to avoid Lions, etc. Find the book The Art of Changing the Brain. I think I referenced it elsewhere at CSEducators. That is why we use practice when teaching, so as to develop those habits of thought. The more reinforcement the easier it is to do it the way you learned, but harder to change. $\endgroup$ – Buffy Jul 9 '18 at 23:53
  • $\begingroup$ Someone once said that the people who advance a field the most end up becoming the greatest impediment to it. I guess we need term limits on making a contribution. I can understand how habits become entrenched, but science is not about habits. When Michelson's own experiment undermined his position, he needed to acknowledge that. Buddhism is basically a technology for overcoming fixity and ego, I think we are long past the time to make it required learning for everyone, except that I know that it often does not take. "He who has ears to hear, let him hear." $\endgroup$ – Scott Rowe Jul 10 '18 at 2:17
  • $\begingroup$ A more complete reference to "changing the brain" is here: cseducators.stackexchange.com/a/1104/1293 $\endgroup$ – Buffy Jul 10 '18 at 11:59
  • $\begingroup$ Nice reminder. But the physical examples are simply learning, not a change of paradigm. Swimming is very different from running, and both are different from skating, or riding a bike, or a horse. I keep thinking that as people learn one field though, like programming, they would more and more easily deal with wider and wider changes to what they encounter. Frankly, OO and structured programming are as similar as the difference between ice skating and roller skating, not like learning to use a hang glider. I expect a larger perspective as people learn, but they get more entrenched instead. $\endgroup$ – Scott Rowe Jul 10 '18 at 13:17
  • $\begingroup$ Actually, I do treat OO programming as a paradigm shift, hence the difficulty most people have in making the change. Many more people think they "get it" than really do. There is a lot of evidence of that from, for example, ACM conferences. $\endgroup$ – Buffy Jul 10 '18 at 13:29
  • $\begingroup$ Perhaps if we made programming simpler and more definite, it would be more like riding a bike? Employment screening tests would be easier. You can't fake riding a bike, right? Why did we make things more complex instead of simpler? A car is easier to deal with than a bike, and a bike than riding a horse. We've gotten technology all wrong. $\endgroup$ – Scott Rowe Jul 10 '18 at 13:34

I am thinking that the situation has to do with the level of cognitive development, like in the slides for that CSEET03 keynote address on teaching Abstraction. Concrete Operations do not generalize in the way that Formal Operations do (which is the difference between them). No amount of concrete thinking will solve a problem that requires a higher level of abstraction or symbolic logic.

The slides say that Piaget says that not all adults reach the Formal Operations level of cognitive development, or at least a 'mature' level of it. Obviously this is true, because if someone's learning environment does not require them to develop abstract reasoning abilities, then guess what? They will not. It is not magic. If my environment does not cause me to learn to ice skate, or drive on snowy roads, I will not. Can I learn it later? Well, maybe, but not as well as if I had learned it earlier. Not as well, not as fluently, not as fun for me to do.

If someone does not reach Formal Operations at a fairly advanced level, their ability to program or do other abstract process tasks will be limited. How can we help students get there? Teach stuff that exercises the abstract and symbolic reasoning facilities, which as far as I know means Math, unfortunately. Maybe other subject areas can help.

Another wrinkle is that people tend to stick with what they learned first. Many times on this site it has been said that people who learn Procedural before OO will have trouble learning OO. But also the reverse! It is not that one or the other is better, easier to learn, more general, etc. It is that... people tend to stick with what they learned first! Learning is difficult and not always fun. It involves a lot of confusion and discomfort. Why bother, if the old way still works? Except sometimes it doesn't. But the problem comes in when people learned something fundamental when their cognitive development was at a lower level, which is almost guaranteed to be the case with programming! Everything you learn in programming helps you learn abstraction and symbolic reasoning, it is like the whole point of the discipline. (In fact, it is.)

So if someone first learned a programming style when they knew very little and could not reason abstractly very well, that approach is going to be the hardest for them to learn to abstract, to generalize, to convert to a symbolic approach. It is like learning a gravity environment, then going in to weightlessness: all the original learning is for naught. No matter what approach someone learns first, or when they learn it, it will be hard for them to change. Unless... Unless, they have enough ability to abstract and do symbolic reasoning... first. So what do we teach programmers before teaching them programming? What knowledge can be the 'throwaway' practice ground for more advanced reasoning abilites? Math. Age 7 -14. Done.

  • $\begingroup$ As you said, @Buffy: "The more reinforcement the easier it is to do it the way you learned, but harder to change." Bingo. $\endgroup$ – Scott Rowe Jul 12 '18 at 16:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .