TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Math topics useful for computer science/programming

84 点作者 jackhammer2022大约 11 年前

11 条评论

j2kun大约 11 年前
I never liked these kinds of lists. The people who ask the question always seem to be under- or overwhelmed by the answer (programmers don&#x27;t need <i>any</i> math?! theoretical computer scientists need <i>all</i> math?!). And the people who answer are almost always skewed toward whatever it is they do.<p>Even the top-voted response to the OP is obviously biased toward the logic flavor of computer science, with awkwardly scattered recommendations for non-logicish topics that are far more useful for <i>all</i> flavors of computer science (&quot;perhaps even eigenvalues,&quot; seriously?!).<p>These lists even ignore the deeper question being asked: how do you figure out what sort of mathematics you need for the things you&#x27;re interested in? Not all computer scientists (and programmers) like the same things in computer science and programming. It&#x27;s much more advisable to figure out what you like before you go around trying to learn all the math there is to learn related to CS, and then ask about what math topics are related to that.
评论 #7617091 未加载
评论 #7617824 未加载
评论 #7616460 未加载
stiff大约 11 年前
This does not seem very informed, starting from the false premise in the question up to the random concepts listed in the answers.<p>Calculus is actually important for Computer Science, it&#x27;s actually important for everything, it&#x27;s where you learn how to handle the exponential function and the natural logarithm, how to do approximations and bounds, how to handle infinite series, etc., and those things then appear all over the place, unlike most things listed it&#x27;s something that you can expect to encounter almost regardless of what domain you are interested in.<p>I mean, the guy asks what should replace Calculus and then the first answer includes &quot;Asymptotics&quot;, &quot;basic limits, sequences and series&quot;, so actually calculus. In general I cringe a little every time I hear Computer Science people should focus on &quot;discrete math&quot;, because without tools from analysis you can only solve the most trivial discrete problems. And yes, calculus by itself is hardly ever applicable in CS, yet you still have to learn it, tough luck. In general what is not stressed enough I think is that applying math is hard and you need to learn a lot of it before you have enough tools to tackle problems anywhere close to real-world complexity.<p>The top answer also lists random concepts. I am learning probability currently, for applications in machine learning. &quot;Discrete spaces, Bayes theorem and expected values&quot; you can learn in a day, &quot;Markovs, Chebyshev and Chernoff inequalities&quot; are mostly only useful for further theoretical work, so is &quot;the law of large numbers&quot;. What will really be useful will depend a lot on the applications, if you are a theoretical computer scientist, mastery of generating functions and transforms will be useful, and it&#x27;s one of those instances where discrete problems are solved via tools from calculus&#x2F;analysis. For machine learning you need to know everything about the normal distribution by heart, and this means you have to know everything about the exponential function by heart, so again back to calculus. Notions from information theory are useful, but of course none of the ones he listed. The comment &quot;This is a must for modern programmers.&quot; sounds just comic.
评论 #7616107 未加载
评论 #7616066 未加载
评论 #7616651 未加载
评论 #7616118 未加载
RogerL大约 11 年前
I went to an engineering University. Besides having a wide variety of math required (3 semesters of Calc, 1 semester of either stats or probability, 1 semester of either linear algebra or matrices), we also had to take 3 semesters of physics, and 2 of chemistry. Most of us (those not just looking for a piece of paper) went considerable deeper in at least one area.<p>No, you don&#x27;t need to understand organic chemistry to write a CRUD app. But, you don&#x27;t need university to write a CRUD app.<p>I think I received an excellent education that prepared me for about any job out there. And, I&#x27;ve done it. I&#x27;ve done cancer statistics for the NIH. I&#x27;ve worked in avionics and simulation. Well, blah blah, no one cares about my resume, I&#x27;ll just say I couldn&#x27;t have done any of it without the education I received. I haven&#x27;t done financial quant stuff, as an example, but how could I without the math background? Or how could I program a controller in a factory without understanding PID (done that)? How can I get a piece of that neat drone project (done that)? Hey, that computer vision stuff looks interesting, all I need to know is ...derivatives, statistics (done that too).<p>For most of us, university is the last and&#x2F;or best chance to really understand how the world works. For that you need quite a bit of math and science. Another example. We have a voluntary Arduino robotics workshop going on at work, coupled with 3D printing. Naturally, people are excited, and have all kinds of ideas. But, how do you execute on that if you don&#x27;t understand how to design an op amp circuit, or filter data with something more sophisticated than a moving average? Robotics spans a number of fields, and to actually produce something more than a gimmick requires a lot of knowledge. Knowledge that you can pretty easily pick up in University, but knowledge you mostly just long for as you have to rush home at 5:30 to pick up the kids and make dinner.<p>I guess this is a cranky rant from an old guy. But I hear about University programs that are nothing more than Java voc ed systems and I despair. $100K in debt to learn something most anyone on here could just pick up on their own. You don&#x27;t need university for that stuff.
评论 #7621594 未加载
archena大约 11 年前
I&#x27;d include combinatorics under &#x27;useful&#x27; too - although the basics are usually covered in statistics courses. Odd that the list mentions differential equations but not basic calculus, which I&#x27;d think is more fundamental.<p>It&#x27;s also interesting to consider the chapter headings in Concrete Mathematics (Graham, Knuth, Patashnik), a text designed with students of CS and programming in mind:<p><pre><code> Recurrent Problems Summation Integer Functions Number Theory Binomial Coefficients Special Numbers Generating Functions Discrete Probability Asymptotics</code></pre>
评论 #7616376 未加载
jostylr大约 11 年前
Why not teach math + programming together? I didn&#x27;t seem to see anyone suggest that.<p>Calculus: simplify and iterate to solve a problem (like Newton&#x27;s Method). Lots of issues to tackle with. Much more useful than learning formulas, but it can also be interesting to show how converting forms can take an unstable problem into a stable one.<p>Combinatorics: Explore the small side of a problem, code up the larger version, explore how far one can get, show methods for dealing with the problem beyond the scope.<p>Graphics, user interface design, etc., are also very big in math. In a course I teach to Enviro Science people, they come in scar(r)ed of math and by the end, they enjoy it. A big trick is getting them to use GeoGebra in an exploratory, visual fashion. It makes the math real.<p>The same approach in code can help make CS students get math while also getting the issues in CS. Anyone who thinks the exponential as 1+ x+ x^2&#x2F;2 + .... is useful as is for x = 100 needs some actual experience with it. But at the same time, teaching them how to translate e^100 ~~ e^(43<i>ln(10) + .98) ~~ 10^43 </i> (1 + .98 + .98^2&#x2F;2 + .98^3&#x2F;6) = 10^43 * 2.62 has its value (compare to e^100 ~~ 2.69 * 10^43)<p>This is the kind of math that is useful. Exploratory math that struggles with mathematical truths and practical implementations. Students should get a sense of the limits of computers, what they can handle and not.<p>And designing a good math interface for these problems can be quite the UI learning experience. There are so many ways to explore math.<p>Stop teaching dry math and start teaching programming math.
评论 #7616727 未加载
weavie大约 11 年前
Although I did mathematics to degree level, I have used so little of it in my professional career that I have largely forgotten it all now. Any such list is going to depend on what area of programming you want to get into.<p>For a lot of programming understanding user interaction and human psychology is much more important than mathematics.
ap22213大约 11 年前
&quot;Many students struggle with the idea of recursion...&quot;<p>I still remember one of the worst bugs I&#x27;d ever introduced (in terms of pain to me). I was maybe 2-3 years out of my bachelors, and I thought recursion was so nifty that I&#x27;d use it where ever I could. I was coding C++, at the time. And, I got the dreaded 2am call after all of the production servers went down hard. Like terminate and corrupt data hard.<p>Lesson learned: it&#x27;s good to know recursion, but it&#x27;s also good to know maximum stack sizes.
评论 #7616620 未加载
评论 #7616189 未加载
评论 #7616296 未加载
brirush大约 11 年前
I wrote the original question. I&#x27;ve always been interested in how much math various careers use, but I wrote this question the way I did in a shameless attempt to drive traffic to the site by appealing to the Stackoverflow and reddit communities. Everyone has given me a different answer so far, but that&#x27;s to be expected, because there are ~1000 subcategories of computer programmers.
评论 #7619188 未加载
userbinator大约 11 年前
In my experience, I&#x27;ve seen a lot of students entering CS not comfortable with even <i>basic arithmetic and algebra</i>, despite it not being mentioned in any of the linked responses.<p>As for calculus, I think its importance is overrated - unless you are specifically doing some numerical computation that requires it.
评论 #7617182 未加载
jules大约 11 年前
Which area of math isn&#x27;t useful for computer science&#x2F;programming? Certainly some areas are more useful than others, but I think rather than looking at areas it matters more how in depth you go in one area. Going super deep into an area is often not a lot more useful than just knowing the basics. Complexity theory is useful, but it&#x27;s not that practically useful to know deeply about all the complexity classes.
alok-g大约 11 年前
What would be a good writeup for understanding term-rewriting? (My current background level: I understand most of what OP has listed in &quot;actually useful&quot; and &quot;can run into&quot;, and &quot;automata theory&quot; from the third list.)
评论 #7617152 未加载