每隔一段时间我就会觉得我的数学知识(因为它与软件开发领域有关)存在一些差距。我是一个受过良好教育的人。我有大学学位。我一直很喜欢学习,这就是为什么我想尝试填补这些空白。
我的工作是在金融行业,我觉得如果我能更好地掌握进入它的数学/逻辑,我们所做的许多大规模数字运算任务都可以提高效率。 ,或可以作为捷径使用的概念。
你有什么建议吗?你发现的书有助于此吗?视频讲座?
编辑:我应该注意到我的学位是计算机科学,所以我熟悉一些相关的数学领域。我只是不确定如何最好地了解它们或改进我已经知道的东西:)答案 0 :(得分:8)
对编程非常有用的一个数学领域是离散数学。对此有一个很好的参考是麻省理工学院开放课程“计算机科学数学”课程,here。
答案 1 :(得分:6)
按重要性排序,我会说:
在我看来,代数对于任何体面的程序员都是必不可少的,因为它构成了变量表示和表达式评估的基础(函数,交换性和操作的传递性等)。
组合学对于各种图算法都是必不可少的(遍历图中的所有节点,找到最短路径等)。在几乎任何编程环境中,了解组合和排列的方法都至关重要。
接下来是统计数据,特别是如果你想进入AI或机器学习。统计数据可能是程序员最大的数学知识领域。在大多数情况下,您不需要深入了解多变量,例如多变量回归。只知道如何(以及在什么情况下)快速计算平均值,中位数,模式,标准差,误差幅度,置信区间和条件概率对于许多机器学习应用来说都是有用的。
矢量数学在各种信息建模应用程序中很重要(n维矢量空间模型是一种非常方便的文档语义推理方法),以及各种3D图形应用程序。
矩阵数学很像矢量数学,就其应用程序而言(人工智能,信息模型,3D等),但它有点棘手,因为它增加了另一个维度。 (矩阵数学是我自己的阿喀琉斯之踵;我绝对可以使用刷子。)
对于进行科学计算和模拟的人来说,微积分是必不可少的。玩得开心!
ON EDIT:
我认为,掌握数学知识的最佳方法是处理使用该知识的项目。例如,如果你想学习一些统计数据(比如,真正学习它,那么你可以在不查找它们的情况下滔滔不绝地说出所有公式),那么你可能会对Netflix Prize比赛中的数据集进行分析感兴趣
该数据集包含来自Netflix用户数据库的超过1亿条记录,并提供了一个巨大的机会来尝试实现其中一些数学繁重的算法。
至于实际参考资料,我发现维基百科绰绰有余。例如,在我最近的一个项目中,我一再提到Kernel Density Estimation和Vector Fields上的一些文章。
关于核心数学(因为我几乎完全是自学成才)的令人生畏的事(对我来说)是符号。所有那些希腊字母让我的头部旋转了一下。但是如果你多次阅读这些文章(以及像“数学西格玛符号”这样的短语谷歌),那么将他们所谈论的内容拼凑起来并不困难。
答案 2 :(得分:4)
你应该知道probability and statistics。我在本科物理课程中完成了这个课程。 斯坦福大学提供免费的数学和物理讲座,我认为你仍然可以访问它们here(很多大学现在正在做这个公开的video lectures想法)。 并且something是本网站的创建者之一推荐的。
答案 3 :(得分:3)
它可能与此没有直接关系,但Project Euler非常适合让您以数学方式思考。
答案 4 :(得分:2)
Concrete Mathematics. 这是Knuth的大学教科书,强调在与程序员相关的领域解决实际问题。
答案 5 :(得分:1)
答案 6 :(得分:1)
我会研究大学校计算机科学学位所需的课程要求。那里通常有数学的正确组合。
答案 7 :(得分:1)
为什么不在当地大学上几门课?也许你工作中一些数量众多的极客可能知道你应该参加哪些课程?
答案 8 :(得分:1)
还有一个 - 这是一组video and audio lectures from Steven Skiena's discrete math course。他因写作The Algorithm Design Manual(也就是Hitchhiker的算法指南)而闻名,他的数学课程也很好。
答案 9 :(得分:0)
作为一名从事数学专业的人,我认为数学最好从一位优秀的老师那里学到,并有一定的成功压力(如学费)。我觉得自己学习计算很容易,但数学要难得多。我仍然非常喜欢它。
答案 10 :(得分:0)
拿出一本书,比如优秀的Discrete Math教科书,每天开始练习。做所有这些。
重复另一本书。