13 ms·
Poll: What level of math is programming roughly analogous to?
My son is writing moble apps using Objective-C and is around 11. My question is if arithmetic is 1 and advanced calculus is 10 at about what cognitive level is bog standard, journeymen, CRUD programming in Objective-C?
(Please remember that voting does not up vote the poll.)
- drwl 13y agoafter starting a discrete mathematics class, this is the closest to programming you will get. I think it also helps that symbolic logic serves a basis for computation.
- robinh 13y agoSince I'm not from the US and we don't have 'levels' of math where I live (you take math in high school and get some or all of the above combined), can someone explain to me what each level entails? While I know the definitions of each term, I'm unclear on what exactly 'Pre Calculus' would be in this case. Also, is Trigonometry higher than Algebra or Algebra 2, if that question even makes much sense? Finally, what are the differences between Algebra and Algebra 2, and Geometry and Geometry 2?
- asbogenerator 13y agoThe OP's question assumes that some topics are inherently more difficult to learn than others which isn't necessarily so. But in terms of the way knowledge is structured programming could be regarded as a practical application of computer science, which in turn may be regarded as the science of what can and can't be mathematically proved. When you check a mathematical proof a computation is being performed involving your brain and a piece of paper. And nowadays some proofs incorporate computer programs too.
- stuaxo 13y agoBeen programming 15 years professionally and I'm fairly poor at maths. My arithetic is not great, I know a little trigonometry. Having said that I've made build 3D engine all the way up from rendering 2D triangles (had to watch quite a few videos to get the maths right). This is definitely an apples to oranges comparison.
- hashtree 13y agoWhat type of programming, what paradigm, at what scale, and dozens of other questions... I can think of numerous areas where each of these is not only "analogous", but directly used. - Want to even think of committing to scalaz/haskell? Category theory and lambda calculus. - Want to develop a physics engine for a modern 3d shooter? Geometry, trig, single/mutli-variable calc, algebra, and differential equations. - Want to do some NLP? Discrete math, automata theory, not to mention a strong background in linguistics. - Want to do some ML? Bayes statistics. - And so on.. I've always been amazed by how little is needed to squeak by in some scenarios and also how much is needed to do truly amazing things. The more you learn and push, the more you realize you don't know. Edit: This was prior to OP clarification. :)
- deleted 13y ago[deleted]
- eru 13y agoYou can pick up all the Category theory (and Lambda Calculus) you need for Haskell from Haskell alone. (Of course, it doesn't hurt to know more. But it's not necessary for a newbie.)
- zachrose 13y agoI'm not sure I understand the question. Programming can be a mix of many things: reasoning about associations and state, designing processes or interfaces, or—most saliently—modeling a domain that may or may not mathematical in nature. To compare a programming language/runtime with a US math curriculum makes about as much sense to me as asking for the Richter magnitude of a sledgehammer.
- cheapsteak 13y agoThe poll didn't make sense to me either until I read what he was actually asking for: >what cognitive level is bog standard, journeymen, CRUD programming in Objective-C? He should probably have clarified it in the title
- thaumasiotes 13y agoProgramming can require many things, but the OP specifically asks about this: > bog standard, journeymen, CRUD programming What do you think are the cognitive demands of that task, however defined?
- rickhanlonii 13y agoThen the answer is "it depends". You can program at a level with a cognitive demand on par with Algebra (however defined), and you can program at the level of Complex Analysis. There's no one-to-one map between the two. Just like math, you can go as deep into a programming language or concept as your mind will carry you so there's no equivalence relation.
- zachrose 13y agoYes, but I'm also skeptical of the idea that some math subjects are cognitively more intense than others. The "cognitive load" or whatever is really just a function of how much you've practiced and internalized that area of math. Calculus builds on algebra, sure, but once you've internalized algebra you don't have to "think real hard about algebra" _while_ you "think real hard about calculus." Running a 10k for the first time is not the same as running your first 5k twice.
- morganherlocker 13y agoI have always found geometry to be the most similar in terms of content. Geometry is where most people are introduced to proofs, which are similar in a lot of ways to programming. Also, you often need to know some amount of geometry in even CRUD apps to properly deal with interfaces, charts, etc. That said, I spend 90% of my time writing geometric analysis libraries, so I am biased.
- EpicEng 13y agoI like this analogy. When I hear someone compare programming to math I assume that they mean what I would mean if I were to say it. Specifically, their similarities lie in the realm of logic. Some programming problems require specific areas of mathematics, some others, some none at all. All programming, as well as all real mathematics, require the ability to reason logically about a problem. Based upon this understanding, I can't chose any of the poll options, but if I had to, I'd go with geometric proofs as well.
- tcdent 13y agoFor Objective-C (or any objective language): geometry. Qualities of objects, and their role in relation to other objects are really all there is. Also, memory, which is all we are manipulating at the end of the day, is linear; points on a line.
- tlarkworthy 13y agothe time series for RANDOM ACCESS MEMORY is far from anything resembling linearity. Nor is a snapshot of it at any point in time usually. RAM is equivalent of "tape" in a Turing machine. If its anything resembling linear for any amount of time, the machine would not be Turing complete ... and therefore a not very interesting programming language/model.
- tcdent 13y agoAh, apparently I do not fully understand the hardware implementation. Consistent, in software at least, is the concept of memory being linear; references using a start and end point, and points between.
- hayksaakian 13y agoYou can get by with an "algebra" level understanding of programming. However, concepts such as recursion, and other metaprogramming don't really make sense at that level. You can make rote crud apps with an algebra level understanding of programming.
- stuaxo 13y agoI understand recursion and metaprogramming, I'm pretty poor on algebra. When it comes to deep level programming concepts, debugging complex apps - working on hard performance issues, I have no problem.
- hayksaakian 13y agoI think OP was using math as a scalar metaphor for programming. In that vein, I'm not saying you need to literally know algebra, just that it's a parallel kind of progress. The point being that if you know algebra well, you can do useful things with math. In a similar vein, if you know functions well, you can do useful things with programming.
- ohyes 13y agoGeometry proofs
- scoofy 13y agoMathematical Logic
- zackbrown 13y ago[x] Discrete Mathematics
- xrctl 13y agoNo. This is wrong. The correct answer is abstract (modern) algebra.
- rickhanlonii 13y agoDo you have a reason to believe this?
- dbz 13y agoI have a slight problem with the question. Math is used when programming or creating models, but both are tools. I find it hard to compare the two in the way you're asking, so I think this poll is bogus. Programming requires abstract thinking as does math at the algebra level and beyond (more so at the calculus level and beyond). Other than asking what level of math is required to program X, it's hard to ask what cognitive level quantified by mathematical ability is required because cognitive levels both aren't easily quantifiable and also don't directly correlate with mathematical ability. There are lots of ways to do the same thing. As for me, I have taken math to the level of Differential Equations and Linear Algebra.
- justinzollars 13y agoDespite what others are saying. This is a very good question. And extremely relevant. The answer depends on how great you want to become. Take as much math as possible to find the best solutions. I come from a background of the hard sciences, I never took programming in college and I was able to pick it up quite easily because of my strong foundation in mathematics, analytics and logic.
- inmodify 13y agoI agree 100% it is relevant. I would put it into these terms, however, for simplification. Coding simple programs is probably analogous to algebra/functional logic. Having a 3-D model of workflow process with escalation loaded into your mind when you're working on an architecture is more akin to calculus. Add User Experience and network requirements into the mix and the skill is more akin to writing an Overture and the Opera. At this point you have a different animal than described above.
- thaumasiotes 13y agoI have seen it said that mathematicians break down into analyst types (calculus) and algebraist types (algebra). The difference in approach is usually described along the lines of "in analysis, you have an object under study and you want to describe how it behaves in some sort of limit condition. You have a mental model of the problem and you work to formalize what your intuition tells you" vs "in algebra, you have an object under study and a set of rules. You apply the rules in a mechanical manner until you produce an interesting-looking (or desired beforehand) result". Under such a worldview, my personal view of the mental requirements of a simple CRUD type of task is that the ability to apply definite rules called for in the "algebraist" approach is closest (and extremely necessary). I've read many comments that beginning programmers can have a hard time understanding that the computer will do exactly what you tell it to do, and nothing else; applying algebraic rules is a very similar concept. Geometry is an unpopular choice in your poll, but I think it has some of the same flavor of recognizing that "by labeling this complicated term 'x' and this other complicated term 'y', we can transform the current state of the problem into exactly the preconditions for theorem T" that I'm thinking of. Anyway, overall I vote for algebra 1.
- tokipin 13y agoroughly around algebra. programming has an "advantage" over math in that you can just program something and see what happens and therefore gain an intuition and craft your way around things. mathematics is much more deprived in this respect, for a variety of reasons. overall i would describe programming as a precise form of writing, whereas math is a very pure science
- keyle 13y agoThe description is clear, but the title of the poll wasn't. Note that if you're doing game development, a higher level of math will be required, than if you're writing a crud application that talks to an api; in the latter, understanding linguistics and a good common sense are more important.
- superuser2 13y agoYou will (probably) never pull out pencil and paper and do arithmetic (simple, with fractions, averaging, etc.), simplify an algebraic expression, convert to standard form, factor a quadratic, solve a system of linear equations, calculate the area of a polygon, prove something about triangles, solve an inequality, divide polynomials, take the slope of a line, etc. This is what "math" consists of in K12 and very little of it is obviously linked to programming itself. You don't need any of high school math unless your specific application requires it (i.e. graphics involves polygons, anything quantitative involves arithmetic and unit conversion, you may want to report percentages and averages at some point.) Things I remember from K12 math classes that were useful for programming in general: - What variables are - What functions are - You can compose functions (this was obvious because I had been programming for 5+ years before function composition was introduced) - Very basic set theory (Python list comprehensions resemble set-builder notation) - Introductory propositional logic (though I learned this in the context of programming 7 years before I was "ready" for it in math class) Learning to prove things about triangles (geometry) exercises some of the same skills as programming, but I wouldn't say it teaches them. Certainly none of the theorems or facts have ever been useful, just the process of reasoning.
- meowface 13y agoPython also supports set operations (union, intersect, difference, issubset, issuperset, etc.). So set theory will help in that regard, too.
- superuser2 13y agoTrue, but the operations you just listed are intuitive. It certainly doesn't take a math class or pencil-and-paper practice to know how to use them.
- tokenadult 13y agoDisclosure: I am a mathematics teacher. (I teach prealgebra to elementary-age pupils.) I am NOT a programmer. But I think the correct answer to the question is "it depends." In other words, even though you have specified a level of programming, "bog standard, journeymen, CRUD programming in Objective-C," and even though you have laid out the usual progression through the usual school mathematics topics in the English-speaking world, you haven't given enough information to match the levels. Some people program insightfully, or so I am told by people who program, and other people program nothing but kludges. Among mathematics learners, there are great variations in the levels of "profound understanding of fundamental mathematics" (PUFM) among people who are studying the "same" level of mathematics. It interested me that you mentioned neither number theory nor combinatorics among your list of secondary mathematics courses, because in some other countries, those courses would come well before calculus. In general, any reader of Hacker News could learn a lot about what is missing in the United States (or, more generally, in the English-speaking world) in elementary mathematics instruction by reading Knowing and Teaching Elementary Mathematics: Teachers' Understanding of Fundamental Mathematics in China and the United States by Liping Ma.[1] There is a lot to basic mathematics that is far from easy, if deep understanding is what you are looking for. In the countries that excel over the United States in mathematics instruction, proof is part of every mathematics course, not just part of geometry, for example. [1] http://www.amazon.com/Knowing-Teaching-Elementary-Mathematics-Understanding/dp/0415873843 http://www.amazon.com/Knowing-Teaching-Elementary-Mathematic...
- thaumasiotes 13y ago> In the countries that excel over the United States in mathematics instruction, proof is part of every mathematics course, not just part of geometry, for example. There's room to wonder about how much of a causative role this has, and how much it reflects consumer demand. When my sister started taking algebra, my parents asked me to help her, and I was careful to provide proofs of all the algebraic properties of exponents (e.g. x^m * x^n = x^{m+n}; x^0 = 1; like that). That's not usual in the US, and didn't feature in her textbooks or supplements, but I did it basically just because it was important to me.
- cocoflunchy 13y ago
- Geee 13y agoI wrote a driving game in C about that age and the hardest thing to figure out was vectors and sin/cos-stuff (you have to separate speed and direction even in a simple driving game) so I guess the programming part is easier than that. Although it's just hard because I didn't know about those concepts at that time. And of course, the code was very simple.
- nilkn 13y agoI voted for discrete mathematics for two reasons: (1) It has relatively few pre-requisites in comparison to advanced calculus (which I'm assuming means something like a first course in real analysis). (2) It isn't rote. There's more creative thought involved in solving problems. Even high school calculus is often extremely rote. I think programming is rarely rote, even if it's just a CRUD app. You have to strategize about how to approach the overall architecture of the program and make predictions about how early design decisions will affect future extensibility and more.
- elwell 13y agoIt's listed as the most advanced course though. I pretty much would agree with you, but this poll is too illogical.
- thaumasiotes 13y ago> It [discrete math] has relatively few pre-requisites in comparison to advanced calculus (which I'm assuming means something like a first course in real analysis). My first course in real analysis didn't have much in the way of prerequisites at all. I loved it because everything was covered ground up (including concepts like "limit").
- nilkn 13y agoWhile that might technically be true on some level, ask yourself if the average student would do well if they started with Rudin's Principles of Mathematical Analysis in 11th or 12th grade having taken absolutely no calculus prior to it. There's a reason most universities require students to have completed the entire calculus sequence and often even a special "introduction to proofs" class before exposing them to a book like Rudin's.
- nickelite 13y agoI think programming actually requires linguistic skills. When you program you are actually writing in a language, and you have to respect it's syntax and structure. Therefore I don't think it should be compared with math. Unless you are writing a program for a very specific scientific problem that requires the elaboration of a mathematical model. Usually the computer does all the math, all you need to do is type the operations you need it to calculate. I'm not saying they're completely unrelated, I just think linguistic skills are more relevant in most cases
- GarvielLoken 13y agoThis goes to the heart of the real issue. Programming is expression, more linguistic then maths. What would a lisp program with heavy macro usage map to? Or a newLisp program with fexprs? The programming concepts are abstractions and transformations more akin to how we change words meaning then how you calculate some lines.
- eximius 13y agoIt's not. There are certain levels of math or logic needed for various programming tasks, but it is not 'analogous' to any level. For example, function composition is very useful in programming and thus Algebra (or was it Algebra 2???) comes in handy for understanding that at a basic level. However, if you're doing graphics programming, then you often need experience with geometry (composition of basic shapes to form more complicated shapes, linear algebra (matrix operations), and modern algebra (quaternions).
- Moto7451 13y agoI use a bit of trig to do graphics programming but that's about as much Math as I've used when programming.
- Shank 13y agoAlgebra: Functions, variables, and manipulation of basic data structures. I learned programming before I learned how to manipulate variables in math, and my prior knowledge helped me figure out how to deal with most of algebra.
- runewell 13y agoJust yesterday I decided to begin reading a Calculus book (I never went to college). The very first thing covered was ƒ(x) which describes input being passed into a function. Needless to say, as a programmer I am very familiar with this concept. So far, my vote is for Calculus.
- gpcz 13y agoIn my high school, I remember being introduced to functions of that type in Algebra II and at the very latest trigonometry (sines and cosines). While a knowledge of functions is vital to understanding Calculus (the fundamental theorem of calculus depends on them), it's only a small component of the bigger picture. Calculus is mainly about how functions change with respect to some other variable (time is common) and the inverse of that operation.
- xerophtye 13y agoAs a game designer, i'd say Physics, algebra, geometry come in VERY handy. Now, i am not familiar with how these topics are taught in the US system, but assuming your options are a progression, i'd say pre-calculus should do it. Similar to your son, I have been programming since an yearly age. We had Macromedia Flash back then, and over the course of my academic life, as i progressed in the Mathematics courses, my programming capabilities increased with leaps and bounds. For example, the movement in my games was usually similar to Pacman or bomberman. No arcs, or curved paths existed. As i learned about 2D motion, i started making Platformers. As i learned trigonometry, I started making games involving curved paths on a 2d plane. Even a realistic Car game. i remember coming home from high school the day they taught us about "Radians" and began usign the sin, cos, tan funtions of ActionScript (because the documentation said it used Radians and that never made sense to me before). It was that very year i programmed game AI that would chase the player in a realistic way. So yeah, math helps
- kamaal 13y agoI wouldn't look it that way. Programming is an art which aims to solve any problem in any domain using logical reasoning and systematic application of solutions that requires to solve the problem. Or even build a whole new thing. Given that, programming is everything and anything. Which is why a good programmer would always focus on the problem not the knowledge required to solve the problem. Because if you embark on tough project, find solutions is essentially like making a discovery. In my opinion you shouldn't ever first learn books(apart from the very basic ones) and then go in search of problems. The right approach is to look for problems, and while solving them and you can learn the knowledge required to solve those problems as you go along. Programming is analogous to nearly everything in math. Programming is only a tool, which you can use to solve various problems around yourself modeled in some mathematical form(In short everything). Which is why programming is the most awesome profession ever. Because by nature it lets you probe and grok the nature, working and science behind everything. That is why programmers are so good at problem identification, solution design and problem solving in general.
- Glyptodon 13y agoIn a lot of way programming is at the level of the programmer. If your son likely to know that some problem he's solving is best accomplished implementation of Dijkstra's algorithm or that for some aspect of his program it might be sensible to use a bloom filter? No. But will this stop him from creating what he's trying to create? No. Programming is a progression from being able to give logical directions and knowing some simple arithmetic and commands all the way to knowing all kind of obscure things from discrete mathematics and linear algebra, perhaps with some application of things from calculus, statistics, and trigonometry occasionally thrown in. However, what will separate proper journeyman code from mush is design and organization, something which is not entirely in the realm of math. There's a reason that programmers talk a about design patterns and waste a lot of time naming things. So in a sense the cognitive root and differentiator of journeyman code is more analogous to the root of an understanding of architecture and planning than math. Keep in mind that many professionals (occasionally myself included) do not even write journeyman level code.
- GarvielLoken 13y agoPrecisely, a good programmer is more akin to a general organisations and marshalling code blocks then a mathematician calculating his way forward manually. But i guess this is a difference between extraverted and introverted thinking.
- cmelbye 13y agoI'd say that discrete mathematics does the best job of explaining and crossing over with Computer Science and programming. Not necessary to build a CRUD app, but perhaps necessary or at least very helpful for anything less trivial.
- someaccount 13y agoElementary arithmetic, high-school english
- Steko 13y agoI think the way to answer this question is to imagine the universe of math students from age 8 to 21 and imagine which of them could learn 'bog standard journeyman CRUD programming' at the pace your son has. I'm going to hazard a guess that you could teach it to most children his age although perhaps not as fast. I think the main obstacles being motivational and esoteric, not cognitive. Not sure I like the structure of the poll choices either. Does anyone really think that trigonometry is at a higher cognitive level than the classes that are taken before it?
- simonsarris 13y agoProgramming isn't analogous to math, programming is a communication language with really strict rules that uses math of all stages. Different tasks involve different math. I'll give some common examples for laymen, but they may seem obvious in hindsight: Programming a very rudimentary "snake" computer game is [using] using Algebra. If your son (or anyone) understands variables, assignment and adding them together, they fundamentally understand Algebra. Programming a the general parts of a diagramming library or a game with some physics is [using] Geometry and Trig. Programming complex features of a diagramming library involve discrete math and graph theory. Programming diagramming layouts can involve Masters level math understanding. (Sometimes, even when the algorithm is well known, it can take months to understand and implement, like planarity testing and embedding before 2004[1]) So it's roughly analogous to the difficulty and specificity of the task, which varies wildly. ~~~ [1] in 2004 there was a fast and "easier" to understand planarity testing and embedding algorithm, I suggest you skim it for an idea of the kind of math programmers can get into: http://jgaa.info/accepted/2004/BoyerMyrvold2004.8.3.pdf http://jgaa.info/accepted/2004/BoyerMyrvold2004.8.3.pdf
- derleth 13y ago> If your son (or anyone) understands variables, assignment and adding them together, they fundamentally understand Algebra. A more important part of algebra is symbol manipulation, and understanding why some manipulations are valid and others are invalid. That symbol manipulation is the core of grade-school (or trivial) algebra. Being able to 'see' how to solve a problem, and being able to abstract general rules to solve whole classes of problems, all flow from that. Of course, there's a disconnect between using '=' to denote a state of being (the state of equality) and using '=' to denote an action (the action of assignment). As an example, 'x = x + 1' is either trivially nonsense or trivially valid. Haskell actually uses '=' in the mathematical sense, to denote a state of being, and SSA languages such as Erlang come pretty close to it, I think.
- tikhonj 13y agoMathematics is also a "communication language with really strict rules". In one sense, programming often uses math. And math often uses programming. But, in a deeper sense, programming is math and math is programming. They're just different views on the same underlying ideas. They're different fields of study mainly because the priorities are so different. Of course, this doesn't mean it makes sense to map Objective-C programming onto some "level" of math. For one, the whole math scale is completely arbitrary--who is to say that abstract algebra is more advanced than calculus? They're orthogonal. Moreover, Objective-C is in a part of programming which has really, really different priorities from normal mathematics. I still maintain that they're fundamentally related, but you're doing such different things that there's very little practical overlap. Certainly not enough to translate to some common sub-field of mathematics, much less one taught to high-schoolers!
- lgas 13y agoOn some level, programming and math are the same thing. Algebras are programming languages for exploring mathematical structures. They just execute in the head of mathematicians (or in their computerized tools). Many mathy programming languages exist in different dimensions of mathiness. To name a few: Haskell and/or F#, Lisp (specifically Clojure, in my opinion), Julia, R, J, Forth and/or Factor, or PostScript (the language of many printers) Logo, Erlang, etc. All mathy in different ways. Any one -- Python or Clojure for example give you different sets of rules that you can use to manipulate the symbols of their language the same way different fields of mathematics give you different rules for manipulating the symbols of their language. In general the better you are at understanding one the better you are at understanding the other. They often collide more directly. Linear algebra is helpful in machine learning. Geometry and trig are helpful for ray tracing. Geometry is helpful for understanding multidimensional arrays in programming languages. Social sites like Facebook use graph theoretical algorithms to manage and mine their data for big bucks. The mathematical forumla of Bayes theorem figures prominently in many machine learning applications but also rationality, artificial intelligence, statistics, etc. You get the idea. Most programming languages have a built in notion of a set which is fundamentally identical to the mathemtical concept of a set with the further restriction that the only types of objects you can put in a set are values of that language's data types and you have to refer to the null set as something else like nil or null. Unless you're using Haskell (one of the most mathy of programming languages, being based directly on the mathematical field of Category Theory and having it's own official category called "Hask") where you have to understand something like the Maybe monad or the Either Monad or the List monad (and why that's largely equivalent to either of the others) in order to even think of not having a value. Of course understanding all of that is easier if you happen to understand what the mathematical concept of monad is. Which you probably don't unless you are a Category Theorist (or recreational Haskell dabbler). With a deeper understanding of math you can more easily grok the power, elgance, grace and healing powers of things like Haskell and Lisp. You need at least some understanding of basic math concepts to understand things like algorithmic complexity (i.e. "Big O" notation, amortized analysis, etc). Without this level of understanding you're in for a bad time trying to write anything more than a trivial program operating on a trivial data set. It goes on. There's a lot to learn. But that's a big part of what I love about computer science. I can consume as much of the literature and concepts and ideas out there as I can as fast as I can and I will never run out of new things to learn, and on top of that, there's an ever expanding frontier full of new discoveries to make. Anyway, none of this directly addresses your actual question which unfortunately I have no frame of reference for, but it's what I would want to know if I had a son who was interested in programming. And something I wish I understood earlier in my journey as a programmer. Edited to add: And if I did run out of math/comp sci stuff somehow, it all translates to physics, cosmology, etc! :)
- tedsanders 13y agoMath doesn't come in levels. It only seems linear because it's taught that way. You can teach kids group theory before calculus without a hitch.
- nostrademons 13y agoYeah, I was surprised by the framing of the question. Math is not a set of levels, it's a set of tools that are each useful in certain situations, many of which build upon each other. The branches of math that are most useful in programming are set theory, logic, linear algebra, and statistics, and most of them don't even appear in the U.S. high school math curriculum. I still remember getting to college thinking I was hot shit because I learned calculus as a freshman in high school, and then realizing I had no clue how to construct a proof. Calculus is taught in schools because it's how you send rockets into space, and in many STEM professions it's a dead-end that isn't all that useful for the job.
- eru 13y agoOptimization is often useful as well. (E.g. lots of standard algorithms like, eg, for find the shortest path in a graph, can be expressed as linear optimization problems.)
- the_cat_kittles 13y agoThat is a little bit of a stretch- I think it generally makes more sense to people to move from discrete to abstract. But I agree that it's much less linear than how its currently taught.
- demo 13y agox+y+z=1 and dafuq
- jborden13 13y agoAt that level, I'd say literature is more important and more of an analogue than mathematics. If your programming can tell a good story and the user can interact to move the story line along - you're golden. But math can be very important/helpful and if he can comprehend Algebra, then he's got it 98% covered - at that level. End of the day, the more he knows the better off he'll be... Just an opinion.
- jgg 13y agoIt would depend on what you're programming, IMO, but I don't think they're really analogous, and I majored in math and can program.
- aaronsnoswell 13y agoI noticed ODE's and PDE's are not on the list. I consider them a natural progression in mathematical understanding, perhaps following on from Advanced Calculus.
- ramgp 13y agoObviously it depends. Creating a software solution (program or app, whichever is it called these days) goes beyond programming/coding it, and it often depends on the problem you're trying to solve aka the problem domain or simply domain. That's why creating an mobile app to track a list of things to do on a person's day requires a different process for creating it than creating a solution for an self flying aircraft, weapon, banking, or medical system. So, I don't think programming in general is bound to any math level. Some systems may require some specific math in order to create an adequate solution for them.
- drakaal 13y agoIf you voted you don't understand math or programming. Programming is recipes for a computer to follow. In many cases there is Zero math involved. You can write plenty of Data Entry code and never use a single numeric function. Conversely you could write a single line of code that required all the math skills of a Quantum Physics Doctorate. Programming is not "math" it is recipe authoring. It is more analogous to home ec than Dif-e-q
- eru 13y ago> You can write plenty of Data Entry code and never use a single numeric function. Numbers are not math. (Anyway, I agree that the poll is strange.)
- sheldor 13y ago... and yet the obvious answer to a poll like this lies on the bottom. HN makes me sad these days
- shawndumas 13y agodo they both involve cognition?
- eru 13y agoThat's very US centric.
- guelo 13y agoI made my first simple game app at 10 years old and I remember feeling that the concepts were fairly easy to grasp. Admittedly I was doing much simpler 80's BASIC programming, but I also didn't have the internet at my finger tips like your son has. I don't remember feeling too challenged when I learned algebra. It wasn't until I got to trig and calculus that I really started having to stop and think hard. As for my career, I've turned out to be an above average programmer but not superstar level. And I haven't lucked into any big dot-com jackpots, though I've tried. So in my opinion, your son is probably smart and could do well, especially if he learns how to stay focused. But I don't think his programming at 11 is necessarily proof that he is a genius or anything like that.
- eagsalazar2 13y agoWhat level of programming is "math" roughly analogous to? Wait that makes absolutely zero sense!
- asveikau 13y agoI always thought phrases like "algebra 2" were signs of somebody who doesn't know very much. Is there some intrinsic "twoness" of it? Does it mean anything that you have supposedly spent a year of it already, and now it is the second year? Would not the topics of the second year vary from school to school? Similarly, "pre"-calculus. It came before calculus. Does that then include the ability to tie my shoes? I learned it before calculus. When I took math classes in college it all made more sense. OK, you have course sequences, where you look at one thing one semester, another thing the next. But that was always a recommendation; you could take them out of their numbered order. And usually the title of the class was a topic, not just a number.
- olympus 13y agoAgreed. Really, middle/high school level algebra ought to be called "simplifying equations" or "solving for a variable" because real math majors know that a college level algebra course is worlds apart and middle/high school teachers should be shot for letting their students think that they are competent at anything more complicated than balancing a checkbook. Similarly, pre-calc ought to be "concepts that we think you ought to be familiar with before you take calculus because you need to have a fundamental understanding of these concepts before you can do anything useful in math because, trust us on this, it will be nice to have these tricks in your toolbox of knowledge," but I suppose that is just too long so they kept it at pre-calculus.
- saraid216 13y agoTo put the finishing touches on my critique of the standard curriculum, and as a service to the community, I now present the first ever completely honest course catalog for K-12 mathematics: The Standard School Mathematics Curriculum LOWER SCHOOL MATH. The indoctrination begins. Students learn that mathematics is not something you do, but something that is done to you. Emphasis is placed on sitting still, filling out worksheets, and following directions. Children are expected to master a complex set of algorithms for manipulating Hindi symbols, unrelated to any real desire or curiosity on their part, and regarded only a few centuries ago as too difficult for the average adult. Multiplication tables are stressed, as are parents, teachers, and the kids themselves. MIDDLE SCHOOL MATH. Students are taught to view mathematics as a set of procedures, akin to religious rites, which are eternal and set in stone. The holy tablets, or “Math Books,” are handed out, and the students learn to address the church elders as “they” (as in “What do they want here? Do they want me to divide?”) Contrived and artificial “word problems” will be introduced in order to make the mindless drudgery of arithmetic seem enjoyable by comparison. Students will be tested on a wide array of unnecessary technical terms, such as ‘whole number’ and ‘proper fraction,’ without the slightest rationale for making such distinctions. Excellent preparation for Algebra I. ALGEBRA I. So as not to waste valuable time thinking about numbers and their patterns, this course instead focuses on symbols and rules for their manipulation. The smooth narrative thread that leads from ancient Mesopotamian tablet problems to the high art of the Renaissance algebraists is discarded in favor of a disturbingly fractured, post-modern retelling with no characters, plot, or theme. The insistence that all numbers and expressions be put into various standard forms will provide additional confusion as to the meaning of identity and equality. Students must also memorize the quadratic formula for some reason. GEOMETRY. Isolated from the rest of the curriculum, this course will raise the hopes of students who wish to engage in meaningful mathematical activity, and then dash them. Clumsy and distracting notation will be introduced, and no pains will be spared to make the simple seem complicated. This goal of this course is to eradicate any last remaining vestiges of natural mathematical intuition, in preparation for Algebra II. ALGEBRA II. The subject of this course is the unmotivated and inappropriate use of coordinate geometry. Conic sections are introduced in a coordinate framework so as to avoid the aesthetic simplicity of cones and their sections. Students will learn to rewrite quadratic forms in a variety of standard formats for no reason whatsoever. Exponential and logarithmic functions are also introduced in Algebra II, despite not being algebraic objects, simply because they have to be stuck in somewhere, apparently. The name of the course is chosen to reinforce the ladder mythology. Why Geometry occurs in between Algebra I and its sequel remains a mystery. TRIGONOMETRY. Two weeks of content are stretched to semester length by masturbatory definitional runarounds. Truly interesting and beautiful phenomena, such as the way the sides of a triangle depend on its angles, will be given the same emphasis as irrelevant abbreviations and obsolete notational conventions, in order to prevent students from forming any clear idea as to what the subject is about. Students will learn such mnemonic devices as “SohCahToa” and “All Students Take Calculus” in lieu of developing a natural intuitive feeling for orientation and symmetry. The measurement of triangles will be discussed without mention of the transcendental nature of the trigonometric functions, or the consequent linguistic and philosophical problems inherent in making such measurements. Calculator required, so as to further blur these issues. PRE-CALCULUS. A senseless bouillabaisse of disconnected topics. Mostly a half-baked attempt to introduce late nineteenth-century analytic methods into settings where they are neither necessary nor helpful. Technical definitions of ‘limits’ and ‘continuity’ are presented in order to obscure the intuitively clear notion of smooth change. As the name suggests, this course prepares the student for Calculus, where the final phase in the systematic obfuscation of any natural ideas related to shape and motion will be completed. CALCULUS. This course will explore the mathematics of motion, and the best ways to bury it under a mountain of unnecessary formalism. Despite being an introduction to both the differential and integral calculus, the simple and profound ideas of Newton and Leibniz will be discarded in favor of the more sophisticated function-based approach developed as a response to various analytic crises which do not really apply in this setting, and which will of course not be mentioned. To be taken again in college, verbatim. From http://worrydream.com/refs/Lockhart-MathematiciansLament.pdf http://worrydream.com/refs/Lockhart-MathematiciansLament.pdf
- eagsalazar2 13y agoOMG I can't believe people are actually attempting to answer this utterly nonsensical question.
- girvo 13y agoAnecdotally, but it started programming games when I was 11, using gamemaker 4, and it's GML scripting language. I breezed through maths for the next couple of years, as I fundamentally understood primary/early-highschool algebra. The problem arises, in that I adored maths, and had amazing teachers , and my father is an engineer and would sit me down every week and teach me more about maths, so how much can be attributed to programming, is hard to say. All I know is that variables introduced in the classroom made the class look at me funny when I pointed out how they worked when programming, in grade 6!
- ID_HOME 13y agoI had to understand trigonometry to write a good motion function. So you have to have at least the understanding of trig to write that program. But having a language to abstract away the complexity meant I didn't have to know more than trig, which I would have had to if I wanted to write the program more effectively or in pure math.
- kgc 13y agoActually, I find that programming is more akin to Technical Writing (for example, instruction manuals for furniture assembly) than it is akin to mathematics.
- smileysteve 13y agoIt depends what is being programmed. Pre-Algebra / Discrete : Basic variable substitution and functions Geometry : Drawing 3d figures and graphics Calculus & Trigonometry : Physics engines
- gxs 13y agoAs a math major that now works in IT, this is the simplest and most accurate answer here. That said, I would say the "ways of thinking" are very similar more than anything. It is similar to things like real/complex analysis in that sometimes you just need a clever solution, but it is similar to something like abstract algebra in that sometimes you just need to hold a lot of information in your head all at once as you go through a long chain of logic.
- JoshTriplett 13y agoThere are really two different ways in which programming and math match up. At a basic level, programming and algebra have a few key things in common (variables most notably), and more generally you'll probably end up using math to solve some common problems that come up in programming; that won't really rise to the level of advanced mathematics, though, beyond roughly algebra plus linear algebra. More importantly, though, math and programming are both heavily about learning, seeing, and applying patterns. Algebra, trigonometry, geometry, calculus, discrete math, and linear algebra all give you a toolbox of patterns to apply. Likewise, the more you learn about programming (or more generally CS), the more you have a toolbox of patterns to apply. Both heavily involve analytical reasoning and fast pattern matching against a vast set of possibilities. In other words, both of them bend your brain in many of the same ways, and they cross-train incredibly well.
- einhverfr 13y agoIsn't that like saying "Is trig on the level of precalculus or algebra?" It depends on what you are doing. Plane trig and spherical trig are worlds apart. I think that this says more about the level of programming that people are doing than how hard programming is.
- TeeWEE 13y agoI would say: Lambda-Calculus
- tinco 13y agoIsn't Logic a subject in maths? I upvoted Discrete Mathematics, because that's the area of maths programming is in, but at the same time I programming is infinitely more simple and intuitive (to me) than Discrete Mathematics is. Anyway, we had two logic courses (Introduction to Logic and Advanced Logic) which also have close connections to programming.
- virtualsue 13y agoHey dad, glad to hear that your 11 year old is interested in and able to do some programming. It's one of my favourite pastimes as well as my career. The poll is not meaningful, however.
- einhverfr 13y agoEven with the clarification, I would still ahve to say a few things. I would say that basic crud-level programming is equivalent at its base to pre-algebra but to get really good at it you have to focus on making it like geometry. Unfortunately too few programmers work on making the code well structured, maintainable, etc. The second problem is that CRUD itself can mean all kinds of things. Again, at a basic level it is equivalent to pre-algebra, but to do the database side right, you have to appreciate and understand the stuff I learned in first year calculus. Much of this doesn't need to be taught there. But a strong, internalized understanding of terms like function, discrete function, etc are absolute prerequisites for db design. My answer would probably be "all of the above."
- Udo 13y agoIt seems you only care about the perceived difficulty. I know everyone is proud of their children, but there is really no need to equate programming with any kind of math, let alone any "levels". Programming can and does stand on its own, you don't need to legitimize it through comparison with socially-accepted math skills. The premise is flawed, in two ways. First, programming is not math. It can be math-y, but that's not the same thing. Neither is programming any "level" of linguistics, even though it can be language-like at times. You can reason about certain aspects of programming by using math concepts, such as lambda calc, discrete logic, or Turing machines and similar constructs. Second, and most importantly, math is not a valid measure of difficulty! Some people have an easy time with equations, but can't for the life of them figure out how loops work. With other people, it's the opposite. And it really is that trivial.
- igravious 13y agoMmm. Could we say that programming is: part codified reasoning, part automation, part creative practice, part figuring out how computers and networks work, part figuring out how your toolkit works, part figuring out how the platform your coding against works? I guess that it is only mathsy insofar as the problem domain is mathsy. I see a whole wave of non-sciencey people learning how to code in the near future. These people are not very math-oriented.
- saraid216 13y agoWe could try saying, "Hey, drawing analogies between reductionist descriptions aren't really useful unless you have a specific point you're trying to make." Which, in the case of the OP, seems to be "My son is awesome."
- throw-away-914 13y agoCRUD is not math.
- Dogamondo 13y agoCan I just say; Your son is 11 and is making mobile apps in Objective-C. WOW. Kudos to him. He's shipping! That's really amazing and something to be celebrated in and of itself.
- kriro 13y agoLogic
- robodale 13y agoHaving gone through Mechanical Engineering school and also developing software (coding C++ and others) for the past 12 years...I see programming as more assembling physical systems and getting them to interact much more than how well programming can be related to any particular mathematics.
- MattyMc 13y agoThis question should establish a separation between the content that mathematics teaches, and the cognitive abilities that develop as a result of learning mathematics. Could an 11 year old dive into the CRUD with an 11 year old's mathematical knowledge? Absolutely. Will he/she have the ability to rough it through debugging challenging problems that may emerge without the years grit developed as a result of solving difficult calculus and linear algebra problems? Possibly. Perhaps not. Either way, you sound like an awesome dad :) I say let him have at it!
- mrcactu5 13y agoI read the results on the survey that computer scientists should learn more of what math can offer them. One premise of this survey is that math and cs are both "sequential" -- which is FALSE. And the survey assumes the Math and CS sequences can be placed in parallel. This is an artifact of the "grade" systems in school. The two winners in the poll are "algebra" an HS subject and "discrete math" which is usually taught in college. And I am surprised to see how few people chose geometry :-( In university, Engineering departments and physical sciences departments teach math to their own students in parallel with more abstract treatments in a math department. I bought a copy of "Robot Vision" and it's basically multivariate calculus with awesome pictures!
- olympus 13y agoA kid programming an iPhone app could be programming at a high level and doing neat stuff, but you clearly indicated that he is doing plain vanilla programming, so I'm going with the Algebra level. That's not to say your son isn't advanced (making any kind of working app is far above the level of most 11 y/os), just that the actual math probably isn't complicated, it's the concentration and attention to detail and creativity and being able to work with APIs that he's really getting ahead in. I'll concede the point that certain projects require math skills in certain areas, and CompSci PhDs need to understand some obscure parts of the math world (lvl 20 if Calculus rates a 10), but making an icon move around a screen is more like writing a recipe on how to bake a cake than it is mathematics.
- alexkus 13y agoIf that's your 1-10 scale I'd say:- | bog standard, journeymen, CRUD programming in Objective-C | = 3 But programming and maths aren't analogous but they're also not completely orthogonal, so my answer would be in the complex plane somewhere around:- 2.98 + 1/3i | 2.98 + 1/3i | =~ 3
- linuxhansl 13y agoProgramming is a bad term here I think. Computer Science is (on some level) the extension of math to dynamic processes. Overly simplified, math might give you a well defined value, but no way to actually calculate that value, that's where computer science come into play.
- vph 13y agoThe mathematics that programming -- program verification -- requires is unlike traditional mathematics. All programmers do this; all programmers will go through a process to reason why his programs are correct. This process might be formal or informal, conscious or subconscious, through or incomplete. The most relevant branch of mathematics would be formal logics.
- codemonkeymike 13y agoMost programming languages were made by mathematicians, because of that you will see a lot of terms and concepts analogous to terms and concepts in advanced mathematics. Thus it can only help having more of a math education. Personally I think the vast majority people would be fine with Calculus 1, and Discrete Mathematics (which is a 200 level class in my uni while Calc 2 is 300 level). That's because Linear algebra and Multivariable Calculus are concepts that are only used by the smallest percentage of programmers and knowledge in such fields wont make you any more money in the job field.
- AnimalMuppet 13y agoIt seems to me that there are three different issues, and people are mostly only talking about one. First, how much math does he have to know to be able to program problem X? Depends on what problem X is. This is true, but I don't think it's the question that is being asked. Second, how much math does he have to know to be able to reason formally in the way that programming requires? That's being discussed, a little, and I think that's the question that was asked. (For what it's worth, my answer is algebra or geometry, at least for a beginning programmer.) Third, how much math is needed in order to be able to handle the formal notation of something like Objective C? I don't think that's the question that was asked, but maybe it's a question that ought to be asked. (My answer to this one is probably geometry, maybe even trigonometry.)
- the_cat_kittles 13y agoA slight simplification, but I think this question is like asking "What level of physics is playing basketball analagous to?"
- shawndumas 13y agoOP here: Wow! I did not expect such a response. I want to offer a few clarifying points: We homeschool. My son likes math but does not like the 'busy work' associated. Mom was wondering if my son just didn't get long division, ratios, and fractions. I was thinking that if he can program js, awk, lua, and objective-c then he can do anything that arithmetic might demand of him. In other words I intuited a character issue not a cognition issue and wanted other opinions. Also, I really do understand that programming cannot strictly be equated with math. I purposefully used the word analogy because they are not 'fungible' things. In fact the term analogy connotes that I understand that there is a resemblance in some particulars between things that are otherwise unlike. I posit that the resemblance is effort of cognition (though, of course, some might disagree that there is even that point of connection). Another common misunderstanding was that I was asking how much math does my son need to know/learn to be a programmer (or otherwise). We will explore the very limits of his education (sane, practical, healthy limits); that's the whole point of us homeschooling him. Once he hits mom's limit in any given realm we will out source. I hope his current love of math/science/writing will know no parental impediment.
- metaphorm 13y agoundoubtedly programming is more engaging to work on than solving arithmetic problems in long division. there is relatively little utility in learning arithmetic by rote and its not surprising that your son doesn't want to do it. however, as I'm sure you know, rote arithmetic problems are present on state exams and your son will need to be able to do it in order for his home schooling (which is great, congratulations to you) to be officially recognized. there's a certain point at which the learning process stops being about gaining knowledge and skills, and starts becoming more about learning how to conform to institutional requirements. this sucks. it sucks real bad. you already know this though, which is probably one of the reasons why you chose to home school. unfortunately sucking it up and learning how to play ball with the institutions of our society is actually a really important thing, painful and boring as it is. long division by rote is some kind of proxy for this. better get started with building up your son's tolerance for annoying shit.
- shawndumas 13y ago
- ebbv 13y agoI'm bad at math, I have been a programmer for 25 years. Some types of programming are very math intensive. It really depends on what you're programming. Programming itself isn't math intensive, though. Your application may be.
- chriswarbo 13y agoOn your scale, I'd put programming somewhere around Aleph0. Programming is completely equivalent to constructive Maths (see http://en.wikipedia.org/wiki/Constructivism_(mathematics) http://en.wikipedia.org/wiki/Constructivism_(mathematics) ). Constructive Maths is basically regular (classical) Maths, with the acknowlegement that the halting problem is undecidable. One major consequence of this is that we can't use the Law of the Excluded Middle (ie. "for all P, P or not P"). There's some really interesting research going on here that's far outstrips 'advanced calculus', for example take a look at Homotopy Type Theory.
- Morphling 13y agoIn my opinion programming doesn't have very much to do with math, sure both are problem solving, but they aren't related at all. You can be good at one and suck at another.
- buckbova 13y agoComputational mathematics? That was the required course. I work in sets and relations for the most part.
- brianpgordon 13y ago"Discrete mathematics" is easier than "Advanced calculus" (presumably real analysis) so I'm not sure why it's at the end of the list.
- Millennium 13y agoBog-standard CRUD? If we're just talking that, then I'd say it's symbol manipulation, potentially with some basic transformations thrown in. I'd put it on the level of algebra. Depending on what he's actually doing with that data, though, the level may change. Got links?
- halis 13y agoI took up to Calculus II in college and have never ever ever ever used anything higher than basic arithmetic and a little basic algebra once in a while.
- imgabe 13y agoI disagree that there are "levels" of math as your post seems to imply. Yes, it's true that certain subjects are typically taught in a certain order (in the US at least) but that doesn't really imply that calculus for example is "higher" or more demanding than algebra or discrete math. There is professional, expanding-the-limits-of-human-knowledge level research being done in Algebra and Geometry just as there is in Calculus. Calculus is not the endpoint of math.
- matttheatheist 13y agoProgramming is just the implementation of an algorithm. An algorithm, per se, is meaningless outside of a particular domain. For example, I have implemented standard signal processing and acoustig echo cancellation algorithms, in both C++ and Java. I happen to have a MS in EE and a BS in CpE. Now, take someone with a CS degree (not CpE.) They may be amazing programmers, but they will have a very tough time understanding the math behind these algorithms--It's all about the domain!
- rcoder 13y agoMy $0.02: programming doesn't slot into a tiered progression of mathematics education as usually presented in secondary and higher education. At various times, it'll utilize concepts from basic arithmetic, trig, algebra, discrete math and set logic, and even topology and linear algebra. Trying to peg it against a normal math pedagogy is going to be a recipe for frustration. However, it can be a great motivator to learn new areas of mathematics. Consider a simple game engine: writing a program that displays sprites on screen and moves them will build an understanding of basic coordinate systems. Collision detection requires slightly more advanced math in that coordinate space. Pathfinding (say, for enemies chasing the player) requires all that, plus basic trig, plus some understanding of randomness and probabilities. Particle behavior (for weapons, jump physics, etc.) begs for calculus. Error-handling can be a great intro to the difference between total and partial functions, etc. etc. This was a huge motivator for me in learning mathematics both during my time in school and beyond. Instilling a love of problem-solving through coding is a great way to put your kid on the route to continuous learning.
- ajuc 13y agoTax law.
- endophage 13y agoThe question, "What level of math is programming roughly analogous to?" isn't necessarily answerable. However, you've provided context so if I can be allowed to rephrase the question as "What level of maths is required to create a standard CRUD platform (language not relevant)?", it would definitely be algebra. Sure you might be able to do it with a knowledge of nothing more than basic arithmetic, but you're going to be able to understand and manipulate data more efficiently with a solid understanding of algebra. That being said, Objective-C isn't the easiest language to pick up, especially as a first language. If your 11 year old starts to struggle, maybe point him at something like Python which has a shallow learning curve, great support (especially for beginners), and can do pretty much anything (ignoring the argument of whether it _should_ be used for things like drivers). If your son chooses software engineering as a career. Advanced calculus may well be required. I've had to debug complex legacy code before that implemented computations rooted in calculus and without that knowledge, I wouldn't have been capable of succeeding.
- yomritoyj 13y agoI think programming even a CRUD application is much more congnitively demanding than any math that your son is likely to be taught before university. This is because math in school is taught mostly in terms of procedures that can be blindly followed. On the other hand in writing even the simplest programs one must deal with freedom: there are many ways in which a program can be structured, and many paths its execution can follow, and you must develop your abstract thinking skills in order to see the consequences. It is only at the university level that you begin to see this kind of freedom in doing math.
- sigvef 13y agoHere is a visualization of the poll: http://hnlike.com/hncharts/chart/?id=7028714 http://hnlike.com/hncharts/chart/?id=7028714 .