如果没有经过多少正式培训,我如何学习与高级编程相关的数学?

时间:2009-10-10 18:35:36

标签: math computer-science graph-theory discrete-mathematics

我没有参加任何基础大学微积分以上的数学课程。然而,在我的编程工作过程中,我从博客和阅读中学到了很多数学和能力科学,我真的相信我有一个不错的数学思维。例如,我很喜欢Project Euler。

我想潜入并真正开始学习一些很酷的数学,特别是离散数学,集合论,图论,数论,组合学,范畴论,lambda演算等。 到目前为止,我的印象是我有能力在概念层面上接受这些,但我在数学语言和符号方面遇到了很多困难。我只是不“说语言”,虽然我正在努力学习它,但我的进展非常缓慢。甚至一个公式或术语重段也可能需要几个小时才能完成。是的,我可以查找术语和定义,但这是一个非常繁重的过程,它极大地模糊了我正在努力学习的理论简单性。

我真的害怕我不得不回到我离开的地方,获得一本中级数学教科书,并投入一些时间进行练习,以这种思维方式训练自己。这听起来非常无聊,所以我想知道是否有其他人对此有任何想法或经验。

12 个答案:

答案 0 :(得分:9)

如果你不想上课,你仍然需要得到课程给你的东西:材料上的时间和练习。

所以,抓住那本教科书并开始练习练习题。实际上没有其他办法(除非你已经弄清楚渗透实际上是如何发生的......)。

答案 1 :(得分:7)

没有任何知识可以在课堂上获得

查看MIT Courseware for Mathematics

他们的YouTube site

项目Euler 也是一种思考数学的好方法,因为它与编程有关

答案 2 :(得分:6)

在当地社区大学上课。如果你像我一样,你需要这个结构。对于被评分的压力,有一些话要说。我的意思是要学到很多东西如果你想要的不仅仅是通过点头 - 你的头脑-mm-hmm那种理解,那么独奏真的是不切实际的。

答案 3 :(得分:5)

听起来你和我在同一个位置。我发现的关于数学教育的是大部分教学都是错误的。无论是原因还是结果,我也发现大多数数学文本写得不正确。例外是罕见的,但值得注意。例如,Donald Knuth所写的任何内容都是朝着正确方向迈出的一步。

以下是一些非常清楚地说明问题的文章:

这是一篇关于旨在保留知识的简单研究技术的文章:

答案 4 :(得分:3)

考虑在当地大学的离散数学和证明中审核课程。离散数学课将教你一些非常有用的东西(图论,组合学等),而证明课将教你更多关于思​​维和写作的数学风格。

答案 5 :(得分:2)

我同意@John Kugelman,课程是正确完成课程的方法,但我补充一点,如果你不想上课,互联网有很多资源可以帮助你,包括记录我发现的讲座比书本和论文更容易接受。

我建议查看麻省理工学院开放课件。那里有一个Maths for Computer Science module,我很高兴通过Gilbert Strang's Linear Algebra course of video lectures工作。

Youtube和videolectures.com也是视频讲座的好资源。

最后,有一本免费的数学CS书籍at bookboon

答案 6 :(得分:2)

我要在此列表中添加The Haskel Road to Logic, Maths, and ProgrammingConceptual Mathematics: A First Introduction to Categories

--- 2009年11月16日回答后人 -

两本书。 Diestel的Graph Theory和Knuth的Concrete Mathematics。一旦你掌握了那些尝试CAGES

答案 7 :(得分:1)

找一位愿意定期与你共度时光的优秀导师。

答案 8 :(得分:1)

学习密集材料有一种技巧,比如数学和数学CS。学习不熟悉的抽象东西很难,而最有效的方法就是分阶段熟悉它。首先,你需要浏览它:如果你不理解第一遍中的所有内容,不要担心。然后休息一下;休息后,再深入一遍。泡沫,冲洗,重复;冥想,最终你可能会开悟。

我不确定我要从哪里开始,熟悉数学语言;我最后读完了很多论文,直到我做得更好。你可能会寻找关于形式数学逻辑的入门教科书,因为很多数学(特别是语言理论)是基于这一点的;如果你学习了一些正式的东西,那么日常记法可能看起来会更容易一些。

你应该仔细阅读你个人感兴趣的主题的书籍;固有的兴趣应该有助于让你超越驼峰。另外,请确保找到实际介绍的文本;我已经开始警惕那些标有 Elementary Foobar Theory 的苗条,未修饰的精装本,这些精简版往往只是在Foobar拥有博士学位的博士后。

警告:不要从类别理论开始 - 这是我遇到的最无聊的数学!由于它与语言设计和类型理论的相关性,我想更多地了解它,但到目前为止我还没有能够处理......

对于很多种CS-ish数学的精彩,散点图介绍,我推荐Hofstadter的 Godel,Escher,Bach (当然,如果你还没有读过它)。然而,这不是一本正式的数学书,所以它不会帮助你解决熟悉问题,但这是非常鼓舞人心的。

