Calculus is probably more similar to programming than chess or basket weaving. In programming, you have a well defined problem with discrete parameters (inputs/outputs). The same is true of calculus. It stresses your ability to problem solve rather than your ability to write code. If you're developing, say, algorithms, this could be an important skill.
It *could* be, but I'd still love to see an actual study demonstrating this link that most Slashdotters "just know" is there.
The thing of it is, Calculus is a lot easier than programming.
Except that I'm demonstrably capable of solving every computer problem that my employers and clients have given me, whether in Javascript, C++, C# or SQL. In short, I *can* learn and use the tools I've needed to use in my career, and the tools I've needed to use in my education. Every single one of them except calculus.
The issue at hand here is whether "competency with calculus" has anything to do with "competency with programming in general." I say no. Most of the posters in this thread say yes.
Unfortunately, nobody's actually dug up an actual study (assuming one even exists), so that's where the issue lies.
Besides, if the purpose of calculus in CS courses was simply to "learn a construct and solve problems in that domain", they could be teaching pretty much anything else instead-- chess, or basket weaving! So why calculus, in particular?
Yeah, I actually had a full 3 years of the degree program before dropping-out, including the course where you write your own compiler for your own language (on a emulated imaginary minimal CPU that had like 15 op-codes or something like that.) I did database administration stuff, including Third-Normal form, which has been *extremely* useful-- far more useful than anything else, I think, most of which I'd already learned on my own before enrolling in the class.
Unfortunately, YouTube wasn't around 10 years ago when this would have helped me.:)
I did try a couple books that were designed to teach it to, well, idiots. One I remember the title of was "Calc for the Clueless" I dunno, I still just couldn't wrap my brain around it.
That is why a CS degree was not for you, you lack the problem solving skills necessary to be an effective programmer.
If that sentence isn't calling me an ineffective programmer, I have no idea what it's supposed to mean.
Let me repeat it again for you. CS is not about programming. The job you are in has little to do with Computer Science.
Yes, I get that. But my university *only has* Computer Science. It doesn't have "Computer Engineering", or whatever a course emphasizing practical programming would be called-- so what was I supposed to do?
Programming is not solving problems, and solving problems is not programming, for anything more complex than projects a student might undertake on their own.
Ok, so when I write a program to solve a client's problem, am I not actually solving their problem? Or am I not actually programming? What the hell are you even talking about?
Ad hoc development practices might work for a nifty web app or that cool shell utility you wrote in the dorm. It does NOT work for real-world problems.
Of course not, that's why real-world development teams use things like source control, test-driven development, fuzz testing-- all things that are not taught in college!
One more time: CS is not about programming. You took a theoretical degree in an applied field and then went to apply vocational training. Your success has nothing to do with your education or your inability to succeed in calculus. If anything, you argue strongly FOR formalized education.
I guess what I'm arguing for is universities to meet the needs of their students by offering a 4-year degree in practical programming, for students like me. As is, they're unfairly rejecting bright students.
Loops 101: prove that the loop terminates under all conditions, even and especially when passed garbage.
"Terminates under all conditions" is a little difficult to prove in any non-trivial situation.
Seriously, that's the difference between a hacker and a software engineer right there.
The former bitches and moans on Slashdot, and Microsoft hires the latter?
If you don't take the time to fix it early, you'll just have to fix it later.
Maybe you should send Microsoft your perfect coding technique that won't possibly have exploits. Since you seem to have all the secrets of software nailed down. I'm sure Microsoft would love to see it.
The point of "zero-day" is that you have zero days to patch your system before exploits appear. For example, if the exploit was found by researching an existing exploit.
If a security researcher found it, and it's not actually being exploited (yet), then it's not zero-day.
It's not a difficult term, I'm not sure what the problem is here.
What does it matter? Calculating sin, cos, and tan is a solved problem. I can easily look-up the required code with absolutely no education in calculus at all, assuming I was writing a program that required me to use those functions. But: 1) I've never worked on a program that required using them 2) I've never worked on a program written in a language/framework/whatever without those functions already built-in.
You're right, knowing how to implement those functions is important for a particular class of programmer. For the vast majority? It's useless.
You must have had some awful calculus professors (and how do you have so many professors and still not pass it?) if they couldn't give you practical examples of its use.
Possibly. But either way, I failed it three times in a row... since I don't see any practical use for it, since I'm successful in my career, it doesn't bother me in the slightest.
The problem was the school I went to had NO degree program for programming. There was CS and... nothing else. So my options were to get a degree in something completely unrelated to programming, or get stymied by calculus. That's it.
I kind of agree with you, but at the same time, I blame the university for not meeting its student's needs.
So please, keep on coding but remember that you have brought up what is part of the fundamental question the submitter is really asking. The "blue collar" coders they were trying to describe are people like you--those with coding training but without the well rounded education granted with a BA. The "white collar" coders they are attempting to describe are the people with some extra training in less related and less job specific areas...they are the people who I could put on a project requiring a little calculus or something else knowing that they could relearn it with 10 minutes and a wikipedia page and then get on with the project.
1) But those are both coders, neither is a "computer scientist." 2) How often do you have a project that requires a little calculus? Be honest with me.
I agree with all of that. But the school I went to *only* had "Computer Science." It didn't have any such degree program as "Computer Engineering." That was about a decade ago-- I dunno; maybe they do now, and my entire complaint is obsolete. (I doubt it.)
Glad to finally find someone on this forum who isn't telling me I'm a terrible programmer because I can't do calculus, or going on about how useful calculus is without giving a single shred of proof.
And yet, it's been a decade, I honestly don't remember if there were more calculus classes past the first one, and I'm far too lazy to look it up.
And honestly, it wouldn't bug me as much if I hadn't found all the hundreds of things schools *should* teach CS students that they don't.
You are exactly the type of person that employers are trying to weed out.
That explains why I'm doing so well in my career.
"I started this long project, but a few years in, I ran into a spot that was dumb and annoying, so I quit the project instead of sucking it up and getting the job done"
Except, even when I was in school, I didn't have a single calculus prof would could give me a *practical* example of what it's used for. I'm the kind of person who has trouble doing things with no practical application-- I don't see the point to it, and certainly nobody at my school explained the point to it.
But at work, it's totally different. I see *why* you need to do every step of that long project, and every step brings you closer to completing it. It's nothing at all the same.
Yah, but most programmers don't write programs that do mathematics. That's my exact point!
There are many more programmers writing UIs than their are programmers writing math programs. And UIs generally suck. And yet my university didn't teach jack about UI design.
Their priorities were way out-of-wack, and still are. I'm getting sick of people defending it by just echoing the same "calculus is really important" crap.
There was a limited part of the workload you couldn't do, and wasn't directly relevant to everything else. But because you couldn't do it, you reacted to that failure by falling apart and not being able to do other things that, by your admission, you should be able to do. In other words, you're self-defeating, and under pressure are prone to falling apart.
I am? News to me.
I promise you that, calculus or not, there'd come a day when there was something you couldn't do and I don't think someone who falls apart under the pressure of failure is a fantastic find.
I get paid a lot now to solve complicated problems with computers, and I've yet to "fall apart" in an actual work environment. So I think you're spouting a load of bunk, frankly.
What's much more likely is during my college years, I was prone to depression, and it was that depression (combined with the calculus failures) that caused me to drop out. But, hey, what do I know? I don't have a college education!
Calculus has the same relationship with programming as bench-pressing does with furnature moving. If you are good at one, then it will help with the other, and if you suck at one then there is a good chance you suck at the other.
Ok... PROVE it.
I keep hearing people say this over and over. It doesn't match my experience, and I've yet to see any proof of that assertion. If there actually is a link, it shouldn't be hard to find a study to demonstrate it, right?
I actually thought Clinton was pretty useless as well. I don't think we've had really, really exciting, efficient and productive president in my entire lifetime, sadly.
Partially, I think it depends on what kind of software you're writing.
(The following statistics are made-up. Cope with that somehow, and don't bother "correcting" them.)
Percentage writing software using source control tools (something which was NOT taught): 95%
Percentage writing software that deals with the moving and counting of money: 35%
Percentage writing software using calculus: 2%
By any reasonable measure, CS courses should teach source control LONG before they get to calculus. If they're going to teach a problem domain (and don't be fooled, that's all calculus is in your example), they should be teaching GAAP long before they get around to calculus.
Newscaster: "Archeologists near Mount Sinai have discovered what is believed to be a missing page from the Bible. The page is currently being carbon dated on Bonn. If genuine, it belongs at the beginning of the Bible and is believed to read: 'To my darling Candy. All characters portrayed within this book are fictitious and any resemblance to actual persons, living or dead, is purely coincidental.'"
Out of curiosity, is there any negative thing you *don't* blame Bush for?
I was hoping the Bush haters would go away now that it's apparent that Obama is almost precisely as useless as Bush was. I'm disappointed to see that's not happening.
I'm sorry, my brain just doesn't do it, and I wasn't willing to cheat at the course. I'm guessing most people like me either cheated to pass the class, or switched majors. Part of my problem was that it was a huge hit to my self-esteem and affected all my other classes as well, though... I take full responsibility for that-- I really should have just switched majors.
Maybe you're right: maybe a lot of people can cope with it.
But what good reason is there for CS to exclude the people who can't?
Especially when there are so many things about programming they don't even come close to teaching. Why don't they nix the calculus and have a semester on using source control, or working with a team? (And I mean REALLY working with a team, not "our team met once a week before the due date, and one guy did most of the work.")
But you're in a problem domain that would have required calculus even if it you were solving the problem with rulers and graph paper. If you were working with accounting software, you'd do much better if you knew the generally accepted accounting principles... but do CS courses teach that? No.
The longer you spend time in school (2, 4, or 6-year degrees), the greater value you have to the employer.
Only because the Employer *thinks so*. That's a self-fulfilling prophecy.
In the real world, I've seen no correlation between education and programming ability, or communication skills, or planning skills. Absolutely none whatsoever. Despite that, I've worked at companies that require candidates to have a 4-year degree, a policy I thought was grossly unfair.
Why don't I have a degree? For some reason I've never understood, a CS degree that my University required calculus. I can't hack calculus... my failing that class multiple times destroyed my self-esteem to the point where I dropped out of school rather than try again.
What does calculus have to do with programming? From my experience, nothing. Absolutely nothing.
I don't have a degree because the degree program required a difficult, pointless, and utterly useless class. After a few years, I realized it wasn't me who was dumb. And that was confirmed when I entered the industry and began interviewing candidates who had calculus degrees, but couldn't code worth crap.
Obviously, maybe I'm a weird and special case, but you can see that I really don't care whether a job seeker has a degree or not, I'll give them a shot either way. If they can hack it, they can hack it.
(Oh, sure, there's going to be someone who stands up and goes, "well what about programming video and audio compressors?" But that's not using calculus as a *programming* concept, that's using calculus because it just happens to be relevant to that problem domain. Just like you'd be better off knowing the GAAP if you're writing an accounting application.)
Calculus is probably more similar to programming than chess or basket weaving. In programming, you have a well defined problem with discrete parameters (inputs/outputs). The same is true of calculus. It stresses your ability to problem solve rather than your ability to write code. If you're developing, say, algorithms, this could be an important skill.
It *could* be, but I'd still love to see an actual study demonstrating this link that most Slashdotters "just know" is there.
The thing of it is, Calculus is a lot easier than programming.
Not for me, obviously.
Except that I'm demonstrably capable of solving every computer problem that my employers and clients have given me, whether in Javascript, C++, C# or SQL. In short, I *can* learn and use the tools I've needed to use in my career, and the tools I've needed to use in my education. Every single one of them except calculus.
The issue at hand here is whether "competency with calculus" has anything to do with "competency with programming in general." I say no. Most of the posters in this thread say yes.
Unfortunately, nobody's actually dug up an actual study (assuming one even exists), so that's where the issue lies.
Besides, if the purpose of calculus in CS courses was simply to "learn a construct and solve problems in that domain", they could be teaching pretty much anything else instead-- chess, or basket weaving! So why calculus, in particular?
Thanks.
Yeah, I actually had a full 3 years of the degree program before dropping-out, including the course where you write your own compiler for your own language (on a emulated imaginary minimal CPU that had like 15 op-codes or something like that.) I did database administration stuff, including Third-Normal form, which has been *extremely* useful-- far more useful than anything else, I think, most of which I'd already learned on my own before enrolling in the class.
Unfortunately, YouTube wasn't around 10 years ago when this would have helped me. :)
I did try a couple books that were designed to teach it to, well, idiots. One I remember the title of was "Calc for the Clueless" I dunno, I still just couldn't wrap my brain around it.
Thanks, though.
He didn't say anything about being a programmer.
He said, and I quote:
If that sentence isn't calling me an ineffective programmer, I have no idea what it's supposed to mean.
Let me repeat it again for you. CS is not about programming. The job you are in has little to do with Computer Science.
Yes, I get that. But my university *only has* Computer Science. It doesn't have "Computer Engineering", or whatever a course emphasizing practical programming would be called-- so what was I supposed to do?
Programming is not solving problems, and solving problems is not programming, for anything more complex than projects a student might undertake on their own.
Ok, so when I write a program to solve a client's problem, am I not actually solving their problem? Or am I not actually programming? What the hell are you even talking about?
Ad hoc development practices might work for a nifty web app or that cool shell utility you wrote in the dorm. It does NOT work for real-world problems.
Of course not, that's why real-world development teams use things like source control, test-driven development, fuzz testing-- all things that are not taught in college!
One more time: CS is not about programming. You took a theoretical degree in an applied field and then went to apply vocational training. Your success has nothing to do with your education or your inability to succeed in calculus. If anything, you argue strongly FOR formalized education.
I guess what I'm arguing for is universities to meet the needs of their students by offering a 4-year degree in practical programming, for students like me. As is, they're unfairly rejecting bright students.
Don't they do code reviews at Microsoft?
Yes they do.
Loops 101: prove that the loop terminates under all conditions, even and especially when passed garbage.
"Terminates under all conditions" is a little difficult to prove in any non-trivial situation.
Seriously, that's the difference between a hacker and a software engineer right there.
The former bitches and moans on Slashdot, and Microsoft hires the latter?
If you don't take the time to fix it early, you'll just have to fix it later.
Maybe you should send Microsoft your perfect coding technique that won't possibly have exploits. Since you seem to have all the secrets of software nailed down. I'm sure Microsoft would love to see it.
The point of "zero-day" is that you have zero days to patch your system before exploits appear. For example, if the exploit was found by researching an existing exploit.
If a security researcher found it, and it's not actually being exploited (yet), then it's not zero-day.
It's not a difficult term, I'm not sure what the problem is here.
What does it matter? Calculating sin, cos, and tan is a solved problem. I can easily look-up the required code with absolutely no education in calculus at all, assuming I was writing a program that required me to use those functions. But:
1) I've never worked on a program that required using them
2) I've never worked on a program written in a language/framework/whatever without those functions already built-in.
You're right, knowing how to implement those functions is important for a particular class of programmer. For the vast majority? It's useless.
You must have had some awful calculus professors (and how do you have so many professors and still not pass it?) if they couldn't give you practical examples of its use.
Possibly. But either way, I failed it three times in a row... since I don't see any practical use for it, since I'm successful in my career, it doesn't bother me in the slightest.
The problem was the school I went to had NO degree program for programming. There was CS and ... nothing else. So my options were to get a degree in something completely unrelated to programming, or get stymied by calculus. That's it.
I kind of agree with you, but at the same time, I blame the university for not meeting its student's needs.
So please, keep on coding but remember that you have brought up what is part of the fundamental question the submitter is really asking. The "blue collar" coders they were trying to describe are people like you--those with coding training but without the well rounded education granted with a BA. The "white collar" coders they are attempting to describe are the people with some extra training in less related and less job specific areas...they are the people who I could put on a project requiring a little calculus or something else knowing that they could relearn it with 10 minutes and a wikipedia page and then get on with the project.
1) But those are both coders, neither is a "computer scientist."
2) How often do you have a project that requires a little calculus? Be honest with me.
I agree with all of that. But the school I went to *only* had "Computer Science." It didn't have any such degree program as "Computer Engineering." That was about a decade ago-- I dunno; maybe they do now, and my entire complaint is obsolete. (I doubt it.)
Glad to finally find someone on this forum who isn't telling me I'm a terrible programmer because I can't do calculus, or going on about how useful calculus is without giving a single shred of proof.
And yet, it's been a decade, I honestly don't remember if there were more calculus classes past the first one, and I'm far too lazy to look it up.
And honestly, it wouldn't bug me as much if I hadn't found all the hundreds of things schools *should* teach CS students that they don't.
Oh well.
You are exactly the type of person that employers are trying to weed out.
That explains why I'm doing so well in my career.
"I started this long project, but a few years in, I ran into a spot that was dumb and annoying, so I quit the project instead of sucking it up and getting the job done"
Except, even when I was in school, I didn't have a single calculus prof would could give me a *practical* example of what it's used for. I'm the kind of person who has trouble doing things with no practical application-- I don't see the point to it, and certainly nobody at my school explained the point to it.
But at work, it's totally different. I see *why* you need to do every step of that long project, and every step brings you closer to completing it. It's nothing at all the same.
Yes, I must be an awful programmer. That's why I got a raise this year, that's why I dodged multiple rounds of layoffs...
Christ. I have no idea why I post to this forum.
Yah, but most programmers don't write programs that do mathematics. That's my exact point!
There are many more programmers writing UIs than their are programmers writing math programs. And UIs generally suck. And yet my university didn't teach jack about UI design.
Their priorities were way out-of-wack, and still are. I'm getting sick of people defending it by just echoing the same "calculus is really important" crap.
There was a limited part of the workload you couldn't do, and wasn't directly relevant to everything else. But because you couldn't do it, you reacted to that failure by falling apart and not being able to do other things that, by your admission, you should be able to do. In other words, you're self-defeating, and under pressure are prone to falling apart.
I am? News to me.
I promise you that, calculus or not, there'd come a day when there was something you couldn't do and I don't think someone who falls apart under the pressure of failure is a fantastic find.
I get paid a lot now to solve complicated problems with computers, and I've yet to "fall apart" in an actual work environment. So I think you're spouting a load of bunk, frankly.
What's much more likely is during my college years, I was prone to depression, and it was that depression (combined with the calculus failures) that caused me to drop out. But, hey, what do I know? I don't have a college education!
Calculus has the same relationship with programming as bench-pressing does with furnature moving. If you are good at one, then it will help with the other, and if you suck at one then there is a good chance you suck at the other.
Ok... PROVE it.
I keep hearing people say this over and over. It doesn't match my experience, and I've yet to see any proof of that assertion. If there actually is a link, it shouldn't be hard to find a study to demonstrate it, right?
I actually thought Clinton was pretty useless as well. I don't think we've had really, really exciting, efficient and productive president in my entire lifetime, sadly.
Partially, I think it depends on what kind of software you're writing.
(The following statistics are made-up. Cope with that somehow, and don't bother "correcting" them.)
Percentage writing software using source control tools (something which was NOT taught): 95%
Percentage writing software that deals with the moving and counting of money: 35%
Percentage writing software using calculus: 2%
By any reasonable measure, CS courses should teach source control LONG before they get to calculus. If they're going to teach a problem domain (and don't be fooled, that's all calculus is in your example), they should be teaching GAAP long before they get around to calculus.
There's no excuse for requiring calculus.
Seriously, have you ever seen Sapphire and Steel? Did you understand what the holy hell was going on in that series?
Newscaster: "Archeologists near Mount Sinai have discovered what is believed to be a missing page from the Bible. The page is currently being carbon dated on Bonn. If genuine, it belongs at the beginning of the Bible and is believed to read: 'To my darling Candy. All characters portrayed within this book are fictitious and any resemblance to actual persons, living or dead, is purely coincidental.'"
Out of curiosity, is there any negative thing you *don't* blame Bush for?
I was hoping the Bush haters would go away now that it's apparent that Obama is almost precisely as useless as Bush was. I'm disappointed to see that's not happening.
I'm sorry, my brain just doesn't do it, and I wasn't willing to cheat at the course. I'm guessing most people like me either cheated to pass the class, or switched majors. Part of my problem was that it was a huge hit to my self-esteem and affected all my other classes as well, though... I take full responsibility for that-- I really should have just switched majors.
Maybe you're right: maybe a lot of people can cope with it.
But what good reason is there for CS to exclude the people who can't?
Especially when there are so many things about programming they don't even come close to teaching. Why don't they nix the calculus and have a semester on using source control, or working with a team? (And I mean REALLY working with a team, not "our team met once a week before the due date, and one guy did most of the work.")
But you're in a problem domain that would have required calculus even if it you were solving the problem with rulers and graph paper. If you were working with accounting software, you'd do much better if you knew the generally accepted accounting principles... but do CS courses teach that? No.
The longer you spend time in school (2, 4, or 6-year degrees), the greater value you have to the employer.
Only because the Employer *thinks so*. That's a self-fulfilling prophecy.
In the real world, I've seen no correlation between education and programming ability, or communication skills, or planning skills. Absolutely none whatsoever. Despite that, I've worked at companies that require candidates to have a 4-year degree, a policy I thought was grossly unfair.
Why don't I have a degree? For some reason I've never understood, a CS degree that my University required calculus. I can't hack calculus... my failing that class multiple times destroyed my self-esteem to the point where I dropped out of school rather than try again.
What does calculus have to do with programming? From my experience, nothing. Absolutely nothing.
I don't have a degree because the degree program required a difficult, pointless, and utterly useless class. After a few years, I realized it wasn't me who was dumb. And that was confirmed when I entered the industry and began interviewing candidates who had calculus degrees, but couldn't code worth crap.
Obviously, maybe I'm a weird and special case, but you can see that I really don't care whether a job seeker has a degree or not, I'll give them a shot either way. If they can hack it, they can hack it.
(Oh, sure, there's going to be someone who stands up and goes, "well what about programming video and audio compressors?" But that's not using calculus as a *programming* concept, that's using calculus because it just happens to be relevant to that problem domain. Just like you'd be better off knowing the GAAP if you're writing an accounting application.)