我在哪里可以找到程序员的数学主题和资源?

时间:2009-07-24 13:16:19

标签: math resources

关于这个问题围绕着这个问题存在一些问题,但我觉得这个问题已经不同了。

我已经决定要在程序员有用和/或有趣的领域提高数学技能的广度和深度。

  1. 我应该学习哪些主题?
  2. 您推荐哪些资源(博客/书籍/在线讲座......)?
  3. 我正在寻找易于消耗的资源,因为我将在空闲时间这样做,我不想花费数天时间在密集的文本中挣扎,但我想要比表面更深入。我已经阅读了有关主题(和大多数评论)的Yegge article,但我认为这里的投票系统将帮助我专注于最有用/最好的资源和主题。


    编辑:

    我希望创建一个我将在未来几年内学习的学习课程,我不打算解决一个特定的问题我只是想学习一些我会感兴趣的新技能,并且可能对我有用。我未来的职业生涯。

12 个答案:

答案 0 :(得分:5)

Concrete Mathematics: A Foundation for Computer Science是我对一本涵盖一些高级主题的书的建议。

答案 1 :(得分:2)

  1. 如果您对游戏开发感兴趣,3D graphics或与此有关的任何内容,那么请进行多元微积分和基础物理。这将有助于您更好地理解基本概念。此外,线性代数将极大地帮助您完成所有矩阵/矢量。

    如果你对这些话题不感兴趣,我仍会说学习微积分和物理。为什么?解决微积分和物理问题可以让您在解决问题和锻炼大脑方面获得良好的经验。程序员需要成为优秀的问题解决者...这是我们的工作。你从这些课程中学到的概念是你将在余生中随身携带的东西。

  2. 麻省理工学院和斯坦福大学都有很好的在线课程。当然,如果没有更基本的计算,你不能只是跳进多元微积分,但麻省理工学院和斯坦福大学也有基本微积分课程的资源。基础物理学将更容易接受。再次,您可以查看麻省理工学院和斯坦福大学的物理学。

  3. MIT OpenCourseWare

答案 2 :(得分:2)

有关离散数学的介绍我强烈建议this.

我很幸运能够从大学提供这本书

答案 3 :(得分:2)

前一段时间Steve Yegge写了一篇关于math for programmers的专门文章。他的论点是:作为一名程序员,你应该学习数学,但你应该以不同于学校/大学的方式这样做。

他的总结如下:

  
      
  1. 在您知道如何编程后,数学会更容易上手。事实上,如果你是一个中等程度的程序员,你会发现它几乎是一个短暂的。
  2.   
  3. 他们在学校教数学都错了。方式,错了。如果你以正确的方式教自己数学,你会学得更快,记得更长,对你作为程序员来说它会更有价值。
  4.   
  5. 知道一些正确的数学类型可以让你写一些非常有趣的程序,否则会太难。换句话说,只要你有空闲时间,数学就是你可以一次拿起一些东西。
  6.   
  7. 没有人知道所有数学,甚至不是最好的数学家。随着人们发明新的形式主义来解决自己的问题,这个领域不断扩大。对于任何给定的数学问题,就像在编程中一样,有不止一种方法可以做到这一点。你可以选择你最喜欢的那个。
  8.   
  9. 数学是......嗯,请不要告诉任何我说过的人;只要我活着,我就永远不会被邀请参加另一个派对。但是数学,好吧......我最好低声说出来,所以听听:(这实际上很有趣。)
  10.   
悲伤的说明:史蒂夫放弃了他的博客,因为反馈过于激烈。

答案 4 :(得分:2)

任何程序员都应该对以下数学课程的本科水平有充分的了解:

  1. 微积分(通过多变量计算)
  2. 离散数学(绝对必要)
  3. 线性代数(理解矩阵所必需的)
  4. 组合学(Dicrete数学的进一步发展)
  5. 抽象代数简介(这将巩固您对模数系统的理解,特别是二进制,八进制,十六进制等)。它还深入理解了在实际编程和comp sci文献中普遍存在的集合论。
  6. 这是基本原则。如果您正在考虑图形或游戏编程,那么您将拥有大量的物理,图形艺术和流体动力学课程。此外,微分几何对于曲面上运动的任何真实世界建模都是必不可少的。

答案 5 :(得分:2)

您的问题有点偏离,但我建议Princeton Companion to Mathematics

它概述了所有数学,因此它不仅仅是“数学对程序员有用”,而且它的风格也很容易理解,而且重要的部分都在那里。

答案 6 :(得分:0)

一般来说,数学在计算机编程中的应用是非常特定于领域的 - 也就是说,您需要知道您正在编写的特定程序所需的数学。我能想到的唯一数学主题通常适用于所有类型的编程都是简单的算术和布尔逻辑,但我想如果你还不知道那些你不会是程序员的那些; - )

基本上,我建议您根据自己正在进行的任何项目学习数学。如果你想给自己一个很好的借口来学习一些新的数学,那就开始一个做数学的爱好程序。

答案 7 :(得分:0)

至于主题,请查看一些答案here。推荐的资源很难给我,我是德语。我建议从线性代数和几何开始,你会在计算机图形中找到它。例如,看看斯普林格的本科数学系列。

答案 8 :(得分:0)

数论没有很多直接应用于编程(尽管有一些巧妙的技巧可以用于优化),但有几个基本概念使密码学更容易学习。

我的数论类使用了西尔弗曼的Friendly Introduction to Number Theory,这是我见过的最好的数学教科书之一。它很容易阅读(标题完全准确,它的友好性),但涵盖了广泛的主题。 Silverman也是我的加密教科书An Introduction to Mathematical Cryptography的作者。它更具技术性,可以解决大多数加密领域,并提供了大量参考资料,可以在哪里找到更多细节。

答案 9 :(得分:0)

考虑Knuth的计算机编程艺术系列。它可以变得密集,但它会使你最需要编程的数学。我建议尽早选择第4卷的分册。这些书不适合所有人,但如果你觉得它们很有趣,你会学到很多东西。

他们不会教你微积分或几何,这在编程的许多方面都很重要,但往往更专业。

答案 10 :(得分:0)

我认为你应该深入了解你最感兴趣的事情,并且为了找出你应该得到一些涵盖事实和提供方向的书籍以及一些培养你的动机和好奇心的书籍。你真的不得不深入了解它,这是一个非常个人的事情。

事实/方向:

唐纳德克努特 - 布朗斯坦,塞门吉亚耶夫

编程科学 - 数据结构和算法

动机/好奇心:

现实之路 - 费马的最后定理 - Godel,Escher,Bach

另外在更实际方面的动机:

projecteuler.net

答案 11 :(得分:-2)

你想解决什么样的数学问题? “数学”是一个非常大的领域!

麻省理工学院有一些在线课程,但这可能是一项重要的投资。

Wolfram有一些教程,但同样,你需要知道你在寻找什么。

相关问题