答案 9 :(得分:0)

数学符号类似于几种计算机语言:

  • 简洁
  • 严格
  • 基于许多习语
  • 相当数量的本地变体和惯例

与计算机语言一样,您不需要“立即清洗整只大象”:一次将其分成一部分。

你的暂定计划可能是

  • 确定对您有意义或重要的数学领域。 (似乎你已经对此有了一点意义,CS帮助你为它开发了一种文化。)
  • 接受(或仅审核)该领域的一些正式课程。我同意这篇文章中的几个答案,一个面对面的课程,在本地大学是更可取的,但是,也许起初,或者为了确保获得最大的特定课程,首先是自我通过麻省理工学院开放式课程,在这个领域教自己,类似的在线资源和相关书籍都很好。
  • 如果数学领域在流利的符号或某些潜在概念或(通常是机械计算和转换技术)方面引入了太高的先决条件。没问题!回过头来,了解这些基础(以及这些基础!)并再次前进。
  • 找一个“大师”,一个拥有广泛数学文化和曝光度的人,不一定是数学家,物理学家也很好,他们确实能够以更实际的方式表达数学。使用这位大师来指导你,因为他/她可以告诉你大块如何组合在一起。

注意:为了自己的利益而学习数学符号几乎没有什么好处。相反,它应该在上下文中学习,就像说C#成语在使用时和与特定任务相关联时更好地记忆,而不是在真空中学习。然而,相关的SO帖子提供了若干资源来解密和学习mathematical notation

答案 10 :(得分:0)

项目Euler将问题脱离背景并将其丢弃以供人们解决。 Euler项目无法有效地教你任何东西。我认为你应该忘记它,如果它很受欢迎它并不意味着什么。你不能通过Project Euler学习数学,因为它只包含你应该知道的点点滴滴(以及一些非常高级的片段)以解决问题。学习数学意味着考虑一门学科,阅读一本关于它的书,解决练习或阅读解决方案,这就是你学习数学的方法。如果碰巧你通过阅读发现了一些与某些项目更接近的东西,那就是你的运气,但是否则Project euler完全是浪费时间。我认为选择一个特定的数学分支并研究它的时间要好得多。让我解释一下原因:我解决了3个非常先进的Projec Euler问题,他们都是从数字理论中吸取了我所碰巧的知识,因为我研究了它的某些部分。我不认为从Euler项目中得到了什么,只是碰巧我已经知道了一些数论并解决了这些问题。

例如,如果你发现你喜欢数论,那就拿H. Davenport - >哈代&赖特 - >肯尼斯&罗森的,研究那些。 如果您喜欢Graph Theory,请参阅Reinhard Diestel的书籍,该书免费提供并研究(或查看books.google.com并找到更适合您口味的书籍)但不要仅仅因为Project Euler有问题而将注意力扩展到999999方向从动态编程到高级几何或高级数理论,这显然是错误的方式,它不会让你更接近你的目标。

  

这听起来非常无聊

嗯......当你发现一些你喜欢的问题时,数学并不乏味,你喜欢并希望找到解决方案,当你有足够的时间反思它而不落后时电脑屏幕。数学大部分是用笔和纸做的(是的,你可以使用计算机......但这不是重点)。

因此,如果您发现现实世界的问题,或者某些可能受益的编程问题 你知道一些高级数学,并且知道你必须学习什么数学,这可能会激励你以这种方式学习。

如果你觉得自己没有动力,就很难正确学习。

当你说学习时,还有一个问题是你的意思。在解决了本书末尾的问题后,学习过程是否停止了?好吧,你决定。你可以认为你已经完成了这门课程的学习,或者你可以认为你还没有完成并阅读更多相关内容。关于一个等式及其变体的全部书籍。

您可以在没有正式培训的情况下学习与编程相关的数学课程数量有限,但这已经足够了。但也许你可以自学自己。

这一切都归结为你的资源和动力。

要了解数学,你必须做数学而不是编程(项目euler)。

答案 11 :(得分:0)

对于开始学习类别理论,我推荐David Spivak的科学分类理论(AKA 科学家类别理论),因为它的相对可理解性是由于许多例子能够理解通过类比,它可以快速为理解更抽象的概念奠定基础。

它需要逻辑推理的能力和直观的概念。它通过基本类别理论从集合和函数开始,伴随着仿函数,仿函数,滑轮,单子和操作的介绍。其中的两个主要线程是根据类别建模数据库,并使用带注释的图表ologs描述类别。参考书目提供了更高级和专业的主题,包括Spivak博士最近的论文。

阅读本书的预期结果是理解类别理论文本和为数学家撰写的论文的能力,例如Mac Lane的工作数学家的类别理论

PDF格式可从http://math.mit.edu/~dspivak/teaching/sp13/获得(建议使用动态版本,因为它是最新版本)。开放式访问HTML版本可从https://mitpress.mit.edu/books/category-theory-sciences获得(建议使用此版本,因为它包含其他内容,包括某些练习的答案)。