8 ms·
Impact of programming on primary mathematics learning
- chaosprint 4y agoHighlights: • Compared to traditional activities, programming did not benefit mathematics learning. • A negative though small effect of programming on mathematics learning was found. • High-road transfer from programming to mathematics is not self-evident. • Visual programming languages might distract students from mathematics activities.
- jimhefferon 4y agoGrades four and five.
- ggm 4y agoThe reversed relationship however, is strong: maths benefits programming learning immensely.
- user432678 4y agoCompletely agree. And also disagree with the research results to some extent. My anecdotal experience is quite the opposite. I have started grasping programming while at school specifically to be able to make games. And that helped me immensely to learn math and physics.
- xor99 4y agoDo you have proof of this like a large participant study or it is just intuition or your personal experience? I feel like lots of people who are good at maths are good at programming but they are not actually similar structurally. To me it was always much more similar to some combination of learning a language and learning the linguistic rules of that language in great detail to the point where you have a metalinguistic understanding of it. Then, math would be an adjunct but very separate component that could be manipulated by the programming language.
- thesz 4y agoLanguages are part of mathematics. Please read this fascinating book: https://dickgrune.com/Books/PTAPG_1st_Edition/ https://dickgrune.com/Books/PTAPG_1st_Edition/ Parsing, generating phrases, understanding (analysis), etc, are all studied in applied math.
- deleted 4y ago[deleted]
- xor99 4y agoAh cool, that looks interesting! My interest in the comment was whether learning programming is like learning for natural languages or mathematics. At least one study shows that both intuitions about learning programming turn out to be wrong lol: https://boingboing.net/2020/12/30/study-finds-brain-activity-of-people-coding-isnt-quite-like-when-they-use-language-or-do-math.html https://boingboing.net/2020/12/30/study-finds-brain-activity...
- thesz 4y agoPython is fairly distant from actual math. Haskell, for one example, is much closer, the definitions in Haskell are very math-y: let this = that in what; f x = z where z = g x y. Even list comprehension in Haskell is much more like the actual math notation than what is implemented in Python. I work with fairly large code base(s) with tons of legacy, as of late. In my case, I do the detective work - find alleged culprits, link them, present evidence, prove, etc. I guess in next study one should do MRI for detectives and programmers working on legacy code base. ;)
- epgui 4y ago> but they are not actually similar structurally. The Curry-Howard isomorphism wants a word.
- xor99 4y agoTrue, I guess as the other commenter has pointed out there is a huge difference between scripting languages and their seeming closeness to natural language compared to mathy languages like Haskell that have this isomorphism and are very structurally similar.
- trgn 4y agoAbsolutely, in practice, math degree is such a good indicator whether a hire will grok code.
- chrisseaton 4y ago> The reversed relationship however, is strong Is it? How do you know?
- ggm 4y agoBy osmosis. Are you seriously wrestling with the proposition that computing is a subfield of mathematics? My intuition here is strong. I am deficient in maths and struggle with formalisms in computing. All my competent programming family & friends who program are mathematically literate. Those who program in functional languages especially so. But your point though tersely made stands: it deserves to be demonstrated rather than just asserted. Certainly there are proponents of the theory language faculty matters more than mathematical ability.
- chrisseaton 4y agoI'm absolutely atrocious at maths and I have a PhD and successful-enough research career in CS - they seem disjoint to me.
- ggm 4y agoYes but that's anecdata against statistics, studies and theories of mind. I am also 44 years into an uninterrupted career in CS and networks. I still believe it's a strong indicator of skill and ability to have the maths chops I don't
- chrisseaton 4y ago> Yes but that's anecdata against statistics, studies and theories of mind. I'm using anecdata? You said your argument was just 'intuition' a second ago and then gave some anecdotes about your mates. Can you reference the statistics, studies and the data supporting the theories of mind?
- ggm 4y agoThere's a bizarre adversarial quality in your engagement here. If I implied I didn't know I was speaking anecdata I apologize. However, since the searches in google to find papers which discuss the role of mathematics in computer science education are trivial as are the ones which argue language skills are more important, I really don't see why I have to do this. If you want to disrate my responses because you feel they lack quality, go ahead. I see little signs you actually want to consider this possibility, where I am open to the question "which is more important, language or maths" https://scholar.google.com.au/scholar?q=the+role+of+mathematics+in+learning+computer+science&hl=en&as_sdt=0&as_vis=1&oi=scholart https://scholar.google.com.au/scholar?q=the+role+of+mathemat... https://scholar.google.com.au/scholar?q=the+role+of+language+in+learning+computer+science&hl=en&as_sdt=0&as_vis=1&oi=scholart https://scholar.google.com.au/scholar?q=the+role+of+language... or you could drill down in the royal society review of computer science education https://royalsociety.org/-/media/policy/projects/computing-education/literature-review-pedagogy-in-teaching.pdf https://royalsociety.org/-/media/policy/projects/computing-e...
- joeframbach 4y agoThis studied fourth and fifth graders. However I might add my one irrelevant anecdotal data point from when I was in 10th grade 20 years ago. In an attempt to "cheat" at Chemistry class I wrote a stoichiometry equation balancer with step by step answers on a TI-83. I wrote various solvers for Physics class and Stats class. Working through all the edge cases of these problems helped immensely. Fourth and fifth graders just don't have as many opportunities to apply programming to the real world.
- SapporoChris 4y agoMy anecdote: I did my intro aerospace engineering homework on spreadsheets instead of using my HP15C calculator and paper. The spreadsheets helped organize and track errors easily. To no ones surprise except my freshman self, I couldn't replicate the results on tests where I didn't have access to spreadsheet software. Doing things more 'by hand' results in more reinforced learning in my humble opinion. Did not become an aerospace engineer :(
- 8note 4y agoI wrote lots of scripts into my ti-89 titanium. I made some matrix helper functions, and loops through some of the standard stress/strain/failure criteria and so on, with some fully set up problem solvers etc For tests, I did the hard part, figuring out what matters and what to check, then delegated the math to my calculator. Saved like an hour on a variety of open-textbook tests If I was better with my calculator in jr high, I could have done a ton with it there too
- galdosdi 4y agoBizarre study that does not shed much light on anything. Programming is most similar to algebra; anyone studying both at the same time can't help but see the obvious connection. At least in the USA, algebra is typically taught in 7th, 8th, 9th, or 10th grade, not 4th or 5th. Fourth graders are usually more concerned with more foundational topics as multiplication and division. The same study in 8th or 9th grade would actually be interesting. Or on advanced fourth graders that are studying Algebra I. Or if you followed up years later to see if once the same children are in 8th grade, they have an easier time with Algebra I.
- tsimionescu 4y agoI am curious what exactly you mean by algebra here, that is studied in 7-10th grades but that is similar to programming. The only algebra I studied in that period was linear algebra (polynomial equations and systems of equations), and I don't see any obvious connection to general purpose programming (say, I don't see how that kind of algebra helps with understanding quicksort).
- sudosysgen 4y agoIt helps with general concepts of manipulating variable and solving systems of equations will introduce you to your first symbolic algorithms. That gets you more than 50% of the way to understanding quicksort from zero.
- Dalewyn 4y agoSpeaking anecdotally, algebra taught me squat about variables. I didn't know what variables even were other than that it was some random letter with some random hidden number given by a teacher/textbook I had to solve for. Long after, programming then came along and taught me: * Variables are used to store data, including data of my choosing. Algebra never taught me that. * Variables can hold values besides just numbers. Algebra, and daresay math classes in general, never taught me that. * Variables can have math operations applied to it, and variables can be not-numbers. Therefore, things that are not numbers can have math applied to them. Literally nothing in math academia taught me that. I honestly think this recent push to teach kids how to program is a symptom of and response to long-standing failures in math academia. Kids hating math has become an age old stereotype, and I think there's some basis in reality for that. Namely, math academia /fucking sucks/ at giving context to the math that we ask kids to do. Programming gives some of that vital context, which in turn vastly improves the chances that someone will see the value in math and be inclined to learn more about it.
- dr_dshiv 4y agoWhat about teaching excel? I swear that would turn some lights on.
- deleted 4y ago[deleted]
- withoutsnow 4y agoWell, it only proves Scratch is not good for kids learning math, and the paper has some weak points as pointed out in other posts. Actually, my first reaction when I heard of Scratch was -- why are these poor kids forced to learn something they will never use in the future of their lives? The paper got one thing right -- it doesn't make any sense to design visual language deliberately for kids education. It's like saying -- kid, you are so naive so you have to do visual programming, even though it is slow and inefficient. If you are the kid, will you feel good? If I have to choose a programming language for kids, I will choose LOGO. Code for visual! Not visual for code!
- deleted 4y ago[deleted]
- jay_kyburz 4y agoMy 9 year old started programming lua in Roblox. He doesn't really know whats going on, he is just following the tutorials, transcribing what he sees on screen. When he makes a mistake he has a hard time reading through the code to see what went wrong. A few weeks ago he rediscovered Scratch. It's a completely different experience. He started out following tutorials like he was with Roblox, but quickly made the metal leap to altering and enhancing the tutorials. Adding sound effects, changing values. Restructuring and reconstructing for loops to do what he wants. Now he is breaking problems down and solving them one at a time. Setting a goal and working out how to achieve it. I think that's a far more valuable skill at this stage.
- fspeech 4y agoProgramming and math both depend on mastering a language, while much simpler than natural languages, that is both rigid and abstract, at least for beginners. While repetition leading to pattern recognition and comprehension works for everyone acquiring a mother tongue, I am troubled by the de-emphasis of the need of rote learning (that is, work) at the elementary school level. In my own case we did extra exercises (adaptitve q&a a couple of times a day) to make sure our younger one actually master multiplication and division. I remember being worried how kids without additional attention at home would fare.
- g42gregory 4y agoI am not sure why programming should even be considered as beneficial for Math learning. Isn't the question the other way around? - Should Math be beneficial for programming? Math is a tool (for everyone except for 0.000001%, who could use it as an occupation) to use somewhere else. While programming technically is also a tool, it's a tool which is also an occupation for millions of people. So we better make sure that teaching of Math benefits programming, not the other way around.
- josephg 4y agoIt’s surprising because (anecdotally), math students in college consistently have a much easier time learning computer science than other students. I’m not sure if there have been studies on this, but it was remarkably consistent when I taught first year CS.
- tonightstoast 4y agoYeah that’s a bit of a chicken vs egg problem though, isn’t it? It’s like how physics students routinely have the highest LSAT. If they were already towards the top of their class upon entry, it’s not surprising to see them doing well in comparison to their peers. Edit: added last sentence.
- Hermitian909 4y agoAs a math major who studied CS: Math I encountered in CS classes was always something I'd encountered earlier and had well in hand so I could focus on the CS specifics. My classmates only studying CS, conversely, often struggled with the math side of things. I'd imagine that + some sampling bias (math majors almost universally love complex abstractions and algorithms unlike almost any other major) feels like it would explain it?
- wombatcringe 4y ago
- epgui 4y agoMathematical proofs and computer programs are isomorphic, so it's not unreasonable to start from the premise that with the right guidance, many skills would transfer.
- melony 4y agoI am not surprised there was little to no improvement in algebra and arithmetic capabilities. They should measure for discrete math performance instead, as that is what CS is. Programming (for general purpose applications) has very little to do with non-discrete math unless you are doing ML/scientific programming/game development.
- whaaswijk 4y agoI have some anecdotal evidence against this. Learning how to write automated proofs using Isabel and HOL definitely improved my ability to write proofs with pen and paper. Also, I wonder what is meant by “traditional activities”. Unfortunately the article seems to be behind a paywall so I can’t check…
- Jtsummers 4y agoWell, others in this discussion are already questioning it, but this particular research was on 4th and 5th grade students using Scratch and on some basic math (arithmetic) concepts. I'm not sure Isabel would be appropriate for them. The submission title is pretty clickbaity, the actual title is more reasonable: Impact of programming on primary mathematics learning. Which also conveys the level of math (primary math) being evaluated against.
- tsimionescu 4y agoI don't think writing proofs in Isabel is really comparable to regular programming. Note also that writing formal machine-verifiable proofs is a skill that few career mathematicians have. Writing regular proofs is a comparably much simpler skill, one that is universal among career mathematicians. So, the fact that your practice of a very complex version of a skill also improved your ability to practice the simpler version of the skill isn't really surprising. Coincidentally, my understanding is that many mathematicians find such deeply formal proofs hard to follow, compared to more informal ones. It would actually be interesting to know if your proofs have become more or less satisfying to a practicing mathematician after your experience with Isabel and HOL.
- chaosprint 4y agoSince I am developing Glicol (https://glicol.org https://glicol.org), I am particularly interested in this question, also because many often say Glicol should be used in education. My take is: Good education should be personalised. The main challenge for programming education is to let the student build the motive for coding, asking questions: why should I program? what can I do with codes? To do music live coding can be one motive. But in the end, I want to let them know, they can have any kind of motive. Motive/curiosity first. Math, or programming is just the method they will employ, not the goal. Perhaps with the motive, they can pick up math/programming more efficiently using "traditional activities".
- aprao 4y agoFirst time seeing Glicol - really cool!
- Sin2x 4y ago"In Theory There Is No Difference Between Theory and Practice, While In Practice There Is" For me personally it seems rather obvious that learning theory is a prerequisite for being good at practice, not the other way round.
- Kim_Bruning 4y agoIt's not on sci-hub yet?
- mkl95 4y agoWhat does math learning mean? A basic understanding of boolean algebra can get you far in programming. Some fields such as graphics programming and machine learning do apply advanced mathematics, but you are likely to use a high level abstraction that wraps the hard parts.
- 0x20cowboy 4y agoSeems to me programming is more a discipline of logic, reason, communication and organisation than mathematics.
- cmrdporcupine 4y agoAnd yet admissions to most university level CS programs require high math grades, and the profession as a whole skews towards individuals with high enthusiasm for math. (FWIW I was unable to pursue a CS degree for this reason. I came out of high school without the right math pre-requisites for the Canadian university system. I got a career in software development nonetheless... and 20 years on I have never really needed to use any of the math they demanded I take... Even after 10 years @ Google I still get the odd door closed on me because of my lack of a CS degree... I might be a little bitter as a result)
- pessimizer 4y agoCS is actually math, not really programming at all. You can get through a CS degree without being a competent programmer.
- acchow 4y agoYou can get through a CS degree at some universities with barely any programming at all (maybe 3 courses involving programming)
- thfuran 4y agoThat sounds exactly like mathematics to me.
- 0x20cowboy 4y agoWhile I get where you are coming from, I myself am a decent programmer, and a terrible mathematician. So from my N of 1, they can’t be the same skillset.
- Traubenfuchs 4y agoSoftware engineering and programming have very little to do with math. It‘s rare for a programmer to even need percentage calculation. Computer Science has many parts that are heavily connected to, dependant or even built on math. And lastly, computer science has not that much to do with programming. The majority of programmers, software engineering workers and computer scientists don‘t seem to be able to grasp the difference.
- wombatcringe 4y ago
- Wowfunhappy 4y agoIs there a way to get past this paywall?
- synu 4y agoI learned programming before I learned algebra, and it made algebra seem like an old fashioned and slow waste of time. I could solve the same problems more quickly and naturally by writing a short program. That put me off math for a long time. In retrospect I wish I had stuck with it to get to the more interesting parts. In the end though, having not done that, I’m not really sure that math and programming are interchangeable skills as some here are asserting.
- Dalewyn 4y agoMathematics and programming are not interchangable, but programming is one form of expressing mathematics and giving context to seemingly meaningless numbers. Personally, I /fucking hated/ math as a kid. The numbers were meaningless to me because nothing, neither the teachers nor the textbooks nor anyone/anything else, ever taught me what the numbers meant. "Solve for X and tell me what Y is" they said, "How many apples do you have if you hold one in each hand." they said. Pointless. It was only after I got into programming, incidentally of my own self-taught volition, that all those numbers suddenly had meaning and I truly understood the value of math. "54 / 36 = ?" is meaningless to me, but "screen_width / 2" and "screen_height / 2" to figure out the center point of a monitor do have meaning, and my mind was blown with a sudden astronomical understanding of the world. Perhaps the most mind shattering moment was when programming made me realize I could apply math to things that aren't numbers: "apple" + "orange" = "appleorange" Mind. Fucking. Shattered. So programming is amazing at teaching math, at giving math crucial context to keep a kid's mind interested, but teaching programming itself will not teach math.
- abdullahkhalids 4y agoMy anecdotal experience as a teacher of the impact of programming on undergraduate mathematics is also negative. If students are allowed to solve integrals or differential equations using equation solvers, they go all in on using them to mindlessly get to the correct answer without trying to intuit the patterns that result in the solution. Eg. I observed that students who took a computer-aided Linear algebra course had almost no true understanding of where numbers go in matrix multiplication. Like the fact that for matrix A, and vector x = (0,..0,1,0,..0), where 1 is in the i-th position, the operation Ax picks out the i-th column of A. They had to compute this every time.
- noobermin 4y agoI have a converse case. I once TA'ed for "computational physics," a course that often can be (sometimes) "remdedial programming" for physicists. I distinctly remembered one very bright scientist who just could not understand how to program because they had not developed the intuition in their mind that a computer works as a state machine. Statements like x = y + 1 x+= 2 would leave them thinking y would get modified or worse. They knew the words "assignment vs. equality" but they didn't really understand what was going on despite that mantra being hammered on in lectures, because of that which (unfortunately) was not said, which is mental model: there are boxes in memory, assignments put things into memory, and that in a program, there is a progression of steps, where each step modified state...that is, the mental model of a state machine. Their mind still worked in the sense of mathematical statements you see in a physics or math class or calculation, that each statement is a statement of truth simultaneously, and there is no "sense of time" or series of steps that have an order, much less the concept of a state machine. That's why, even if they knew somehow that x could change value, they didn't get that the second line was an instruction that only had to do with the box labelled x and would not have any effect on y, because that was another instruction, and these weren't statements of truth. I feel like may be part of it may be the confusion from the conflation of conventions here, but given my work with him at the time, I do not think an assignment operator (like := ) would help because a program being a series of steps and the concept of state being modified over time is something you have to internalize, or worse unlearn if you're a bright physicist who's never programmed. For me, I have (and I had to) made that distinction in my mind because at some point in my learning long ago just to make sense of the difference in my mind. To be honest, I don't think that difference was ever really taught to me explicitly.
- wudangmonk 4y agoIts obvious why they got such results, look at the language they used. They should have used Rust.
- wombatcringe 4y ago
- plasticchris 4y agoI’ve been teaching my kid algebra and there was a big epiphany when she realized (in her words) that it’s just like programming except = isn’t assignment. She is a bit older than this study’s cohort so maybe the effect requires a bit more time?
- Panzer04 4y agoTime to teach her about references and pointers :D
- plasticchris 4y agoShe actually got pointers pretty easily, but references were confusing since the syntax is the same when you… reference them.
- wombatcringe 4y ago
- wombatcringe 4y ago
- _the_inflator 4y agoWhat is a programmer? What is a mathematician? For everyday web development, you hardly need any serious math in my experience. However, 3d game engine development won't get you far without proper knowledge of math. Same goes for algorithms. Graph theory applied brings you a lot of super powers in certain CS domains, which you cannot reach without Math knowledge. I think that at the intersection of Math and programming lies a lot of magic. Mazes, generated art are examples. SQL has so much more to offer, if you understand Set theory. Fraud analytics is another topic that is quite easy to handle with Graph databases. Even Arrays are nothing more than a defined Set. Functional Programming is in my experience way easier to grasp, if you understand functions like in Calculus/Analysis and not how some web programmer explains it. It is not black or white and of course great mathematic guys are not necessarily great programmers. On the other hand, I have seen a lot of code in some areas, that would seriously benefit from better Math knowledge. ;) Math is hard. It is a niche, however can be very fascinating, especially in the fields of generative art.