Slashdot Log In
Math And The Computer Science Major
Posted by
timothy
on Wed May 05, 2004 09:12 AM
from the single-digits-are-best dept.
from the single-digits-are-best dept.
An anonymous reader writes "What sort of math are CS majors expected to take? Why are these classes useful? Does programming really have that much to do with math? Lineman.Net has published an article that answers these questions and more. If you are considering a CS degree, be sure to give it a look and make sure you are taking steps to prepare for your college career."
This discussion has been archived.
No new comments can be posted.
Math And The Computer Science Major
|
Log In/Create an Account
| Top
| 1203 comments
(Spill at 50!) | Index Only
| Search Discussion
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Certain types of programming... (Score:5, Informative)
(http://tomcopeland.blogs.com/)
And what the article said about game programming is right on... trying writing even a simple Brickout clone without knowing basic trigonometry and you'll run into problems.
Re:Certain types of programming... (Score:5, Insightful)
(http://www.rootedbox.com/)
Re:Certain types of programming... (Score:5, Insightful)
Re:Certain types of programming... (Score:5, Insightful)
(http://www.mdlug.org/ | Last Journal: Thursday February 06 2003, @01:56PM)
Re:Certain types of programming... (Score:5, Insightful)
Re:Certain types of programming... (Score:5, Interesting)
See, and that is the problem. Most jobs today in proramming require a BS in CS. Yet the majority of jobs I see have requirments like:
Backend developer -Must have BS in Computer Science -Must have 3-5 years Java experence -Must have experence in Oracle, SQL server, etc -Must be able to write SQL code for enterpise applications.
You don't need uber math skills to write good SQL or Java code for a database application. I found after college that while my math and writing skills had improved since high school, my database knowledge was lacking so I went to a technical school. There really should be some sort of IT degree that has a focus on practical knowledge rather than mathmatics. You will use high level mathmatics if you are working on video games, or CAD applications. But most programmers end up writing database interface tools.
I'd like to see some type of IT degree that taught programming, networking, and troubleshooting. I'd rather hire a programmer that had a strong foundation in networking concepts than one who aced calc 3.
Hell, they should also stress English judging by many of the programmers I've met.
Re:Certain types of programming... (Score:4, Insightful)
(http://www.thestollfamily.us/)
* Object oriented design
* Reusable components
* Disconnect clients
* Distributed services
* Application integration
* Replication
* Remote objects
Web applications raise the bar when you start talking about issues such as:
* Transactions
* Concurrency control
* Unpredictable user interactions
* Browser incompatibilities
* Security
Even if you don't use the computational aspects of math it doesn't mean you aren't using math or that math isn't necessary for certain CS fields. Math is the basis of all CS. Without a good understanding of math and the critical thinking skills that go along with it a person in CS becomes the type that just gets the job done. A person with strong math skills is much more valuable.
Re:Certain types of programming... (Score:4, Insightful)
(Last Journal: Thursday February 05 2004, @11:30PM)
And that's all bullshit. Believe me. I'm a computer science major, and I connect web sites to databases. Everything that you do in the business world (business apps, yada) has very little to do with pure computer science.
The closest thing to it is probably doing the DB work itself, and making sure that your tables are normalized, and that you have the keys / indices done correctly. Sorry, but everything in your list is basically just a concept in programming, which you can learn outside of the realm of computer science.
Re:Certain types of programming... (Score:5, Insightful)
If you can publish something you developed in a scientific peer-reviewed journal, it's computer science. If you simply put together something from prefab pieces, it is NOT computer science.
Anyway, saying that you need to know computer science to program a frontend to a database is like saying you need a degree in electrical engineering to wire up a house. The truth is, there are way too many people with CS degrees and not enough CS positions. But don't mix CS with coding. They are very far apart.
Certain types of jobs... (Score:4, Interesting)
(http://www.agt.net/public/bmarshal/homepage.htm)
If you get deeply into the science of Computer Science, you can certainly get into some math. But, it is important to note that practically no one gets employed as a computer scientist (except for people who stay in academe and study and teach Computer Science).
Most people going into CS expect to get jobs as systems developers of some sort. 'Code monkeys' might be the bottom of the pack; frequently they are just trained tool-users who write snippets of code behind buttons.
But to be a great developer is to be a master of a craft, not a scientist. This particular craft is mental - it is, as you imply, a matter of critical thinking and problem solving. It is being able to look at the world in different ways and being able to see how to express an aspect of the world using the tools of your craft. It is a craft with many principles and design patterns and ways of looking at the things.
To be a great developer requires talent. Picking candidates that are strong on math may be a useful way of identifying people with the talent. (This approach screws people like me, however; I believe that I have a great deal of talent in the craft, but my brain crapped-out after basic calculus.)
The vast majority of developers require no more than:
- basic algebra
- basic trig
- basic statistics
Some people need basic geometry.Sure, if you are getting into signal processing or astrophysics or a variety of other areas, you need lots of math. But that isn't where most people are going. If you are, and you are into math, great; otherwise, don't sweat it.
You don't write good SQL because you are good at math (as others have apparently suggested); you write good SQL because
Nothing beats talent plus experience.
Re:Certain types of programming... (Score:5, Insightful)
(http://matthewtrumbell.com/)
-Because that person might be writing your SQL queries too.
-Because elegant and reusable code usually comes from the minds of people interested in solving problems.
-Because that person might be able to understand the problem domain better than some I-don't-give-a-shit-about-anything-other-than-code programmer.
-Because that person might work in other areas of development eventually. Did you hire the person for ONLY their database-to-webserver knowledge? Was that shortsighted? Maybe you'd rather have a well-rounded and generally smart person to solve those new problems.
We have a very rigorous hiring program at the firm I work for. We look for intelligent people with a wide base of skills who we think can easily adapt to new problems and environments. We DON'T look for specific knowledge in anything but our most senior positions. We have had wild success in finding very talented people because we are not looking for a person with skill A. How long will skill A be relevant for anyway? Will the person with skill A be able to do good work if we try to teach him skill B later? That seems pretty important to me.
So the question is really: what are the most valuable qualities that a new hire can have? If your firm thinks that 3+ years of java experience is the most important quality a new hire can have, then I really don't want to work for them. I have over 3 years of java experience, but I in no way consider that my most valuable quality as an employee.
Taft
Re:Certain types of programming... (Score:5, Insightful)
Anyone who thinks programming is "wiring front ends to databases" is probably a coder. Yes, there is quite a bit of that kind of work in the business space, but a programmer will not wire your database to a GUI: they will come up with tools to do so more effectively. Similarly, anyone who thinks "skill X" is the be all and end all of programming is probably a coder. (I once interviewed a guy who was pretty good with Oracle. Commanded a six figure income. When he found out that the offered project used SQL server 2000, he mocked our company, to our face and to the niche community we work for. In a bit of "the best revenge is success", he solicited *us* for work after the dot com crash. Seems he was out of work for over a year due to his disdain for anything but his tiny niche skill, and our project was looking pretty good.
Re:Certain types of programming... (Score:5, Insightful)
(http://overcaffeinated.net/ | Last Journal: Friday June 11 2004, @02:53PM)
Ok. Let's nitpick: It's not "Here here". It's "Hear, hear". Why do I bring this up? Because so many people here are saying that yes, you need math and problem solving skills. No one mentions that being able to communicate effectively (and correctly) is also very important.
I think the new tendency in the IT industry is to have well-rounded people who can do a good technical job, but still perform passably at the graphic design and copy writing stages. I'm not just talking about Web Development here. Every area of IT is approaching this point.
As deadlines and Time-to-shipment get smaller, programmers are getting thrown more to the forefront of the development cycle. This means dealing with humans, whether it be through well structured language, fanciful graphic design or good interface design. A lot of people are still stuck in the "I'm a rilly good coder, I don need that language stuff aniways" attitude, and I believe that is detrimental to the industry as a whole.
Re:Certain types of programming... (Score:4, Insightful)
(Last Journal: Wednesday July 06 2005, @10:01PM)
I once interviewed a guy who was pretty good with Oracle. Commanded a six figure income. When he found out that the offered project used SQL server 2000, he mocked our company, to our face and to the niche community we work for.
That's nothing to do with the point you were making.. he was just a vendor/method snob. Most Linux/BSD/*NIX people would similarly mock a company who used 100% Microsoft solutions. Most C++ programmers mock Visual Basic programmers. Most Oracle geeks would mock a company who relied on mySQL, and so on.
Come on, if you're suggesting SQL Server 2000 is in the same league as Oracle, that's just plain wrong. He shouldn't have been bagging on your company, that's unprofessional, but the fact he thought SQL Server 2000 was stupid was hardly an indication he was a moron.
Re:Certain types of programming... (Score:4, Interesting)
Would you want to work with someone so dedicated to a skillset that they would deride your company during an *interview* and was so fanatical about it that he would prefer to burn his savings than be gainfully employed? In my opinion, he was a *coder*, which was my point. He couldn't see past his coding skill set to understand that I didn't need regional failover between sixteen servers, I needed someone who could understand third normal form, write SQL queries and learn our system enough to be a valuable team member.
Re:Certain types of programming... (Score:5, Interesting)
(http://slashdot.org/)
I really like the way that sounds, and I agree with you whole-heartedly. Unfortunately, i believe that attitude is completely divorced from the reality of most (but not all) companies.
After 14 years in the industry with a BSEE and MSCS, my company closed it's St. Louis office in late 2001. I was out of work for 7 months in 2002 and underemployed for a year and a half after that. I have you're so-called "wide base of skills," but they weren't the right ones. Companies here in St. Louis were not at all interested in poeople who can "can easily adapt to new problems and environments," they were looking for those specific technologies and if you didn't have those 3 years of J2EE experience, they didn't want to even acknowledge your existence.
Of course I attribute this to the typical HR department, who wouldn't know a good engineer from a hole in the ground. So their method of separating the wheat from the chaff is a score card based on what technologies you have on your resume. So even though I had done Java and was well acquainted with OO through my experience and schooling, they wouldn't even talk to me because I didn't have "work experience" with J2EE.
Some of us who have families to support don't have the option to just walk away or cherry-pick companies. We're forced to take what we can get. This attitude runs rampant through corporate culture. I would love to be less pessimistic, but unless there is some massive groundswell, nothing will change.
Re:Certain types of programming... (Score:5, Informative)
(Last Journal: Saturday May 22 2004, @12:57PM)
Knowing good math.. makes you a better programmer. I would go as far as to say that computer science _is_ math. Knowing how to hook up a DB to a web front-end is not computer-science. It's a trade skill, like plumbing.
The difference between some web-scripting guy, and a guy who knows CS, is like difference between an automechanic and an automotive engineer. The engineer might not be able to fix your engine, but he understands the workings of it much better than your average mechanic.
From my perspective, being some random code-monkey is not too different from working at McDonalds. Pay might be better, but the work is still shit. Having a solid CS grounding lets you work in places and on problems that are actually _interesting_ and challenging. It allows you to actually contribute something new to the body of knowledge associated with computation.. or apply it well to some novel field.
I can pick up and learn a new language or API given a few months. It would take years of focused study for a random PHP programmer to acquire the knowledge I have.
Not to say that I'm special or anything.. but I've spent 5 years working my ass off to get myself to a proficient level in this area of study.. and most people who want to reach that same level will also have to spend several years doing it. It's just a question of wether you decide to do it early in your life (university), later in your life, or not at all.
But it's definitely worth it.
-Laxitive
Re:Certain types of programming... (Score:5, Funny)
(http://www.geocities.com/bgtrio | Last Journal: Thursday April 24 2003, @10:32AM)
Re:Certain types of programming... (Score:5, Interesting)
And as was said before, if you don't know math, good luck writing video games. Games like Quake perform tons of mathematical operations every second. (I remember reading from Michael Abrash that the Quake engine itself used 2 or so FP operations in the inner loop itself.)
Also, the ingenuity that comes with being around elegant mathematics created from crazy equations REALLY helps in writing elegant and efficient algorithms. They are very similar in many regards, and the concepts transfer well.
Linear Algebra and Calculus (Score:5, Interesting)
(http://www.glowingplate.com/)
And as was said before, if you don't know math, good luck writing video games. Games like Quake perform tons of mathematical operations every second.
For sure! I don't know Quake personally (I'm not into video games at all), but I assume that it's another one of the 3D videogames where your surroundings change with your perspective.
That requires loads of matrix transformations directly out of linear algebra [falstad.com]. It sounds terrifying, but it's just about having a group of numbers called a matrix. By multiplying them with a bunch of (x,y) coordinate in a certain order, you can do all sorts of warps and shrinks and stuff. If those (x,y) coordinates correspond to a bitmap of an object, you've just warped or shrunk the object, exactly as you'd have to do in a 3D maze or similar.
Then, there's calculus. There are two courses *everyone* should have to take in high school - auto mechanics (so you know how to change a tire, among other things) and calculus. Calculus means "small stones", as for counting. It's all about rates of change. You could tell the speed of your car by looking at your odometer and your watch, but that will give you only the average speed over a given time or distance. The speedometer, on the other hand, gives you your instantaneous speed - which is the derivative (calculus term) of your position (odometer) with respect to time. This makes sense when you think about it: speed is the rate of change of position.
(Actually, it's velocity, but that's a whole other kettle of fish if you don't know about vectors from Linear Algebra yet.)
Don't worry about the math. It's usually the easiest course in your university schedule - and I tell you that as someone who failed high school math classes constantly and who dropped out of high school because of math (that's a long story, though). Math *is* your friend. How's that? You can be guaranteed that if you do all your homework, you will get an A+ in the course. That's it. No reading, no stupid assignments which get marked by TAs who know less than you, nothing. It doesn't even matter how good or bad your teacher is. Just do all your homework and you'll get an A+. It's a non-linear relationship, do 50% of your homework (every second assigned problem) and you'll get a B+. Do 25% of your homework and you'll get a C+.
As an EE, I had to take 7 university level math classes.
Re:Linear Algebra and Calculus (Score:5, Informative)
Calc I or better yet, a calc heavy Physics I is the kind of class that will alter how you view the world. It's a must. After that, you might not use a ton of the math you learn in university at work. That said, taking classes in how to program mathmatical algorithms greatly helps me do my job and understand how computers work.
CS students are blessed/cursed with the likelyhood that some of the math that you learn will be from your CS department. It doesn't make matrix multiplication that much more pleasant, but it is interesting to write a simple search engine algorith that matches a terms in a documents to a vector of search terms.
I disagree with you on stats class. We were allowed to use Excel to do some of the gruelling number crunching for us once we'd done a handful by hand. Now, I can't do any of it by hand from memory but I'm ok with a book. I do understand what they heck is going on with some basic stats work and have a feeling for how to go about doing some vaguely interesting analysis of things I encounter.
The number one reason to learn advanced math is so that when you sit down in a movie and they've scribbled jibberish across a chalkboard in the background, you can follow what's being done, or at very least recognize the symbols.
Re:Certain types of programming... (Score:5, Insightful)
(Last Journal: Thursday January 15 2004, @12:58PM)
I agree with you, but only to a point. In most cases, your employers will just care that it's done on time and under budget. But what happens when system performance is not acceptable? That's when you've got to figure some things out. Look for performance bottlenecks, etc. Times like this are when a math background (and I consider algorithms to be math) will be a life-saver.
Just looking at my co-workers, there are some who have strong math backgrounds. There are others with pretty minimal backgrounds, and it really shows in their code and problem-solving abilities. And guess who my boss has more faith in?
As a side note, I'm not saying that any of this requires formal education. You can learn a lot of this stuff on your own, if need be. It's just that if you've been to school, there's a hope you had to get through these classes and at least some of it stuck.
Re:Certain types of programming... (Score:5, Insightful)
I do enterprise Capacity Planning and Performance Tuning for big databases. (Anywhere from 100 to 1000 Gb) I cannot tell you how often poorly designed application architecture causes nasty performance problems, precisely because management thinks that anyone can connect a web front end to a database. Our typical developer has no idea how to optimize for db performance. The application owners don't like hearing you need to re-design your application, because we can't tune it any further. I am tired of telling them that throwing faster hardware at the problem will not help, as a faster machine will only choke the database harder. It is obvious to me that these "developers" do not have adequate problem solving skills to effectively do their jobs. Their code may be clean, but the application design is so poor that its performance will always suck.
Math (and all problem solving skills)are very important for a developer, otherwise one is just a code monkey.
Re:Certain types of programming... (Score:5, Insightful)
(http://jedidiah.stuff.gen.nz/wp/ | Last Journal: Wednesday April 04 2007, @02:51PM)
On the other hand, when your job of just connecting a server to a database gets outsourced to monkeys in the congo, the person who learned the math and the science will be getting a serious software engineering and design job.
Jedidiah.
Re:Certain types of programming... (Score:5, Interesting)
And if you do not develop the joy of learning while you are in school, most reputable employers will figure that out before you even get finished with interview...they won't be happy you do not wish to learn.
By not getting a well rounded education, your brain as a muscle, will get soft. If you ever find a niche, you will be fed and cared for as a mushroom.
And you might find that the world is a bigger place than what someone will pay you for. Math and science education is central any country's future. You should want to learn it for that reason alone.
Companies run by math and science illiterates are an abomination, and they are no fun to work for either.
Here here (Score:4, Interesting)
-
90% of the jobs out there are development positions. These require basic programming skills, understanding of the newest buzz technology and an eye for asthetics.
-
10% of the jobs are computer science jobs. These usually entail designing/optimizing algorithms or interfacing with "sciency" types like engineers(gasp), physicists and chemists.
A good COMPUTER SCIENCE degree is designed to prepare you for 10% category. If what you want to do is build java apps and database applications then go to college and learn those skills instead of all of the theory involved in a CS degree.Re:Certain types of programming... (Score:5, Interesting)
Since we were in the R&D wing, we threw the whole thing over to the operations people about the time I headed back to school.
The next semester in school I had a databases class. I was baffled by the lack of understanding we had of even basic database design.
Later I found out that a single operations guy did a complete rewrite of our code in about a week. He had all that useless math background and database experience. His version ran on a single server and was usually at only 50% load.
There are reasons to hire well trained and experienced programmers even for tasks that seem simple.
Re:Certain types of programming... (Score:5, Insightful)
Re:Certain types of programming... (Score:5, Insightful)
(http://www.boughyah.org/)
Other programming...calculating and distributing load, memory management, all math based. If you ever write anything with sound or electricity (lots of embedded stuff), it's all math based.
Many CS majors will enter the work force only to do data moving programming (ie, take form input, store, retrieve, repeat). However, even those sytems have to have somebody load balancing them which gets into timing and...well, we all know how it goes. Math isn't just a filler class in a CS majors curriculum.
--trb
Re:Certain types of programming... (Score:5, Informative)
(http://www.mccrappy.com/ | Last Journal: Tuesday January 25 2005, @01:29PM)
Dot products and Cross products are your friends
Re:Certain types of programming... (Score:5, Insightful)
(http://theari.com/)
Any programming at all involves math. The better you are at math, the better a programmer you will be. If you are not good with math, you will not be a good programmer. HTML and what most people do with PHP et al. is not programming - it is markup.
My CS degree required that I take Calculus I & II, discrete math, a statistics course (I took the harder of the two accepted for this, a 400-level math), and a math elective or two. I took a graduate-level cryptology special topics class for one of the electives - it was three CS students and about 6 math graduate students. At the end of the semester, the professor wrote a list of 3-digit numbers, most of them on the range [400,599], and said "This is a list of math courses we've covered at least half of in this class. Take them if you want to know more." There were about a dozen numbers on the list. My other elective was Calculus III, which I took concurrently with Crypto, across the hall, from the same professor. That was a challenge, as he made it extra hard on me in both classes (both because I'm good but also because I'm a smartass). He threatened to encrypt my Calc final.
At the very least, a programmer should have discrete math, multi-dimensional Calculus including working with series and sequences, number theory, linear algebra, and diff-eq (I regret not finding time for the last two).
Like I said - your abilities as a programmer are directly proportional to your abilities as a mathemetician. There's not a science you can study properly without using math.
Re:Certain types of programming... (Score:5, Interesting)
Re:Certain types of programming... (Score:5, Interesting)
Re:Certain types of programming... (Score:4, Insightful)
Re:Certain types of programming... (Score:5, Insightful)
I don't completely disagree but there are a lot of issues; it's not just that there are professors who aren't interested in teaching. I'm an assistant professor in a math department. I teach numerical analysis to classes comprised of about 75% computer science majors and the rest math majors. There are several things beyond the control of a professor that can impact the quality of instruction. One of the biggest is that many of the students are not interested in the topic; they just want to pass to meet their departmental requirement for a numerical analysis course. Hence I get students trying to copy homework or codes. Just last week I had two students turn in spline code that was a bad C translation of Fortran code. I haven't hunted down the source but their codes were identical and neither student knew Fortran. Having to check for this sort of thing takes time and does not make it easy to teach.
To make matters even worse, the students put off taking numerical analysis until they are about ready to graduate by which time they have forgotten much of the calculus they learned in their first two years. In less mathematical disciplines, many students put off taking calculus and end up forgetting their high school math. And that's assuming the high schools did an adequate job preparing them for calculus in the first place.
And then there are teaching load issues. Math departments generally teach more courses than any other department with the exception of English. Everyone has to take some math. Proportionally we are overloaded with classes to teach. Further university guidelines on tenure are often not written to take this into account. Mathematicians at many universities are expected to write as many papers, get as many grants and supervise as many graduate students as computer science professors while teaching more courses. For some reason this doesn't always work even when the professor has the best of intentions.
The closest thing to a solution that I know of is to hire non-tenure-track lecturers to specialize in teaching calculus, college algebra, etc. That is already done at most schools but often there are rules about retaining such faculty. Even when they are doing a great job (and many do---teaching is what they do and they take it seriously) university policy can prohibit renewing their contracts past an arbitrary time (e.g. 3 years). This makes it difficult to maintain a staff of good teachers.
There may be professors slacking off but in my (possibly biased) opinion the institutional problems are more common. Students shouldn't be able to put off taking math. The universities should hire some portion of permanent faculty that is dedicated to teaching. And promotion guidelines should be written to reflect what the university realistically expects from both tenure-track and non-tenure track faculty in each department.
Possibly that's more griping than you wanted to hear about university politics...
Re:Certain types of programming... (Score:4, Insightful)
(http://www.intelligentblogger.com/ | Last Journal: Monday August 27, @11:47AM)
Not to defend the guy, but sometimes people use their knowledge unconsciously. For example, when I worked out a new collision detection algorithm for 2D games, I didn't need to write down the Big-O formula because it was straightforward enough for me to visualize the equation in my head. It took me a lot of time to realize that I did that,
One has to wonder how many CompSci majors have claimed that it was a waste of time, then went off to use their education in the back of their head.
Re:Certain types of programming... (Score:4, Insightful)
(Last Journal: Saturday October 01 2005, @10:40AM)
Many of the things that programmers take for granted as 'baby slobber trivial' are actually applications of advanced math - stuff like boolean operations, one to many relationships, many to many relationships, arrays with more than 3 dimensions, shortest path, sorting routines, loops, recursion, different types of conditionals, etc. These are simply part of our thought processes, an extension of how we think - but we were not born with this knowledge. Anybody that has spent time reviewing code from a 'self taught coder' knows what I'm talking about (no offense to the self taught coders.)
A Warning (Score:5, Interesting)
(http://ziondreams.com/)
If you truly love programming and want to code for a living, do NOT attend such Universities as DeVry, many State Universities, or other small "tech" schools. This may sound like common sense to some, and outright madness to others, but trust me on this one. I personally am about to graduate from DeVry, and, although it's surprising reputation, they in no way prepare a student to enter the world of programming. The majority (I'd say 70%) of the skills I've obtained have been acquired by means of self-teaching and learning from friends.
More and more, I've been seeing that "programming" degrees focus much more on the management side of things, instead of the developer role. Perhaps this is because of the apparent problem of off shoring IT jobs? The main problem is not that the Universities have changed to this approach, it lies in the fact that the said schools teach in such a manner, WITHOUT advertising so. It brings about a sense of deceit and trickery...but perhaps that's what they were going for?
Re:A Warning (Score:5, Insightful)
This is pretty much the case no matter where you go to school. A good school will only give you the tools and understanding to be more efficient at acquiring and utilizing the skills. A good school will not be teaching you those skills.
Re:A Warning (Score:5, Insightful)
College (Score:5, Interesting)
(http://www.dufftech.net/)
College is supposed to teach you how to think & learn... it's become a necessity since US secondary schools are so malfunctional. Your college classes should give you a base of knowledge about whatever you are studying, and the rest is up to you.
The reason that top schools like MIT are top schools is that they force their students to explore and learn new things. If you are a serious student, you can come away with a good education from almost any school.
Re:A Warning (Score:5, Interesting)
Re:A Warning (Score:4, Funny)
Good point. (Score:5, Insightful)
(http://nojailforpot.com/)
Modded "flamebait" but it's a good point. DeVry, ITT Tech, Phoenix U and so on have questionable standards. Why? Because their main purpose is to separate students from money, not teaching. I think that even a more or less unknown state college is better, at least their mandate is to teach, not separate money from the marks. The parent also mentions that he thinks these schools primarily teach management, and that is certainly true of Phoenix, who's primary clientele is management looking for the coveted Masters so as to be able to move on to tenured PHB status.
oh good lord yes (Score:3, Insightful)
(Last Journal: Monday February 16 2004, @11:20AM)
Re:oh good lord yes (Score:5, Insightful)
Conversely this is the very reason why physicists and mathematicians have good job opportunities in IT, consulting or banking. In many cases it's easier to teach a physicist programming (or economics) than to teach a programmer the relevant understanding of mathematics.
Of course it depends on what you're progrogramming and of course a programmer who is good at the kind of maths required for the job will have the edge anyway...
Re:oh good lord yes (Score:5, Insightful)
(http://slashdot.org/)
In a Linear Algebra class, it is useful to check yourself by computer, and you can really get a good understanding of operations like inversion, Gaussian reduction, and determinanat computation by writing the algorithms.
Moving on to a course in Nonlinear Dynamics, a computer is almost an essential tool for modeling dynamical systems that can't be solved in closed form. I had to write my own methods in Mathematica to model these sytems, seek out points of equilbria, and examine their stability. Want a hard core programming exercise? Write a program that will attempt to find Lyapunov functions for a given dynamical system - that will really test your self-worth as a programmer.
Even in a course like Abstract Algebra, you're going to need a grip on programming to get a deep understanding it, for example, reducing polynomials in GF(256), as is done in Rijndael. You can sit there and mechanically do it out by hand if you like, but if you want to get anywhere, use a computer. Write it in C++, another good programming exercise if you want to link mathematics and computer science.
Most math majors in their time will need to take a numerical analysis course, which will include most of what I have previously mentioned. Numerical Linear Algebra, root-finding, interpolation, and differential equation solving. It's a much larger challenge to write an RK4 solver for a given differential equation than it is to move information from a database to the web. You'd have alot more self-respect as the 'computer guy' if you wrote a program to fit an optimal Bezier curve or cubic spline to a set of points, instead of simply hitting 'smoothe curve' in Excel. You'd also understand why the 'smooth curve' function doesn't work so well sometimes.
just my $.02.
HS math question. (Score:5, Interesting)
(http://www.grub.net/blog/index.html | Last Journal: Wednesday June 27, @08:48AM)
Not entirely unrelated question about high school math: A couple of weeks ago I was out with my little brother who recently turned 18 for a beer and to shoot pool. He was having trouble making shots so I said "Imagine the table is a large sheet of graph paper when you plan your angles and shots." he said "I've never used graph paper."
He's graduating from Grade 12 this year, am I just a relic[0]? What do schools use now to teach geometry? I hope it's not all done on a computer, the practical hands-on stuff is invaluable.
[0] I'm 38; mom died in '82, dad remarried and could still get wood.
Re:HS math question. (Score:5, Insightful)
(http://www.boughyah.org/)
I'm amazed these days at what kids use calculators for. My buddies fiance is student teaching a class of 8th graders and says that for simple *addition*, kids are breaking out their TI's. Really, if you can't add 96 + 48 within a few seconds in your head, you've got issues. Graph paper is going the way of the dodo, unless you're an electrical/computer engineer, then you take stock in engineering pad companies.
--trb
Re:HS math question. (Score:5, Funny)
(http://www.linuxchick.org/ | Last Journal: Thursday January 23 2003, @11:50PM)
--mandi
Re: HS math question. (Score:4, Funny)
> my little brother who recently turned 18 for a beer
In my day we turned 18 without any such incentives.
Nail on the Head (Score:5, Informative)
(http://millahtime.blogspot.com/ | Last Journal: Friday July 15 2005, @01:00PM)
Re:Nail on the Head (Score:5, Interesting)
(http://www.intelligentblogger.com/ | Last Journal: Monday August 27, @11:47AM)
My best suggestion would be to shy away from any school that skips over the theory and math behind computational sciences. I myself ended up skipping the degree all together and picked up the various textbooks and papers necessary to educate myself in the field. That's not the path for everyone (especially if you're not very self-motivated), but for me it was better than trying to sort through which school was teaching the real thing and which one was dumbing it down to improve attendance.
Re:Math requirements? (Score:4, Funny)
(http://www.cs.utah.edu/~andersbr/)
Computer Science != Programming (Score:5, Insightful)
Re:Computer Science != Programming (Score:5, Insightful)
Re:Computer Science != Programming (Score:5, Interesting)
(http://www.clickdave.com/)
Re:Computer Science != Programming (Score:5, Insightful)
MANY CS majors become coders, and it is a perfectly acceptable outlet for the skills, knowledge and wisdom gleaned from a good CS degree program.
Just because some people are fortunate enough to be able to pursue a career in academe or in bleeding edge R&D or other theoretical pursuits, does not mean that good programming is not applied computer science.
If anyone believes otherwise, have another gander at the standard courses in a modern CS degree at any reputable university. You'll find tons of software design theory that can be DIRECTLY applied to writing software.
Math and CS (Score:3, Interesting)
Why is maths useful for computer scientists? (Score:5, Insightful)
Only a Mickey Mouse comp sci course would not require maths to quite a high standard.
Amusing Anecdote (Score:4, Interesting)
(http://www.intelligentblogger.com/ | Last Journal: Monday August 27, @11:47AM)
Suffice it to say, it felt really good to throw Amdahl's Law [wlu.edu] at him and call *bullshit*. He didn't talk to me after that.
Because you need it. (Score:4, Informative)
I don't know about your experience, but I find that post bachelor research in CS to be between 5 and 20 years ahead of industry. Some of the research goes no where, but some becomes the bleeding edge, then the mainstream. Like relational databases. Started (or first written up) as a paper in 1969. If you want to see where theory hits programming, check out game development. That is where most of the new technologies first hit development and get used successfully (the game may suck, but it becomes a showcase for some new techniques). Writing code for the TMS320 (a single chip digital signal processor) is an excercise in math: you spend more time modeling the code in Matlab than you do turning the code into C or assembly.
I am also finding that graphs (not those blasted pie charts) can be useful in solving complicated problems. And some of the tasks to do, can be described with names like traveling salesman problem or minimum spanning tree. One of the first shocks I ever got in a meeting full of programmers was having to spend most of it explaining graphing algorithms and why algorithm X would solve the problem and why the proposed solution in the meeting would be a bad one. It would be hard to correctly, or quickly, solve a minimum spanning tree problem if you could not recognize it, nor understand what the algorithms were trying to solve. Education is about learning to solve problems and recognizing new situations resembling a problem you already know how to solve. Being uneducated is like only having a hammer to solve problems: you can only fix things by bashing them, good for nails, but not a good tool to use to remove screws and bolts.
It is also fun to explain to the PHB why something he asks for is totally impossible. Usually it is headbangingly painful. .1 cannot be represented as a floating point number, but that ended up being a waste of time. Or how, to answer a question he had would require a time machine.
Him: This number must be absolutely accurate, no rounding is allowed.
Me: I can write 2 numbers on your notepad here that cannot be represented the way you describe.
Him: BS, there ain't no such animal.
Me: (writing) e and pi.
Him: (scowling).
I once tried to explain how
Our society does not value intelligence, and has been actively disparaging intellectuals for 200+ years. Our country may have been founded by intellectuals, but de Tocqueville pointed out the disparagement of intellectuals back in 1835 in Democracy in America.
Heh. Try Neural Networks without linear algebra (Score:3, Insightful)
Of course you need math... (Score:3, Funny)
Re:Here it comes ... (Score:5, Interesting)
Computer Science programming - embedded, drivers, algorithms, etc...
Business programming - This involves moving regular data between buckets. Math isn't so important as common sense. Both seem to be in short supply.
It's been my experience that CS majors can perform well doing either. But there are other skills necessary for business programming that will allow a mediocre programmer to produce excellent work (such as knowing the business or being a wiz with SQL).
I speak from the perspective of a math major who does business programming. I work with a lot of other people who do just great but occasionally run into a brick wall when some strange math comes up. These tasks come up only rarely. The most common place to see a math weakness manifest itself is when they foolishly matrix a couple sets of data and everything grinds to a stop. Even that is easily fixed (as long as they tested full sets of data before going into production). The only time I've *had* to be involved was implementing some probability and statistics packages.
All things being equal, I'd take the guy with math. It means he can think, comprehend written works and probably has a good sense of when his numbers add up (very useful in business programming).
co-workers without a good math base... (Score:3, Insightful)
Statistics also important (Score:5, Insightful)
(http://www.memerocket.com/)
Re:Statistics also important (Score:4, Insightful)
(http://restifo.smugmug.com/)
Such behavior is incredibly prevalent in all fields and industries. I've been in meetings and seen analyses that make my skin crawl because people make fundamental mistakes when using statistics. Part of it is due to the fact that it's not something that's integrated into any cirriculum when it should be. Another part is due to the age-old problem of using a hammer on screws because all you were ever taught was using a hammer.
The final part is a basic misunderstanding of probability, statistics, and math. I've actually had a customer want me to guarantee no failures by developing test results and analyzing them with statistics to "prove" no failures before a certain point. I tried explaining how one can never absolutely rule out such things with stats and prob. There's always a chance, no matter how small.
Double Major (Score:5, Insightful)
I usually thought of it as the difference between learning how to program vs memorizing a bunch of useful code snippets and how to translate them to different languages.
I recommend (Score:5, Informative)
Discrete Mathematics (some call it Applied Mathematics)
Calculus
Number Theory (Cryptography)
Linear Algebra
I have a CS degree with a math minor and have been completely surprised at how often I've used the math portion of my education in the workplace. I'd recommend taking a good mathematical modeling course as well, as it typically offers a great mix of math, engineering, and CS.
Programs are math (Score:4, Interesting)
(http://www.nada.kth.se/~orre)
The reason we take math... (Score:4, Insightful)
18 credits (Score:4, Interesting)
(http://slashdot.org/ | Last Journal: Wednesday September 24 2003, @10:01AM)
Calculus 1: 5 credits
Calculus 2: 5 credits
Calculus 3: 5 credits
Matrix Algebra: 3 credits
Although the University offered minors, my college (the college of letters & sciences) did not. If they had, I would have taken the remaining two credits in order to get the minor in math.
IMHO, the assistance that math has provided me has been invaluable in my career. NOT because I use calculus on a day to day basis, but because it forced me to develop critical and systematic thinking skills. And THAT has been invaluable. At the time I hated it, but in retrospect it was really good.
$.02.
CS = Math (Score:3, Insightful)
(Last Journal: Thursday December 09 2004, @11:11AM)
Well it all depends (Score:3, Informative)
Now for math, personally I was required to take a fair number of courses during my first and second year. While I didnt find it all relevant to CS, there definately are reasons to take math courses to help you in CS. Proving runtimes is mainly math, encryption is mainly math, etc.
Also, I just want to make a note that CS != programming. You take a 4 month course to "learn to program", and you take a 4 year program to begin learning computer science.
Computer Science AND (Score:3, Insightful)
Speaking as a Math and Comp Sci double major (Score:5, Insightful)
On the one end of the spectrum is pure theory, and proof, and on the other hand, we have complete practice, and "get it done now".
Math is a great theoretical background for computing, and made some of the algorithmic courses a breeze.
Ironically, I found the proofs in algorithms classes an attempt by computer scientists to say "see, we are a real discipline, we do proofs too", but I found that I wanted the CS courses to be a counter to all of the proofs and theory I got in my math courses. I wanted some "hands on" learning.
Once I got out in the real world, especially with languages like Java, even the CS theory/practice (this is a hash table, now write one), I found that most of the data structures/algorithmic stuff had been written and I just filled in pieces.
Where am I going with this? I guess basically that math is useful for comprehension in CS classes, but depending on the programming you do, you may not even use the CS you learn in the real world, let alone the math. But understanding is good.
Re:Speaking as a Math and Comp Sci double major (Score:4, Insightful)
(http://slashdot.org/ | Last Journal: Friday April 16 2004, @05:07PM)
Computer Science is about researching and developing the mathematical theories behind the code. Why are certaing queing algorithms or sorting algorithms "better" than others? What is the "best" way to implement a neural network for a k-class classifier? What is the fastest way to get a packet from point a to point b? These problems have more to do with math, and almost nothing to do with if, switch, and for.
Only one problem with that article: (Score:5, Insightful)
(http://ottodestruct.com/)
If you have the chance to take calculus in high school, I may surprise you with my advice. I would not automatically jump at the opportunity for a couple reasons. Please forgive me as I climb onto my soapbox, but keep in mind that I am a math teacher and I know a lot of this from experience.
First, high school calculus teachers tend to be the teachers in the math department the longest. The problem with this is that while these teachers are more experienced, they have been away from calculus longer than the other math teachers in most cases. Besides that, these teachers are often near retirement and may not be as motivated as younger teachers.
Second, calculus is the upper-crust of high school math. In college, it's one of the lowest math classes offered. This results in a completely different teacher mentality. A college calculus teacher will be used to working with struggling students because for many of them, that is the toughest class they will ever have to take. But high school calculus teachers will be more used to working with the top students in the school. If you aren't especially gifted in math, you may find that you don't get what you need from these teachers.
Here's the problem with those ideas:
1) In Calc I in HS, you're looking at a class of 30 people. 50, max. In Calc I in college, you'll likely be in a class with something on the order of 100-200 people. See, *everybody* takes Calc I their first year, not just the comp. sci's. All engineering majors, all the math geeks.. Hell, even English majors probably have basic math as a requirement... So most of the time, it's a big class, usually a seminar type of deal. If you're having a hard time with it in there, then you'll also likely need to take another not-for-credit class where they can give individual instruction or take some extra tutoring on the side. Whereas in high school, you've not only got a smaller class, you've got an experienced math teacher, who likely knows his stuff, and you've got a year to learn it as opposed to 1 semester only. Okay, so the HS teacher may be less motivated, but you've got a longer time period, a smaller class, and you're in that class with the top students in the school (who can probably help you out somewhat) instead of in there with everybody in the whole school (who likely need just as much help as you do).
2) Yes, calculus is the upper crust of high school math. It's also a heck of a lot easier than a college level math class. But here's a thought: The high school class doesn't usually count towards your college GPA, while the college level one does. What's so bad about taking it twice? Take the high school calc if you can swing it, then take it again in college. You may still have a hard time in the college calculus, but it'll be somewhat easier because you've got at least some background to it already.
Wrong question (Score:3, Insightful)
(http://www.nfsnet.org/)
I think the question that should be asked instead is `Does computer science really have that much to do with programming'? I mean, I'm graduating in EE this year and I sure didn't choose this major because I wanted to learn how to solder -- that's the technician's job, you know.
I repeatedly question the reasoning of others in becoming a CS major if all they want to be is a code monkey.
I don't use the advanced math itself, but (Score:3, Insightful)
Basically, if you're having problems solving differential equation problems, you're never going to be able to really conceptualize what
MyClass **p;
means. Its why you see people start to struggle when they try to use STL, and have just memorized the syntax instead of knowing whats it means.
Everything there is... (Score:5, Insightful)
(http://slashdot.org/ | Last Journal: Friday April 16 2004, @05:07PM)
Heh, I just finished my CS Masters which included a class on Advanced Neural Networks (SVMs and classifiers).
You would not believe how much math is involved! There was one proof in a whitepaper I read that used calculus, algebra, trig, linear algebra, and geometry. In one proof!
My recommendation: take all the math you can. Make sure you take linear algebra (vectors/matrices), trigonometry, calculus, probability, statistics, and anything else that looks interesting.
Why does a CS major need math? Let's see:
Graphics engines - trig, geometry
Physics engines - Calculus, trig
AI - Statistics, probability, calculus, linear algebra
Basic GUIs - Geometry, algebra
Networking - Statistics, linear algebra
And of course, you can't do ANY of the above without algebra.
Another interesting quote: If you have the chance to take calculus in high school, I may surprise you with my advice. I would not automatically jump at the opportunity for a couple reasons. I think I agree on this one. You're going to start at ground zero when you take Calc I in college. So use high school to become badass proficient in algebra and trig.
Discrete mathematics (Score:4, Insightful)
(Last Journal: Thursday July 10 2003, @09:14PM)
Taking theoretical computer science classes may seem like a waste of time, but I highly recommend it if for no other reason than because you're not going to learn this stuff on the job or on your own. Taking an extra class on object oriented programming or databases instead may be tempting, but you can teach yourself most of what you need to know about these. Take advantage of the time you have in a university and learn about the logical foundations of your field. For those who love computing, it's an experience which you won't forget!
You Should Learn How to do Proofs (Score:3, Interesting)
Why? Because in my experience, exposure to axiomatic systems greatly improves abstraction and critical reasoning. I teach a "bridge class" (what we call them these days since high schoolers are typically unprepared for math beyond calculus these days) which presents an axiomatic approach to linear orders and the topology on that line. Many students take this class before Data Structures and they remark that it makes the distinction between Interface and Implementation much easier for them (especially since search algorithms are all on various linear orders). They also know how to design APIs cleanly without having to write the program first.
The point I am trying to make is that you should not just take math because of the techniques you learn from it. (This is anecdotal, but) When I was at graduate school at Cornell, almost every math major I met who started programming after taking a lot of math classes was a stronger programmer than anyone who started programming first.
Discrete Math (Score:3, Informative)
My take on discrete math, as a former wannabe mathematician, is that the high school math curriculum is just enough to get you to calculus and all the extra has been squeezed out. Lots of material in the realm of discrete math is accessible to a high school student.
In addition, many of the techniques and methods, like difference equations, parallel those in calculus, so it can reinforce what you've learned in calculus.
Finally, as to the author's point about calculus in high school, I think he's way overgeneralizing about the quality of high school calculus teachers. My cousin, a professional mathematician, recommended that I retake calculus in college. She said that she hadn't really understood calculus until advanced calculus in grad school! Having been down that path myself, I can see this - calculus is such a different way of thinking than its predecessors in the typical high school curriculum.
Coding IS math. (Score:5, Insightful)
(http://btk.sf.net/)
You don't have look at much interesting software before you realize that the difficult problems -- the ones that are fun to solve -- are inherently mathematical. And conversely, once you start seeing programming languages as expressions of underlying mathematical forms, they start to become very similar to one another. And I'm not even referring to bleeding-edge research code, either -- look at P2P networking, and you're staring into the eyes of a massive, graph theory problem.
Anyone can write a shell script. Very few people can express mathematical concepts in code.
Computer Science Engineer (Score:4, Insightful)
(http://uniquity.net/)
Engineering Probability/Statistics (Score:3, Insightful)
The particular class I took was one of a pair; mine was 2/3 probability and 1/3 statistics. The twin class was 2/3 statistics and 1/3 probability. Either version would have worked in the end, but I suspect most engineers find probability more interesting.
Take them if you can find them, even if you have to go to another school to do so.
sPh
Marvin Minsky said it best.... (Score:3, Interesting)
Think math (Score:3, Interesting)
"Math is vital to computer science"
Well, it's certainly important sometimes, possibly often. I used a lot of math writing a conversion library for 3D file formats, but not so much writing a user system in php.
Learning to think is what's really important. I got my first software job by explaining at the interview that my skills were in complex problem solving -- skill they had trouble teaching straight CS people they had hired.
"You really dont need much maths to write a shopping cart applications"
Possibly not, but... I taught applied calculus at a university for many years as a grad student and I always loved it when students asked me "When we I ever use this?". A seemingly silly question to ask in an APPLIED Calculus class to be sure, but the most important use was always that if payed attention, the course would give them problem solving and thinking skills that would help them advance in whatever field they chose. Bottom line: After school you may not remember the Fundamental Theorem of Calculus, but the thinking skills will be invaluable.
My experience (Score:3, Interesting)
Computer Science was actually under the Faculty of Mathematics. So while I was majoring in CS, I had to satisfy all the requirements for a 4 year math degree. I ended up with an Honours Bachelor of Mathematics in Computer Science.
I remember thinking what an odd situation this was in first year. But, as time went on, it made more and more sense. The math turned me into a great problem-solver and honed my analytical skills. When programming tasks were given to me, I didn't think about which lines of code to use, I thought about the problem itself and how best to describe it, simplify it, and abstract it.
You got it backwards (Score:3, Interesting)
(http://humanbacon.blogs.com/ | Last Journal: Friday February 14 2003, @02:43PM)
All Math / Physics and No CS Makes a Good Coder (Score:5, Insightful)
(http://slashdot.org/ | Last Journal: Friday December 23 2005, @04:30AM)
The reason is because math is a formal language, just like any programming language. Except math is far more expressive and complicated than any programming language. We handle the complexity by writing functions and abstractions to simplify it. However, in order to abstract, we have to dot all of our i's and cross all of our t's and lay out the law on when the abstraction will or will not work. Sounds familiar?
The beautiful part is that there is no compiler and no test suite you can run against your "programs". You have to do it all in your head. If programmers were able to better predict the behavior of their programs, or if they were to write their programs in such a way that it could be done, then we would have far fewer bugs, or at least debugging would be easier to do.
So, if you are a pro at math and physics, then programming languages is a toy to you.
Why physics, and not just math? Math is programming for programming's sake. Physics is programming tied to reality in some way. Or in other words, you are practically applying the discoveries mathematicians make, and fudging stuff they haven't discovered yet, all in the interest of getting an answer that agrees with the way stuff really is. Physics adds that dimension of "reality" that is inescapable, just like real programming has the shadow of the "user" or "API" or such that is inescapable and must match what people want to see.
There is one area that math and physics won't teach you, but it is easy enough to pick up as it is a rather simple system compared to, say, Thermodynamics or Quantum Mechanics. That is the way computers really work and the limitations thereof. This is the field of data modelling, data theory, B-Trees, and hashes and stuff, or the details about the various hacks people have come up with to stick mathematics into this system.
Why Math? Because it makes you THINK! (Score:3, Informative)
I went through a computer science undergrad which was part of the math faculty. As such, about a third of my courses were in math... not CS, math.
At first, I thought along the same lines as many of you. Unless I got into some hardcore graphics coding, I never thought I'd use half of what I was learning. And you know what? I was right.
However, what took me a while to realize is that this conclusion does not make math courses a waste. Those math courses, full of really tough proofs and theorems, tought me how to think. Every single day I use the thought patterns that I learned in my math courses to perform my programming job much better than if I had not been exposed to those math courses.
Were the math courses hard as hell? Damn straight! Were they worth it? Definitely :)
My view (Score:4, Interesting)
(http://rlove.org/)
That said, personally I think CS majors should have a strong math background (the Calculus gives you that) but the only relevant Math, unless you are doing something specialized with a specific requirement, is what you learn in a Discrete Math course (what some programs actually call "Math for CS Majors" or similar).
What is computer science? (Score:5, Insightful)
(http://www.iammonkeyboy.com/ | Last Journal: Monday October 22 2001, @08:36PM)
Does programming really have that much to do with math?
I see or hear this question all of the time in relationship to a degree in computer science. The short answer is:
You can make a living at programming without knowing much about math. Most programmers can get along with some basic algebra skills, and understanding boolean logic.
The long answer is that the question asked in the context of a discussion of computer science shows a lack of understanding of what the field of computer science is. Computer science is not about java or c# or sql. Computer science is about understanding and analyzing why a computer acts a certain way given a certain set of conditions. It is about understanding the best way of instructing a computer to perform tasks. Its about knowing that a computer cannot perform certain tasks no matter how well it is programmed. What does this have to do with math. All of the tasks I mentioned are addressable with some mathematical analysis. A computer scientist will write a program to demonstrate a concept or test a theory. A computer scientist will not write a program to do inventory controll for walmart, unless there is some novel or interesting problems in that task that no one has tackled before. In general someone graduating with a cs degree is well versed in theory, and will have to catch up on the practical aspect of the field. For example, I graduated with a CS degree having only seen one Design Specification Document. I now deal with them every day.
There are many trade schools out there that will give you training in a group of technologies (c#, sql, java, html) and call it a computer science degree. The best of these schools turn out software engineers (a very good skillset to have) the worst of these schools turn out people who are capable of passing a cetrification exam and that is it. In general these guys (the software engineers)can jump right into the business of writing software much more easily than someone with a straight cs degree. However the devry graduates tend to have trouble designing and understanding larger systems, and the ramifications of their decisions within those systems. I find this due to the lack of theoretical underpinnings to their education.
Don't get me wrong. I'm not saying every trade school graduate is not capable of dealing with and analyzing large system analysis. I'm just sayind that in my experience that these graduates come out a little less well equiped for the task. And yes I know several CS graduates who are dundering idiots, so you don't have to tell me about your experience with one.
Math for CS (Score:3, Insightful)
(2) Every domain will in some ways be impacted by mathematics.
Therefore (by 1 and 2), more math skills will almost always make you better equipped to understand any given problem domain, and will almost always make you a better programmer.
And that's just computer programming; there are parts of Computer Science that have nothing to do with programming computers, but have everything to do with logic and math.
Coding ain't math, not any more (Score:5, Insightful)
(http://myfreakinname.blogspot.com/)
When coding was entirely procedural and focused almost entirely on crunching numbers, well, yes, math was a big deal, but the paradigm's changed greatly now. Now aptitude in pure logic [rather than a broad math bkgd, much less pure calc] is much more important in my experience. Relational database design and object oriented programming require great understanding of set theory, not calculus. I AP'ed into sophomore calculus and had two semesters (plus an audit of DiffEQ) in college, and haven't used that stuff once since entering the workplace (on my sixth year).
When I look to interview and hire new programmers to my team, for pure intellectual skills I'm looking at good coding style, properly factored (as in refactoring [refactoring.com]) coding examples, and the ability to explain, say, why an example database schema is or isn't in good third normal form. The math I've seen in my tasks is very basic, whether the product I've helped develop was a simple web-based MIS, county-wide tax system, or financial tracker for the largest non-profits.
In fact the only time it's been useful for me to understand mathematical concepts [beyond set theory] was when I thought our resident Geographic Information Systems (GIS) experts weren't considering all the ends and outs of different map projections [state.ga.us]. Even then, what I was commenting on was well outside of my job description of a database admin.
It's good to know math, all other things equal, but in today's programming workplace, the emphasis on math in CS programs is unfounded. I'll even daresay that's why so mnay people who weren't schooled as programmers do so well -- I know about as many programmers that have impressed me with their proverbial skillz that had a degree in the humanities or no degree at all as I do those with a CS background.
Wake up & catch up, CS programs, and teach what's useful in "the real world"!
My courses (Score:4, Interesting)
Calculus I
Calculus II
Calculus III
Discrete Math
Advanced Mathmatics for Engineering
Numerical Analysis I
Numerical Analysis II
Numerical Analysis actually has programming projects and I can see using many of the algorithms in "real-world" situations. Discrete Math obviously has uses. Advanced Mathmatics for Engineering also has obvious CS related topics. The only math courses that I probably won't ever use in programming are my Calculus classes. However, the other math courses listed above are all built off calculus so you had to take them.
P.S. If all you want to do is write average-joe database connections, perhaps CIS would be a better major rather than CS.
well, start with discreet math (Score:3, Informative)
(http://slashdot.org/)
from there, there're cool things like "modern math", and then you should go deep--way deep: two semesters of linear algebra, graph theory, set theory, algebra, real analysis, numerical methods, mathematical logic, ohh, right, and some more calculus... as a computer science graduate student, I'm hating my self for not taking these classes as undergraduate. (well, or for taking them and not remembering too much) It's all very very useful!!
University != Trade School (Score:5, Informative)
(Last Journal: Monday November 17 2003, @07:10PM)
p
OMFG! (Score:3, Insightful)
(Last Journal: Monday June 20 2005, @06:11PM)
Computer Science is itself inherent to math. You can't really separate the two. Sure you can implement all these solutions with A+, Network+, CCNA, MSCE, but how much do you really understand about truly optimizing performance. What about tailoring apps to employers requirements? Cost/benefit analysis of code? Sure, all that helps, but your not really implementing a complete solution just by setting up a network and providing support. There's so much more to it and that's where the theory, programming, and math come in.
Sure you can get by without the math and theory, but how are you going to implement better solutions and design without them? Even with a loose understanding, CS majors have a skillset and problem solving ability that IT majors just don't have. A good question for potential CS majors would be can you make a contribution to the linux development community? If not, maybe you should concentrate on getting an MIS or minoring in IS with a major in business or another field of interest to improve your marketability.
In the end I guess it comes down to each person's ability and interests. Math is inherent to computer science, but focuses on better development and better development techniques while understanding the underlying structure of systems. If you don't want to understand this underlying strucutre and don't care about innovation and theory then stick with IT. IT is innovative, but is more system functionality and maintenance rather than optimization, efficiency, development, and extensibility.
Critical Thinking (Score:3, Insightful)
Computer Science is theory. In most fields, the theoretical people make heavy use of math. The same is true in Computer Science. Algorithm and development is inextricably linked dependant on math. So if the question is "Does CS have that much to do with math?", the answer is a resounding yes.
Programming or Software Engineering arguably doesn't have as much to do with math. As other posts mention, there are programming/software engineering jobs that use little to no math. However, there are a very large number of jobs that need math. Whether you have one of these jobs or not, you can still benefit from having taken more math.
The issue is not that you took a class that taught you how to do the math that you need to accomplish the job. The issue is the critical thinking skills that math develops. When I started my software engineering job after graduating, the first project that I was assigned to required lots of math that I had never seen in school even though I was a math major. I was able to do the work not because of something I learned, but because of the critical thinking and logical reasoning skills that my math classes had helped develop. My math background also gave me a familiarity with the basic mathematical tools that I needed.
There will always be new problems that school has not prepared you for. If you go to school to learn how to solve the problems you will encounter in the workplace, then you are in for a big surprise. The important thing to get out of school is the ability to think critically and learn new concepts.
Lots of great threads here (Score:4, Interesting)
Beyond that, various mathematical disciplines have different levels of demand based on the work being done. I'm largely excluded from the world of real-time 3D graphics because I never went beyond the basics of the math that underlies it. (Some of the most terrifying evil geniuses I know are guys who can not only do all the math involved in projections and rotations, but can also implement it using only integer math -- they scare me!)
You'd better have your logic (deep) and at least your algebra, pre-calculus, calculus, geometry (with trig). From there, every bit of math you learn broadens you and gives you the potential to see solutions your competitors (other job applicants) might not see.
This is the value of all education: Having more knowledge at your fingertips is the rich soil that grows insights. I know a lot of people who think they they can use an Internet connection and Google and they are "programmers." To some extent, this is true. But you can't look for things you can't imagine or remember. Information and knowledge are not the same things.
I don't limit this to math education either. Even history, music, literature, biology, chemistry, physics, and philosophy can provide the mind with the possibility of new ideas. Anyone looking for "the easy path" through education to a job is short changing himself. University time is the time to wallow in the sea of human learning. The goal is to be an educated person, not a unit of productivity fitted to a particular cog in the great machine of industry. We make and use machines for our rote tasks. Your goal in education (to me) is to become maximally adaptable: to achieve cerebral fitness.
In other words, I think this question is the wrong question.
Try proof theory (Score:3, Insightful)
(http://www.stype.org/)
And I think everyone on the planet should take simple probability and estimation courses. People are really clueless when it comes to estimation. Like if I asked how many hairs are on your head...I don't expect the right number...but there are logical ways you could come within an order of magnitude or two. Just simple things like this are useful every day. Estimation is good just for a simple check if your numbers are even in the ballpark. Or just trying to judge how far away something is. People seem to think that a smart person is someone who knows everything..but its more a person who knows how to figure out anything...whether it be by looking in books or asking a friend for help.
Interesting take on importance of math in CS (Score:3, Informative)
(http://slashdot.org/~call%20-151)
The overall point is that math courses often develop abstract thinking skills, which may be more important for developing efficient, correct code than learning a specific toolset which may not age well. I know Keith Devlin has written other articles about this but this was the only one I could find online.
Google vs. the Others (Real Math vs. Crapola) (Score:3, Insightful)
(http://www.cems.umn.edu/~salis/ | Last Journal: Monday March 25 2002, @10:47PM)
They use advanced mathematics to predict the likelihood of matching. What exactly do they do?
Google represents the Web as a Markov chain, where each website is a node and each link increases the unidirectional transition probability of moving from the origin node to the destination node. You can find the 'limiting probability distribution' of a Markov chain relatively easily, even though Google has billions of nodes and trillions? of links.
The limiting probability distribution gives you the relative probability that, web surfing through the links (ie. performing a random walk on the chain), you will eventually settle on a particular website. This is Google's original innovation and technology.
Unfortunately, this type of mathematics is usually only taught in CS graduate school. It should be taught sooner, but it requires getting into a branch of mathematics called 'stochastic processes'.
If you can't stand the math, get out of CS. (Score:5, Insightful)
As a minimum, I would suggest:
- Algebra, Analytic Geometry, & Trigonometry. Know this stuff cold. After 30 years in computing, I still use it every day.
- Logic. Ditto.
- Calculus up to, but not necessarily including Differential Equations.
Very helpful at times:- Linear Algebra
- Probability & Statistics
- Numerical Analysis
- Automata Theory (offered in CS departments)
And if you're really into it:- Number Theory
- Topology & Graph Theory
A good grounding in one of the "hard" sciences like Physics can also be useful. And if you've got an aptitude for music, indulge yourself! Remember, it's not just the content of these discplines that makes them valuable. Each one teaches you to think in different ways. And an agile, flexible mind will make you more valuable to your future employers.Go for an education, not just training!
Math for computer scientists (Score:4, Informative)
(http://gouda.cs.hmc.edu/tim/ | Last Journal: Wednesday May 28 2003, @08:20PM)
- linear algebra
- graph theory
- combinatorics
- logic
- abstract algebra (very cool, and useful in a surprising number of ways)
- multi-variable calculus
- numerical analysis (I found it boring, unlike everything else on this list, but it can end up being useful)
It's likely that you will have to take courses in subjects such as differential equations (either for your school's requirements, or as prerequisites for some of the above classes), but I don't think they're particularly useful to most people in CS.not a troll but an opinion (Score:3, Insightful)
Disagree with Calculus Advice (Score:3, Insightful)
If you are not especially gifted in math, why not take calculus in high school anyway and then retake it in college?
it depends ... (Score:3, Informative)
(http://www.burtleburtle.net/bob | Last Journal: Friday October 03 2003, @12:58PM)
I use arithmetic almost constantly (incrementing loops, avoiding redundant counters). Boolean logic (x&&b)==(!(!x||!b)) is rather common. Basic probability (p(a) > p(b)+p(c)) is required for optimization. I find myself doing proofs in my head for all the code I write to convince myself the code works. Usually really simple proofs, like TRUE works and FALSE works which implies that all cases work. One recent bug involved a count of changes that couldn't exceed 256, yet every increment had to allow a matching decrement. Tricky tricky!
On the other hand, if you ever see a calculator on my desk, you can tell I'm goofing off. (There's a calculator on my desk right now.) That usually requires combinatorics, exponentials, bell curves. Even when goofing off I've very rarely needed calculus.
Computer Lib (Score:4, Insightful)
(http://home.earthlink.net/~bluethundr | Last Journal: Tuesday August 19 2003, @12:23PM)
This is a paraphrase, because unfortunately I don't have my copy in front of me at the moment. But I believe I got it pretty close. While I agree with Ted on the whole, I also concede that it entirely depends on what you want to do with your programming projects.
If it's got anything at all to do with breaking apart, twiddling or mangling things like sound and video and many applications of graphics [kenmusgrave.com] then yes higher math will be a requirement. It will also be useful in helping one think logically enough to handle programmatic tasks more easily.
That being said, there are still many many programmatic tasks you can accomplish...to make your life easier because someone else hasn't in the area you're programming in, or just to learn the internals - the process! - of programming: Ted was dead on (as he was about a lot of things!). No math will be required for a great many tasks!
Depends on what you want to do (Score:3, Interesting)
Theory CS theory consists of a wide range of problems: some very heavily mathematical (Does P = NP?) to the not so mathematical (eg. Theory of Distributed Systems). Although the latter is not "mathematical" in the traditional sense, it still requires strong mathematical reasoning abilities. In any case, needless to say, studying CS theory requires a good foundation in mathematics.
Graphics This one has already been described by other people. No chance in hell you're going to write a kick-ass 3d engine without knowing a lot of linear algebra (i.e. math).
Artificial Intelligence Machine Learning (Neural Nets, Support Vector machines, etc) is all hardcore statistics. You need to have a good knowledge of linear algebra and multivariate calculus to even begin to comprehend this field. At the other end of the spectrum within the AI field is Knowledge Representation; this type of AI is more logic based, and again requires good mathematical reasoning abilities.
Operating Systems Here's a field for which you may argue a minimal amount of math is required. Of all the subdisciplines within CS, this one probably does require the least math. However, that doesn't mean you'll get away without a math background. A lot of research done in this field involves understanding/presenting quantitative results. So you do need some basic knowledge of statistics. Besides that, a lot of OS research also involves proving systems correct; this is very heavily logic based stuff, and again an ability to reason about problems abstractly (mathematically) is extremely useful.
Numerical Analysis Math, math, math, and more math.
Software Engineering Proving systems correct and defining systems using logic -- very mathematical stuff. If on the other hand you get into the more wishy-washy side of SE then you may be able to avoid math.
Anyways, there's probably some sub disciples I missed, but you should get the idea. Math is required in almost all aspects of CS. The only reason it isn't required in the RealWorld(tm) is because most of the stuff done there is grunt work that involves nothing more than reinventing the wheel.
So, if you are really interested in CS, then do it right -- take as much math as you can. If, on the other hand, you are just interested in hacking, then don't go into CS. CS != hacking degree.
Computational Neuroscience and Math (Score:3, Informative)
(http://edgeofvision.com/ | Last Journal: Wednesday June 20, @08:07PM)
So I'm in general incredibly interested in various combinations of brain and CS studies, so last year I audited a course on computational neuroscience [cmu.edu]. This was a course which dealt with understanding neural systems from a computational perspective.
Unfortunately, my math skills are somewhat sub-par for a CS major. I somehow managed to get a 5 on the AP Calc exam, but forgot everything afterwards. This ended up hurting me significantly in the course. Although I could understand the neuroscience concepts, whenever we started with analysis my head started swimming. Modeling things like ion channels require some pretty hardcore understanding of differential equations, which I understood next to nothing about. I learned a bunch of neat facts, but without a strong mathematical background, I wasn't able to fully comprehend what was going on.
There are many other examples of my poor math knowledge causing me pain. As it stands, I'm going to be joining a PhD program to study neuro/CS stuff in the fall. Since I'm going to need to have a good grasp of things like differential equations, I'm going to be spending a lot of quality time with calculus books this summer. Being in a position like this sucks -- I really recommend learning math, regardless of what you want to do. It's amazing how often math comes up, and how much the symbolic processing skills math teaches you helps in other areas.