|
jschell wrote: when I needed to solve storing data for running Standard Deviation calculations without storing all of the preceding data.
That algorithm is mathematically equivalent to the algorithm of "calculate average, then use that to calculate standard deviation", but is numerically not equivalent. Roundoff errors can cause the variance to become negative, causing an error when calculating the standatd deviation.
There was another case where, instead of calculating the moving average of a sum by storing the last N values, they subtacted the oldest value from the running total and added the latest value. The idea was to save computation time. After a few months, the connection between the true moving average and the calculated moving average was purely coincidental.
These are two of the reasons why advanced courses are necessary, even when one is dealing with "simple" issues such as these.
Numbers are sharp things. If one doesn't treat them with respect, one will get hurt.
jschell wrote: humans and programmers are average. In some aspects they might be superior and in other ways they might be lacking.
True, as far as it goes. the average person in the street can certainly be taught a programming language. Producing commercial-quality software is another matter. This requires a certain amount of skill, most of which is not found in the general population.
jschell wrote: requiring interviewees to program odd ball programming questions which the interviewer found by doing a google search.
Agreed. Most of those questions have no purpose other than exercising the interviewer's ego.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
Daniel Pfeffer wrote: That algorithm is mathematically equivalent to the algorithm of "calculate average, then use that to calculate standard deviation", but is numerically not equivalent. Roundoff errors can cause the variance to become negative, causing an error when calculating the standatd deviation.
Not sure what you are referring to.
My degree is in mathematics. I used a proof to rederive the summation series to intermittent summations. (I also coded it including storage.)
So yes I am sure that the algorithm that I used was doing the correct calculation.
Daniel Pfeffer wrote: The idea was to save computation time.
Ah. So just to be clear I did not 'use' an existing algorithm. I used mathematics to derive a different way to compute it and used a proof to demonstrate the equivalence.
Daniel Pfeffer wrote: These are two of the reasons why advanced courses are necessary, even when one is dealing with "simple" issues such as these.
Rather certain that none of the computer science classes that I took would have allowed me to solve the problem.
But as I pointed out that was one single time in a career that has spanned decades.
Daniel Pfeffer wrote: This requires a certain amount of skill,
It requires experience. But experience also is not a guarantee of success. And a college degree absolutely is not an indicator of success in doing that.
|
|
|
|
|
When I did my 4-year CS degree, we had to take Advanced Calculus and Linear Algebra in 2nd year. I found both very challenging, partly because the profs were awful, and never used either again. Largely a waste of time given the type of software I ended up doing for most of my career. What I found far more useful was a 3rd year course in Combinatorics and Graph Theory, perhaps my favorite, though close runners-up were Operating Systems and the Electronic Music course in the Faculty of Music, taught by one of the Composition profs. He was a Schenkerian and opened my eyes to how some of the traditional Harmony that I'd studied was either needlessly complicated, misleading, or outright wrong.
|
|
|
|
|
Either I'm a terrible programmer, or yes.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
"Alcohol and Calculus Don't Mix. Don't Drink and Derive."
|
|
|
|
|
Good one! Derive
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
When I was a CS major in the late 80s there was a ton of math including calc I and II. I barely made it through calc I...in fact I took it twice to improve my GPA. Soon after, I dropped out and spent 10 years doing shift work in a box plant.
From what I remember, the concept of arrays, especially multi-dimensional arrays, was what culled the herd more than anything else.
"Go forth into the source" - Neal Morse
"Hope is contagious"
|
|
|
|
|
Almost did me in too
Hadn't thought about it in 40+ years - reset timer to 40 MORE years
|
|
|
|
|
I have a grandson who won a robotcs championship with the code he wrote.
I'd say he must be a good programmer.
We'll see how he does in calculus when he gets tohigh school!
CQ de W5ALT
Walt Fair, Jr.PhD P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
Hmm. I received my B.S. in computer engineering in 1984. I earned 205 credit hours, 28 of which were math: Calculus I-IV, differential equations, and matrix algebra. While I've not used a great deal of the math I learned, the experience did help teach a valuable skill: representing real-world problems in abstract form so that they may be addressed in software and/or hardware. It also taught the idea that problems can have multiple solutions and the choice of method can have a profound effect on the outcome.
Software Zen: delete this;
|
|
|
|
|
I never studied hardcore maths, and I'm nowhere near an expert in it. But, I totally agree man. I think every programmer should at least learn the basics. If you can't least read an equation and translate it into code, then do better.
Jeremy Falcon
|
|
|
|
|
ditto gary
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Gary R. Wheeler wrote: representing real-world problems in abstract form so that they may be addressed in software and/or hardware
Presumably you had already had word problems and algebra before you even got to the university. Seems like those should have taught you that.
|
|
|
|
|
Lol - I left school at 15, did not even finish high school, I have no idea what calculus would do or be used for and yet I had a highly successful career writing business solutions. You could not take that path today but in the 80s/90s it was possible.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
I would say they cannot be good programmers.
Note that the question is not if a one can be a good programmer without knowing freshman calculus.
What is being asked (at least in my understanding) is if a person that lacks the mental ability to understand freshman calculus can be a good programmer.
|
|
|
|
|
Short answer: YES.
The long answer, (from the long article you linked to) is DUNNO. OK... that's not a long answer either. The real long answer, is: the article is really about whether including calculus in a Computer Science degree is:
a) a good idea
b) necessary
c) putting students off taking CS degrees.
(a) and (B) weren't really answered
and (c) was: yeah. it is putting people off CS
So my conclusions are:
- this question would have been more suitable to Quora than Code Project
- the article linked to, was very long and mainly pointless
- cats are better than dogs - just as relevant as all the other %$&*.
|
|
|
|
|
Quora is a horrible place to ask questions. I would say Reddit or Facebook. But otherwise, you're right.
|
|
|
|
|
Yep! Quora is horrible - and the original post was exactly the sort of thing you get on there. Basically, clickbait. Apart from the link to the article, there was nothing. I'm guessing it was an attempt to get some hits on the article.
If it was a genuine attempt to discuss the merits of calculus, the original poster made zero effort. Opinion - none. Background to article - none. Summary - none. Just stick in the link and send us all off to read it. And - maybe - if the article had had some value, I wouldn't be so But it didn't.
|
|
|
|
|
If someone is getting a Computer Science degree to be a computer scientist, then yes they should learn all the math as actual CS is heavily math based, with computer science essentially being a specialized area of mathematics.
However, if someone is getting a CS degree to become a professional software developer, then for most CS jobs you wont need the math, as many of the replies have pointed out.
The biggest issue I see is that somewhere along the way it was decided that to get a job as a developer, a degree in CS (or related field) became required, which is absurd.
What is actually needed is more of a "trade school" for software developers that is accepted by the business community. Coding Boot Camps dont cut it as they are just too short, it should be a couple of years of study at least, but focused on software development, not computer science. Which wont happen - the corporate world has turned university studies into de facto trade schools and they're happy with it being that way. So, people who have no need for 3 years of higher math will continue to have to suffer through it, and we will continue to "weed out" people who would otherwise be fine developers for 80% of the programming jobs out there unnecessarily.
Of course, there are many programming jobs that DO need that level of math, and those are the jobs that should be listing a CS degree as a requirement. Most jobs should not have that requirement though.
|
|
|
|
|
Gjeltema wrote: Computer Science degree ... What is actually needed is more of a "trade school" for software developers that is accepted by the business community.
At least in my experience a CS degree by itself is useless as a measure of someone working as a developer.
What often happens though is that while they are getting that degree they actually get a job through the school which allows them to get paid to program. That experience, not the degree, is what gives them the knowledge to get other jobs.
|
|
|
|
|
Sure they can. Even back in my undergraduate days (82 - 86), my school had two different paths to becoming a "programmer" (using your word). The Computer Engineering degree was in the Engineering department and was identical to the Electrical Engineering degree for the first two years, so calculus physics and chemistry were requirements. The Computer Science degree was in the Arts and Sciences department, and only had some logic-type math class requirements, but no physics nor chemistry per se; they had a breadth requirement for some 100-level science class but they could pick which one. My roommate was a CS and I was a CpE. We both have had very successful careers in "programming."
I've found the most important thing to being a success in programming is the ability to know how to solve problems. Know your problem domain, know what tools and languages are available and what support they give you, know the "usual" approach to solving a related problem, know when to throw out the usual approach, and most importantly, know that you don't know everything.
Be wary of strong drink. It can make you shoot at tax collectors - and miss.
Lazarus Long, "Time Enough For Love" by Robert A. Heinlein
|
|
|
|
|
Exactly
Plus the sheer enjoyment of the job.
As a beginning, entry-level report programmer at a small local Savings & Loan,
many days I left feeling as though I had not worked at all because I was having so much FUN writing (easy) code - AND being paid for it
|
|
|
|
|
I graduated in 2000. I started my freshman year going for a Computer Science degree. After barely passing my math class my first semester, I transferred to the Computer Information Systems degree. I was fortunately that my university offered both. My CIS degree had no additional math requirements. There is a need for both degrees and 24 years later, I'm still slinging business software. The most difficult math I have to do is finding the weighted cost of an item in a shopping cart when applying a credit. I'll never take a job writing gaming engines or tracking real time objects, but I'm okay with that.
Hogan
|
|
|
|
|
Tricky. If the question is should calculus be a prereq for CS, I'd say only if you also want to require some EE background, in which case you need calculus to solve many of those problems. I do think a minimal amount of EE background is worthwhile, even if not critical; at my school you could do CS either as a BS or BA; I chose BS, so I did get the EE prereqs and am a little biased. Otherwise, though, calculus has little direct relevance to CS. Much more relevant would be Boolean logic, or maybe even a philosophy of logic course (it never hurts to hone the verbal skills too, and it trains the mind just as assuredly as pure math study).
All that said, if you take it as a given that intro calc is required, and yet the student can't pass the class, if I were their advisor I'd be concerned. Basic calc may be tough to understand intuitively but is rather easy to apply superficially - which also happens to describe a lot of programming problems. They don't have to be able to prove the fundamental theorem of calculus from scratch, but if they can't at least follow the spoon-fed algorithms for obtaining simple derivatives and integrals, and/or don't have the ability to break down complex problems into smaller ones (and then apply said spoon-fed algorithms), then they might also have a hard time tacking difficult programming problems.
This is nothing unique to calculus vs. other advanced math, though. Like 99% of people who learn any advanced math, it's not about whether they will use it later in life (I've literally never applied calculus in real life, to my recollection). It's about training to, and proving they can, solve complex problems given the tools needed to do so. They don't have to study calculus, or any other specific form of advanced math, to be a good programmer, but if they can't handle it after trying, I'd say it's something that at least should be looked into and understood why not.
|
|
|
|
|
Most everyone else will probably say similar, but if the student goes the business route, the student likely won't need anything more than algebra for many tasks. If the student wants to work for Lockheed Martin, Boeing or write modern video games, then the student should probably master differential equations. Passing calculus is easy. Application of calculus is harder. Of course, I think many gaming engines handle physics for you.
|
|
|
|
|