And at least some math instructors effectively teach that if you aren’t already finding (their presentations of) math fascinating, that you must just not be a Math Person.
Math is a bit like liftening weights. Sitting in front of a heavy mathematical problem is challenging. The job of a good teacher isn’t to remove the challenge. Math is about abstract thinking and a teacher who tries to spare his students from doing abstract thinking isn’t doing it right.
Deliberate practice is mentally taxing.
The difficult thing as a teacher is to motivate the student to face the challenge whether the challenge is lifting weights or doing complicated math.
The job of a good teacher isn’t to remove the challenge.
The job of a good teacher is to find a slightly less challenging problem, and to give you that problem first. Ideally, to find a sequence of problems very smoothly increasing in difficulty.
Just like a computer game doesn’t start with the boss fight, although some determined players would win that, too.
The job of a good teacher is to find a slightly less challenging problem, and to give you that problem first. Ideally, to find a sequence of problems very smoothly increasing in difficulty.
No. Being good at math is about being able to keep your attention on a complicated proof even if it’s very challenging and your head seems like it’s going to burst.
If you want to build muscles you don’t slowly increase the amount of weight and keep it at a level where it’s effortless. You train to exhaustion of given muscles.
Building mental stamina to tackle very complicated abstract problems that aren’t solvable in five minutes is part of a good math education.
Deliberate practice is supposed to feel hard. A computer game is supposed to feel fun. You can play a computer game for 12 hours. A few hours of delibrate practice are on the other usually enough to get someone to the rand of exhaustion.
If you only face problems in your education that are smooth like a computer game, you aren’t well prepared for facing hard problems in reality. A good math education teaches you the mindset that’s required to stick with a tough abstract problem and tackle it head on even if you can’t fully grasp it after looking 30 minutes at it.
You might not use calculus at your job, but if your math education teaches you the ability to stay focused on hard abstract problems than it fulfilled it’s purpose.
You can teach calculus by giving the student concrete real world examples but that defeats the point of the exercise. If we are honest most students won’t need the calculus at their job. It’s not the point of math education. At least in the mindset in which I got taught math at school in Germany.
If you want to build muscles you don’t slowly increase the amount of weight and keep it at a level where it’s effortless.
You don’t put on so much weight than you couldn’t possibly lift it, either (nor so much weight that you could only lift it with atrocious form and risk of injury, the analogue of which would be memorising a proof as though it was a prayer in a dead language and only having a faulty understanding of what the words mean).
Yes, memorizing proof isn’t the point. You want to derive proofs. I think it’s perfectly fine to sit 1 hours in front of a complicated proof and not be able to solve the proof.
A ten year old might not have that mental stamia, but a good math education should teach it, so it’s there by the end of school.
This kind of philosophy sounds like it’s going to make a few people very good at tackling hard problems, while causing everyone else to become demotivated and hate math.
Motivation has a lot to do with knowing why you are engaging in an action. If you think things should be easy and they aren’t you get demotivated. If you expect difficulty and manage to face it then that doesn’t destroy motivation.
I don’t think getting philosophy right is easy. Once things that my school teachers got very wrong was believing in talents instead of believing in a growth mindset.
I did identify myself as smart so I didn’t learn the value of putting in time to practice. I tried to get by with the minimum of effort.
I think Cal Newport wrote a lot of interesting things about how a good philosophy of learning would look like.
There a certain education philosophy that you have standardized tests, than you do gamified education to have children score on those tests. Student have pens with multiple colors and are encouraged to draw mind maps. Afterwards the students go to follow their passions and live the American dream. It fits all the boxes of ideas that come out of California.
I’m not really opposed to someone building some gamified system to teach calculus but at the same time it’s important to understand the trade offs. We don’t want to end up with a system where the attention span that students who come out of it is limited to playing games.
I think that the way good games teach things is basically being engaging by constantly presenting content that’s in the learner’s zone of proximal development, offering any guidance needed for mastering that, and then gradually increasing the level of difficulty so as to constantly keep things in the ZPD. The player is kept constantly challenged and working at the edge of their ability, but because the challenge never becomes too high, the challenge also remains motivating all the time, with the end result being continual improvement.
For example, in a game where your character may eventually have access to 50 different powers, throwing them at the player all at once would be overwhelming when the player’s still learning to master the basic controls. So instead the first level just involves mastering the basic controls and you have just a single power that you need to use in order to beat the level, then when you’ve indicated that you’ve learned that (by beating the level), you get access to more powers, and so on. When they reach the final level, they’re also likely to be confident about their abilities even when it becomes difficult, because they know that they’ve tackled these kinds of problems plenty of times before and have always eventually been successful in the past, even if it required several tries.
The “math education is all about teaching people how to stay focused on hard abstract problems” philosophy sounds to me like the equivalent of throwing people at a level where they had to combine all 50 powers in order to survive, right from the very beginning. If you intend on becoming a research mathematician who has to tackle previously unencountered problems that nobody has any clue of how to solve, it may be a good way of preparing you for it. But forcing a student to confront needlessly difficult problems, when you could instead offer a smoothly increasing difficulty, doesn’t seem like a very good way to learn in general.
When our university began taking the principles of something like cognitive apprenticeship—which basically does exactly the thing that Viliam Bur mentioned, presenting problems in a smoothly increasing difficulty as well as offering extensive coaching and assistance—and applying it to math (more papers), the end result was high student satisfaction even while the workload was significantly increased and the problems were made more challenging.
If you intend on becoming a research mathematician who has to tackle previously unencountered problems that nobody has any clue of how to solve, it may be a good way of preparing you for it.
Not only research mathematicians but basically anyone who’s supposed to research previously unencountered problems. That’s the ability that universities are traditionally supposed to teach.
If that’s not what you want to teach, why teach calculus in the first place? If I need an integral I can ask a computer to calculate the integral for me. Why teach someone who wants to be a software engineer calculus?
There a certain idea of egalitarianism according to which everyone should have an university education. That wasn’t the point why we have universities. We have universities to teach people to tackle previously unencountered problems.
If you want to be a carpenter you don’t go to university but be an apprentice with an existing carpenter. Universities are not structured to be good at teaching trades like carpenting.
Not only research mathematicians but basically anyone who’s supposed to research previously unencountered problems.
Isn’t that rather “problems that can’t be solved using currently existing mathematics”? If it’s just a previously unencountered problem, but can be solved using the tools from an existing branch of math, then what you actually need is experience from working with those tools so that you can recognize it as a problem that can be tackled with those tools. As well as having had plenty of instruction in actually breaking down big problems into smaller pieces.
And even those research mathematicians will primarily need a good and thorough understanding of the more basic mathematics that they’re building on. The ability to tackle complex unencountered problems that you have no idea of how to solve is definitely important, but I would still prioritize giving them a maximally strong understanding of the existing mathematics first.
But I wasn’t thinking that much in the context of university education, more in the context of primary/secondary school. Math offers plenty of general-purpose contexts that may greatly enhance one’s ability to think in precise terms: to the extent that we can make the whole general population learn and enjoy those concepts, it might help raise the sanity waterline.
I agree that calculus probably isn’t very useful for that purpose, though. A thorough understanding of basic statistics and probability would seem much more important.
There an interesting paper about how doing science is basically about coping with feeling stupid.
No matter whether you do research in math or whether you do research in biology, you have to come to terms with tackling problems that aren’t easily solved.
One of the huge problems with Reddit style New Atheists is that they don’t like to feel stupid. They want their science education to be in easily digestible form.
As well as having had plenty of instruction in actually breaking down big problems into smaller pieces.
I agree, that’s an important skill and probably undertaught.
The ability to tackle complex unencountered problems that you have no idea of how to solve is definitely important, but I would still prioritize giving them a maximally strong understanding of the existing mathematics first.
Nobody understands all math. For practical purposes it’s often more important to know which mathematical tools exist and having an ability to learn to use those tools.
I don’t need to be able to solve integrals. It’s enough to know that integrals exists and that Wolfram Alpha will solve them for me.
And even those research mathematicians will primarily need a good and thorough understanding of the more basic mathematics that they’re building on.
I’m not saying that one shouldn’t spend any time on easy exercises. Spending a third of the time on problems that are really hard might be a ratio that’s okay.
A thorough understanding of basic statistics and probability would seem much more important.
Statistics are important, but it’s not clear that math statistics classes help. Students that take them often think that real world problems follow a normal distribution.
If that’s not what you want to teach, why teach calculus in the first place? If I need an integral I can ask a computer to calculate the integral for me. Why teach someone who wants to be a software engineer calculus?
Calculus isn’t as important to software engineering as some other branches of math, but it can still be handy to know. I’ve mostly encountered it in the context of physical simulation: optics stuff for graphics rendering, simplified Navier-Stokes for weather simulation, and orbital mechanics, to name three. Sometimes you can look up the exact equation you need, but copying out of the back of a textbook won’t equip you to handle special cases, or to optimize your code if the general solution is too computationally expensive.
Even that is sort of missing the point, though. The reason a lot of math classes are in a traditional CS curriculum isn’t because the exact skills they teach will come up in industry; it’s because they develop abstract thinking skills in a way that classes on more technical aspects of software engineering don’t. And a well-developed sense of abstraction is very important in software, at least once you get beyond the most basic codemonkey tasks.
The reason a lot of math classes are in a traditional CS curriculum isn’t because the exact skills they teach will come up in industry
To that extend the CS curriculum shouldn’t be evaluated by how well people do calculus but how well they do teach abstract thinking.
I do think that the kind of abstract thinking where you don’t know how to tackle a problem because the problem is new is valuable to software developers.
This is a very strong set of assertions which I find deeply counter intuitive. Of course that doesn’t mean it isn’t true. Do you have any evidence for any of it?
Which one’s do you find counter intuitive? It’s a mix of referencing a few very modern ideas with more traditional ideas of education while staying away from the no-child-left-behind philosophy of education.
I can make any of the points in more depths but the post was already long, and I’m sort of afraid that people don’t read my post on LW if they get too long ;) Which ones do you find particularly interesting?
Of course bad instructors can say this as easily as good ones.
But isn’t it true to say that if you have reasonably wide experience with different presentations of math, and you don’t find any of them fascinating, then you’re probably not a Math Person? Or do Math People not exist as a natural category?
Or do Math People not exist as a natural category?
I’d be ever so interested in the answer to this question. It seems really obvious that some people are good at maths and some people aren’t.
But it’s also really obvious that some people like sprouts. And it turns out as far as I’m aware that it’s possible to like sprouts for both genetic and environmental reasons. I’d love to know the causes of mathematical ability. Especially since it seems to be possible to be both ‘clever’ and ‘bad at maths’. Does anyone know what the latest thinking on it is?
My recent experiences trying to design IQ tests tell me that that’s both innate and very trainable. In fact I’d now trust the sort of test that asks you how to spell or define randomly chosen words much more than the Raven’s type tests. It’s really hard to fake good speling, whereas the pattern tests are probably just telling you whether you once spent half an hour looking closely at the wallpaper. Which is exactly the reverse of the belief that I started with.
Related: some people believe that programming talent is very innate and people can be sharply separated into those who can and cannot learn to write code. Previously on LW here, and I think there was an earlier more substantive post but I can’t find it now. See also this. Gwern collected some further evidence and counterevidence.
It was probably mentioned in the earlier discussions, but I believe the “two humps” pattern can easily be explained by bad teaching. If it hapens in the whole profession, maybe no one has yet discovered a good way to teach it, because most of the people who understand the topic were autodidacts.
As a model, imagine that a programming ability is a number. You come to school with some value between 0 and 10. A teacher can give you +20 bonus. Problem is, the teacher cannot explain the most simple stuff which you need to get to level 5; maybe because it is so obvious to the teacher that they can’t understand how specifically someone else would not already understand it. So the kids with starting values between 0 and 4 can’t follow the lessons and don’t learn anything, while the kids with starting values 5 to 10 get the +20 bonus. At the end, you get the “two humps”; one group with values 0 to 4, another group with values 25 to 30. -- And the worst part is that this belief creates a spiral, because when everyone observed the “two humps” at the adult people, then if some student with starting value 4 does not understand the lesson, we don’t feel a need to fix this; obviously they were just not meant to understand programming.
What are those starting concepts that some people get and some people don’t? Probably things like “the computer is just a mechanical thing which follows some mechanical rules; it has no mind, and it doesn’t really understand anything”, but you need to feel it in the gut level. (Maybe aspies have a natural advantage here, because they don’t expect the computer to have a mind.) It could probably help to play with some simple mechanical machines first, where the kids could observe the moving parts. In other words, maybe we don’t only need specialized educational software, but also hardware. A computer in a form of a black box is already too big piece of magic, prone to be anthropomorphized. You should probably start with a mechanical typewriter and a mechanical calculator.
If it hapens in the whole profession, maybe no one has yet discovered a good way to teach it, because most of the people who understand the topic were autodidacts.
A lot of effort has gone into trying to invent ways of teaching programming to complete newbies. If really no-one has succeeded at all, then maybe it’s time to seriously consider that some people can’t be taught.
A claim that someone cannot be taught by any possible intervention would be a very strong claim indeed, and almost certainly false. But a claim that no-one knows how to teach this even though a lot of people have tried and failed for a long time now, makes predictions pretty similar to the theory that some people simply can’t be taught.
As a model, imagine that a programming ability is a number. You come to school with some value between 0 and 10. A teacher can give you +20 bonus.
This model matches the known facts, but it doesn’t tell us what we really want to know. What determines what value people start out with? Does everyone start out with 0 and some people increase their value in unknown, perhaps spontaneous ways? Or are some people just born with high values and they’ll arrive at 5 or 10 no matter what they do, while others will stay at 0 no matter what?
I don’t know if educators have tried teaching the concepts you suggest explicitly.
A lot of effort has gone into trying to invent ways of teaching programming to complete newbies. If really no-one has succeeded at all, then maybe it’s time to seriously consider that some people can’t be taught.
The researcher didn’t distinguish the conjectured cause (bimodal differences in students’ ability to form models of computation) from other possible causes (just to name one — some students are more confident, and computing classes reward confidence).
Clearly further research is needed. It should probably not assume that programmers are magic special people, no matter how appealing that notion is to many programmers.
Once upon a time, it would have been a radical proposition to suggest that even 25% of the population might one day be able to read and write. Reading and writing were the province of magic special people like scribes and priests. Today, we count on almost every adult being able to read traffic signs, recipes, bills, emails, and so on — even the ones who do not do “serious reading”.
A problem with programming education is that it is frequently unclear what the point of it is. Is it to identify those students who can learn to get jobs as programmers in industry or research? Is it to improve students’ ability to control the technology that is a greater and greater part of their world? Is it to teach the mathematical concepts of elementary computer science?
We know why we teach kids to read. The wonders of literature aside, we know full well that they cannot get on as competent adults if they are literate. Literacy was not a necessity for most people two thousand years ago; it is a necessity for most people today. Will programming ever become that sort of necessity?
Literacy was not a necessity for most people two thousand years ago; it is a necessity for most people today. Will programming ever become that sort of necessity?
That was the thinking at the dawn of personal computing, back in the 80s.
You think the general population the future will hacking code into text editors? That isn’t even ubiquitous in the industry, since you can call yourself a developer if you only know how to us graphical tools. They’ll be doing something, but it will be analogous to electronic music production as opposed .tk p.suing an instrument.
My bet would be on childhood experience. For example the kinds of toys used. I would predict a positive effect of various construction sets. It’s like “Reductionism for Kindergarten”. :D
The silent pre-programming knowledge could be things like: “this toy is interacted with by placing its pieces and observing what they do (or modelling in one’s mind what they would do), instead of e.g. talking to the toy and pretending the toy understands”.
An anecdatum. The only construction set I had as a boy was lego, and my little sister played with it too. As far as I know, there was no feeling that it was my toy only. We’re five years apart so all my stuff got passed down or shared.
My sister’s very clever. We both did degrees in the same place, mine maths and hers archaeology.
She’s never shown the slightest interest in programming or maths, whereas I remember the thunderbolt-strike of seeing my first computer program at ten years old, long before I’d ever actually seen a computer. I nagged my parents obsessively for one until they gave in, and maths and programming have been my hobby and my profession ever since.
I distinctly remember trying to show Liz how to use my computer, and she just wasn’t interested.
My parents are entirely non-mathematical. They’re both educated people, but artsy. Mum must have some natural talent, because she showed me how to do fractions before I went to school, but I think she dropped maths at sixteen. I think it’s fair to say that Dad hates and fears it. Neither of them knew the first thing about computers when I was little. They just weren’t a thing that people had in the 70s, any more than hovercraft were.
Every attempt my school made to teach programming was utterly pointless for me, I either already knew what they were trying to teach or got it in a few seconds.
The only attempts to teach programming that have ever held my attention or shown me anything interesting are SICP, and the algorithms and automata courses on Coursera, all of which I passed with near-perfect scores, and did for fun.
So from personal experience I believe in ‘natural talent’ in programming. And I don’t believe it’s got anything to do with upbringing, except that our house was quiet and educated.
You’d have had to work quite hard to stop me becoming a programmer. And I don’t think anything in my background was in favour of me becoming one. And anything that was should have favoured my sister too.
I’ve got two friends who are talented maths graduates, and somehow both of them had managed to get through their first degrees without ever writing programs. Both of them asked me to teach them.
The first one I’ve made several attempts with. He sort-of gets it, but he doesn’t see why you’d want to. A couple of times he’s said ‘Oh yes, I get it, sort of like experimental mathematics’. But any time he gets a problem about numbers he tries to solve it with pen and paper, even when it looks obvious to me that a computer will be a profitable attack.
The second, I spent about two hours showing him how to get to “hello world” in python and how to fetch a web page. Five days later he shows me a program he’s written to screen-scrape betfair and place trades automatically when it spots arbitrage opportunities. I was literally speechless.
So I reckon that whatever-makes-you-a-mathematician and whatever-makes-you-a-programmer might be different things too. Which is actually a bit weird. They feel the same to me.
A lot of effort has gone into trying to invent ways of teaching programming to complete newbies. If really no-one has succeeded at all,
That seems like rather a strong claim. Everyone who can program now was a complete newbie at some point. Presumably they did not learn by a bolt of divine inspiration out of the blue sky.
The sources linked above claim that some can be taught, and some (probably most of the population) can’t, no matter what you do. And of those who can learn, many become autodidacts in a suitable environment.
Of course they don’t reinvent programming themselves, they do learn it from others, but the same could be said of any skill or knowledge. And yet there are skills which clearly have very strong inborn dispositions. It’s being claimed that programming is such a skill, and an extreme one at that, with a sharply bimodal distribution.
It was probably mentioned in the earlier discussions, but I believe the “two humps” pattern can easily be explained by bad teaching. If it hapens in the whole profession, maybe no one has yet discovered a good way to teach it, because most of the people who understand the topic were autodidacts.
Bad teaching? There’s an even simpler explanation (at least regarding programming): autodidacts with previous experience versus regular students without previous experience. The fact that the teaching is often geared towards the students with previous experience and suffers from a major tone of “Why don’t you know this already?” throughout the first year or two of undergrad doesn’t help a bit.
“I can teach you this only if you already know it” seems like bad teaching to me.
Yes, that is the definition of bad teaching. My assertion is that CS departments have gotten so damn complacent about receiving a steady stream of autodidact programmers as their undergrad entrants that they’ve stopped bothering with actually teaching low-level courses. They assign work, they expect to receive finished work, they grade the finished work, but it all relies on the clandestine assumption that the “good students” could already do the work when they entered the classroom.
And at least some math instructors effectively teach that if you aren’t already finding (their presentations of) math fascinating, that you must just not be a Math Person.
Math is a bit like liftening weights. Sitting in front of a heavy mathematical problem is challenging. The job of a good teacher isn’t to remove the challenge. Math is about abstract thinking and a teacher who tries to spare his students from doing abstract thinking isn’t doing it right.
Deliberate practice is mentally taxing.
The difficult thing as a teacher is to motivate the student to face the challenge whether the challenge is lifting weights or doing complicated math.
The job of a good teacher is to find a slightly less challenging problem, and to give you that problem first. Ideally, to find a sequence of problems very smoothly increasing in difficulty.
Just like a computer game doesn’t start with the boss fight, although some determined players would win that, too.
No. Being good at math is about being able to keep your attention on a complicated proof even if it’s very challenging and your head seems like it’s going to burst.
If you want to build muscles you don’t slowly increase the amount of weight and keep it at a level where it’s effortless. You train to exhaustion of given muscles.
Building mental stamina to tackle very complicated abstract problems that aren’t solvable in five minutes is part of a good math education.
Deliberate practice is supposed to feel hard. A computer game is supposed to feel fun. You can play a computer game for 12 hours. A few hours of delibrate practice are on the other usually enough to get someone to the rand of exhaustion.
If you only face problems in your education that are smooth like a computer game, you aren’t well prepared for facing hard problems in reality. A good math education teaches you the mindset that’s required to stick with a tough abstract problem and tackle it head on even if you can’t fully grasp it after looking 30 minutes at it.
You might not use calculus at your job, but if your math education teaches you the ability to stay focused on hard abstract problems than it fulfilled it’s purpose.
You can teach calculus by giving the student concrete real world examples but that defeats the point of the exercise. If we are honest most students won’t need the calculus at their job. It’s not the point of math education. At least in the mindset in which I got taught math at school in Germany.
You don’t put on so much weight than you couldn’t possibly lift it, either (nor so much weight that you could only lift it with atrocious form and risk of injury, the analogue of which would be memorising a proof as though it was a prayer in a dead language and only having a faulty understanding of what the words mean).
Yes, memorizing proof isn’t the point. You want to derive proofs. I think it’s perfectly fine to sit 1 hours in front of a complicated proof and not be able to solve the proof.
A ten year old might not have that mental stamia, but a good math education should teach it, so it’s there by the end of school.
This kind of philosophy sounds like it’s going to make a few people very good at tackling hard problems, while causing everyone else to become demotivated and hate math.
Motivation has a lot to do with knowing why you are engaging in an action. If you think things should be easy and they aren’t you get demotivated. If you expect difficulty and manage to face it then that doesn’t destroy motivation.
I don’t think getting philosophy right is easy. Once things that my school teachers got very wrong was believing in talents instead of believing in a growth mindset.
I did identify myself as smart so I didn’t learn the value of putting in time to practice. I tried to get by with the minimum of effort.
I think Cal Newport wrote a lot of interesting things about how a good philosophy of learning would look like.
There a certain education philosophy that you have standardized tests, than you do gamified education to have children score on those tests. Student have pens with multiple colors and are encouraged to draw mind maps. Afterwards the students go to follow their passions and live the American dream. It fits all the boxes of ideas that come out of California.
I’m not really opposed to someone building some gamified system to teach calculus but at the same time it’s important to understand the trade offs. We don’t want to end up with a system where the attention span that students who come out of it is limited to playing games.
I think that the way good games teach things is basically being engaging by constantly presenting content that’s in the learner’s zone of proximal development, offering any guidance needed for mastering that, and then gradually increasing the level of difficulty so as to constantly keep things in the ZPD. The player is kept constantly challenged and working at the edge of their ability, but because the challenge never becomes too high, the challenge also remains motivating all the time, with the end result being continual improvement.
For example, in a game where your character may eventually have access to 50 different powers, throwing them at the player all at once would be overwhelming when the player’s still learning to master the basic controls. So instead the first level just involves mastering the basic controls and you have just a single power that you need to use in order to beat the level, then when you’ve indicated that you’ve learned that (by beating the level), you get access to more powers, and so on. When they reach the final level, they’re also likely to be confident about their abilities even when it becomes difficult, because they know that they’ve tackled these kinds of problems plenty of times before and have always eventually been successful in the past, even if it required several tries.
The “math education is all about teaching people how to stay focused on hard abstract problems” philosophy sounds to me like the equivalent of throwing people at a level where they had to combine all 50 powers in order to survive, right from the very beginning. If you intend on becoming a research mathematician who has to tackle previously unencountered problems that nobody has any clue of how to solve, it may be a good way of preparing you for it. But forcing a student to confront needlessly difficult problems, when you could instead offer a smoothly increasing difficulty, doesn’t seem like a very good way to learn in general.
When our university began taking the principles of something like cognitive apprenticeship—which basically does exactly the thing that Viliam Bur mentioned, presenting problems in a smoothly increasing difficulty as well as offering extensive coaching and assistance—and applying it to math (more papers), the end result was high student satisfaction even while the workload was significantly increased and the problems were made more challenging.
Not only research mathematicians but basically anyone who’s supposed to research previously unencountered problems. That’s the ability that universities are traditionally supposed to teach.
If that’s not what you want to teach, why teach calculus in the first place? If I need an integral I can ask a computer to calculate the integral for me. Why teach someone who wants to be a software engineer calculus?
There a certain idea of egalitarianism according to which everyone should have an university education. That wasn’t the point why we have universities. We have universities to teach people to tackle previously unencountered problems.
If you want to be a carpenter you don’t go to university but be an apprentice with an existing carpenter. Universities are not structured to be good at teaching trades like carpenting.
Isn’t that rather “problems that can’t be solved using currently existing mathematics”? If it’s just a previously unencountered problem, but can be solved using the tools from an existing branch of math, then what you actually need is experience from working with those tools so that you can recognize it as a problem that can be tackled with those tools. As well as having had plenty of instruction in actually breaking down big problems into smaller pieces.
And even those research mathematicians will primarily need a good and thorough understanding of the more basic mathematics that they’re building on. The ability to tackle complex unencountered problems that you have no idea of how to solve is definitely important, but I would still prioritize giving them a maximally strong understanding of the existing mathematics first.
But I wasn’t thinking that much in the context of university education, more in the context of primary/secondary school. Math offers plenty of general-purpose contexts that may greatly enhance one’s ability to think in precise terms: to the extent that we can make the whole general population learn and enjoy those concepts, it might help raise the sanity waterline.
I agree that calculus probably isn’t very useful for that purpose, though. A thorough understanding of basic statistics and probability would seem much more important.
There an interesting paper about how doing science is basically about coping with feeling stupid.
No matter whether you do research in math or whether you do research in biology, you have to come to terms with tackling problems that aren’t easily solved.
One of the huge problems with Reddit style New Atheists is that they don’t like to feel stupid. They want their science education to be in easily digestible form.
I agree, that’s an important skill and probably undertaught.
Nobody understands all math. For practical purposes it’s often more important to know which mathematical tools exist and having an ability to learn to use those tools.
I don’t need to be able to solve integrals. It’s enough to know that integrals exists and that Wolfram Alpha will solve them for me.
I’m not saying that one shouldn’t spend any time on easy exercises. Spending a third of the time on problems that are really hard might be a ratio that’s okay.
Statistics are important, but it’s not clear that math statistics classes help. Students that take them often think that real world problems follow a normal distribution.
Calculus isn’t as important to software engineering as some other branches of math, but it can still be handy to know. I’ve mostly encountered it in the context of physical simulation: optics stuff for graphics rendering, simplified Navier-Stokes for weather simulation, and orbital mechanics, to name three. Sometimes you can look up the exact equation you need, but copying out of the back of a textbook won’t equip you to handle special cases, or to optimize your code if the general solution is too computationally expensive.
Even that is sort of missing the point, though. The reason a lot of math classes are in a traditional CS curriculum isn’t because the exact skills they teach will come up in industry; it’s because they develop abstract thinking skills in a way that classes on more technical aspects of software engineering don’t. And a well-developed sense of abstraction is very important in software, at least once you get beyond the most basic codemonkey tasks.
To that extend the CS curriculum shouldn’t be evaluated by how well people do calculus but how well they do teach abstract thinking. I do think that the kind of abstract thinking where you don’t know how to tackle a problem because the problem is new is valuable to software developers.
This is a very strong set of assertions which I find deeply counter intuitive. Of course that doesn’t mean it isn’t true. Do you have any evidence for any of it?
Which one’s do you find counter intuitive? It’s a mix of referencing a few very modern ideas with more traditional ideas of education while staying away from the no-child-left-behind philosophy of education.
I can make any of the points in more depths but the post was already long, and I’m sort of afraid that people don’t read my post on LW if they get too long ;) Which ones do you find particularly interesting?
Of course bad instructors can say this as easily as good ones.
But isn’t it true to say that if you have reasonably wide experience with different presentations of math, and you don’t find any of them fascinating, then you’re probably not a Math Person? Or do Math People not exist as a natural category?
I’d be ever so interested in the answer to this question. It seems really obvious that some people are good at maths and some people aren’t.
But it’s also really obvious that some people like sprouts. And it turns out as far as I’m aware that it’s possible to like sprouts for both genetic and environmental reasons. I’d love to know the causes of mathematical ability. Especially since it seems to be possible to be both ‘clever’ and ‘bad at maths’. Does anyone know what the latest thinking on it is?
My recent experiences trying to design IQ tests tell me that that’s both innate and very trainable. In fact I’d now trust the sort of test that asks you how to spell or define randomly chosen words much more than the Raven’s type tests. It’s really hard to fake good speling, whereas the pattern tests are probably just telling you whether you once spent half an hour looking closely at the wallpaper. Which is exactly the reverse of the belief that I started with.
Related: some people believe that programming talent is very innate and people can be sharply separated into those who can and cannot learn to write code. Previously on LW here, and I think there was an earlier more substantive post but I can’t find it now. See also this. Gwern collected some further evidence and counterevidence.
It was probably mentioned in the earlier discussions, but I believe the “two humps” pattern can easily be explained by bad teaching. If it hapens in the whole profession, maybe no one has yet discovered a good way to teach it, because most of the people who understand the topic were autodidacts.
As a model, imagine that a programming ability is a number. You come to school with some value between 0 and 10. A teacher can give you +20 bonus. Problem is, the teacher cannot explain the most simple stuff which you need to get to level 5; maybe because it is so obvious to the teacher that they can’t understand how specifically someone else would not already understand it. So the kids with starting values between 0 and 4 can’t follow the lessons and don’t learn anything, while the kids with starting values 5 to 10 get the +20 bonus. At the end, you get the “two humps”; one group with values 0 to 4, another group with values 25 to 30. -- And the worst part is that this belief creates a spiral, because when everyone observed the “two humps” at the adult people, then if some student with starting value 4 does not understand the lesson, we don’t feel a need to fix this; obviously they were just not meant to understand programming.
What are those starting concepts that some people get and some people don’t? Probably things like “the computer is just a mechanical thing which follows some mechanical rules; it has no mind, and it doesn’t really understand anything”, but you need to feel it in the gut level. (Maybe aspies have a natural advantage here, because they don’t expect the computer to have a mind.) It could probably help to play with some simple mechanical machines first, where the kids could observe the moving parts. In other words, maybe we don’t only need specialized educational software, but also hardware. A computer in a form of a black box is already too big piece of magic, prone to be anthropomorphized. You should probably start with a mechanical typewriter and a mechanical calculator.
A lot of effort has gone into trying to invent ways of teaching programming to complete newbies. If really no-one has succeeded at all, then maybe it’s time to seriously consider that some people can’t be taught.
A claim that someone cannot be taught by any possible intervention would be a very strong claim indeed, and almost certainly false. But a claim that no-one knows how to teach this even though a lot of people have tried and failed for a long time now, makes predictions pretty similar to the theory that some people simply can’t be taught.
This model matches the known facts, but it doesn’t tell us what we really want to know. What determines what value people start out with? Does everyone start out with 0 and some people increase their value in unknown, perhaps spontaneous ways? Or are some people just born with high values and they’ll arrive at 5 or 10 no matter what they do, while others will stay at 0 no matter what?
I don’t know if educators have tried teaching the concepts you suggest explicitly.
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/
The researcher didn’t distinguish the conjectured cause (bimodal differences in students’ ability to form models of computation) from other possible causes (just to name one — some students are more confident, and computing classes reward confidence).
And the researcher’s advisor later described his enthusiasm for the study as “prescription-drug induced over-hyping” of the results …
Clearly further research is needed. It should probably not assume that programmers are magic special people, no matter how appealing that notion is to many programmers.
Once upon a time, it would have been a radical proposition to suggest that even 25% of the population might one day be able to read and write. Reading and writing were the province of magic special people like scribes and priests. Today, we count on almost every adult being able to read traffic signs, recipes, bills, emails, and so on — even the ones who do not do “serious reading”.
A problem with programming education is that it is frequently unclear what the point of it is. Is it to identify those students who can learn to get jobs as programmers in industry or research? Is it to improve students’ ability to control the technology that is a greater and greater part of their world? Is it to teach the mathematical concepts of elementary computer science?
We know why we teach kids to read. The wonders of literature aside, we know full well that they cannot get on as competent adults if they are literate. Literacy was not a necessity for most people two thousand years ago; it is a necessity for most people today. Will programming ever become that sort of necessity?
That was the thinking at the dawn of personal computing, back in the 80s.
Turns out the answer is “no”.
“Not yet.”
You think the general population the future will hacking code into text editors? That isn’t even ubiquitous in the industry, since you can call yourself a developer if you only know how to us graphical tools. They’ll be doing something, but it will be analogous to electronic music production as opposed .tk p.suing an instrument.
Computing hasn’t even existed for a century yet. Give it time.
There will come a day when ordinary educated folks quicksort their playing cards when they want to put them in order. :)
I insertion sort. :P
Doesn’t almost everyone? I’ve always heard that as the inspiration for insertion sorting.
No way, I pigeonhole sort.
My bet would be on childhood experience. For example the kinds of toys used. I would predict a positive effect of various construction sets. It’s like “Reductionism for Kindergarten”. :D
The silent pre-programming knowledge could be things like: “this toy is interacted with by placing its pieces and observing what they do (or modelling in one’s mind what they would do), instead of e.g. talking to the toy and pretending the toy understands”.
An anecdatum. The only construction set I had as a boy was lego, and my little sister played with it too. As far as I know, there was no feeling that it was my toy only. We’re five years apart so all my stuff got passed down or shared.
My sister’s very clever. We both did degrees in the same place, mine maths and hers archaeology.
She’s never shown the slightest interest in programming or maths, whereas I remember the thunderbolt-strike of seeing my first computer program at ten years old, long before I’d ever actually seen a computer. I nagged my parents obsessively for one until they gave in, and maths and programming have been my hobby and my profession ever since.
I distinctly remember trying to show Liz how to use my computer, and she just wasn’t interested.
My parents are entirely non-mathematical. They’re both educated people, but artsy. Mum must have some natural talent, because she showed me how to do fractions before I went to school, but I think she dropped maths at sixteen. I think it’s fair to say that Dad hates and fears it. Neither of them knew the first thing about computers when I was little. They just weren’t a thing that people had in the 70s, any more than hovercraft were.
Every attempt my school made to teach programming was utterly pointless for me, I either already knew what they were trying to teach or got it in a few seconds.
The only attempts to teach programming that have ever held my attention or shown me anything interesting are SICP, and the algorithms and automata courses on Coursera, all of which I passed with near-perfect scores, and did for fun.
So from personal experience I believe in ‘natural talent’ in programming. And I don’t believe it’s got anything to do with upbringing, except that our house was quiet and educated.
You’d have had to work quite hard to stop me becoming a programmer. And I don’t think anything in my background was in favour of me becoming one. And anything that was should have favoured my sister too.
And another anecdote:
I’ve got two friends who are talented maths graduates, and somehow both of them had managed to get through their first degrees without ever writing programs. Both of them asked me to teach them.
The first one I’ve made several attempts with. He sort-of gets it, but he doesn’t see why you’d want to. A couple of times he’s said ‘Oh yes, I get it, sort of like experimental mathematics’. But any time he gets a problem about numbers he tries to solve it with pen and paper, even when it looks obvious to me that a computer will be a profitable attack.
The second, I spent about two hours showing him how to get to “hello world” in python and how to fetch a web page. Five days later he shows me a program he’s written to screen-scrape betfair and place trades automatically when it spots arbitrage opportunities. I was literally speechless.
So I reckon that whatever-makes-you-a-mathematician and whatever-makes-you-a-programmer might be different things too. Which is actually a bit weird. They feel the same to me.
That seems like rather a strong claim. Everyone who can program now was a complete newbie at some point. Presumably they did not learn by a bolt of divine inspiration out of the blue sky.
The sources linked above claim that some can be taught, and some (probably most of the population) can’t, no matter what you do. And of those who can learn, many become autodidacts in a suitable environment.
Of course they don’t reinvent programming themselves, they do learn it from others, but the same could be said of any skill or knowledge. And yet there are skills which clearly have very strong inborn dispositions. It’s being claimed that programming is such a skill, and an extreme one at that, with a sharply bimodal distribution.
Bad teaching? There’s an even simpler explanation (at least regarding programming): autodidacts with previous experience versus regular students without previous experience. The fact that the teaching is often geared towards the students with previous experience and suffers from a major tone of “Why don’t you know this already?” throughout the first year or two of undergrad doesn’t help a bit.
“I can teach you this only if you already know it” seems like bad teaching to me. Not sure if we are not just debating definitions here.
I don’t think we’re even debating.
Yes, that is the definition of bad teaching. My assertion is that CS departments have gotten so damn complacent about receiving a steady stream of autodidact programmers as their undergrad entrants that they’ve stopped bothering with actually teaching low-level courses. They assign work, they expect to receive finished work, they grade the finished work, but it all relies on the clandestine assumption that the “good students” could already do the work when they entered the classroom.
Exactly.