程序员的数学基础课
黄申
LinkedIn资深数据科学家
立即订阅
23478 人已学习
课程目录
已完结 57 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 作为程序员,为什么你应该学好数学?
免费
导读 (1讲)
导读:程序员应该怎么学数学?
基础思想篇 (18讲)
01 | 二进制:不了解计算机的源头,你学什么编程
02 | 余数:原来取余操作本身就是个哈希函数
03 | 迭代法:不用编程语言的自带函数,你会如何计算平方根?
04 | 数学归纳法:如何用数学归纳提升代码的运行效率?
05 | 递归(上):泛化数学归纳,如何将复杂问题简单化?
06 | 递归(下):分而治之,从归并排序到MapReduce
07 | 排列:如何让计算机学会“田忌赛马”?
08 | 组合:如何让计算机安排世界杯的赛程?
09 | 动态规划(上):如何实现基于编辑距离的查询推荐?
10 | 动态规划(下):如何求得状态转移方程并进行编程实现?
11 | 树的深度优先搜索(上):如何才能高效率地查字典?
12 | 树的深度优先搜索(下):如何才能高效率地查字典?
13 | 树的广度优先搜索(上):人际关系的六度理论是真的吗?
14 | 树的广度优先搜索(下):为什么双向广度优先搜索的效率更高?
15 | 从树到图:如何让计算机学会看地图?
16 | 时间和空间复杂度(上):优化性能是否只是“纸上谈兵”?
17 | 时间和空间复杂度(下):如何使用六个法则进行复杂度分析?
18 | 总结课:数据结构、编程语句和基础算法体现了哪些数学思想?
概率统计篇 (14讲)
19 | 概率和统计:编程为什么需要概率和统计?
20 | 概率基础(上):一篇文章帮你理解随机变量、概率分布和期望值
21 | 概率基础(下):联合概率、条件概率和贝叶斯法则,这些概率公式究竟能做什么?
22 | 朴素贝叶斯:如何让计算机学会自动分类?
23 | 文本分类:如何区分特定类型的新闻?
24 | 语言模型:如何使用链式法则和马尔科夫假设简化概率模型?
25 | 马尔科夫模型:从PageRank到语音识别,背后是什么模型在支撑?
26 | 信息熵:如何通过几个问题,测出你对应的武侠人物?
27 | 决策树:信息增益、增益比率和基尼指数的运用
28 | 熵、信息增益和卡方:如何寻找关键特征?
29 | 归一化和标准化:各种特征如何综合才是最合理的?
30 | 统计意义(上):如何通过显著性检验,判断你的A/B测试结果是不是巧合?
31 | 统计意义(下):如何通过显著性检验,判断你的A/B测试结果是不是巧合?
32 | 概率统计篇答疑和总结:为什么会有欠拟合和过拟合?
线性代数篇 (13讲)
33 | 线性代数:线性代数到底都讲了些什么?
34 | 向量空间模型:如何让计算机理解现实事物之间的关系?
35 | 文本检索:如何让计算机处理自然语言?
36 | 文本聚类:如何过滤冗余的新闻?
37 | 矩阵(上):如何使用矩阵操作进行PageRank计算?
38 | 矩阵(下):如何使用矩阵操作进行协同过滤推荐?
39 | 线性回归(上):如何使用高斯消元求解线性方程组?
40 | 线性回归(中):如何使用最小二乘法进行直线拟合?
41 | 线性回归(下):如何使用最小二乘法进行效果验证?
42 | PCA主成分分析(上):如何利用协方差矩阵来降维?
43 | PCA主成分分析(下):为什么要计算协方差矩阵的特征值和特征向量?
44 | 奇异值分解:如何挖掘潜在的语义关系?
45 | 线性代数篇答疑和总结:矩阵乘法的几何意义是什么?
综合应用篇 (6讲)
46 | 缓存系统:如何通过哈希表和队列实现高效访问?
47 | 搜索引擎(上):如何通过倒排索引和向量空间模型,打造一个简单的搜索引擎?
48 | 搜索引擎(下):如何通过查询的分类,让电商平台的搜索结果更相关?
49 | 推荐系统(上):如何实现基于相似度的协同过滤?
50 | 推荐系统(下):如何通过SVD分析用户和物品的矩阵?
51 | 综合应用篇答疑和总结:如何进行个性化用户画像的设计?
加餐 (3讲)
数学专栏课外加餐(一) | 我们为什么需要反码和补码?
数学专栏课外加餐(二) | 位操作的三个应用实例
数学专栏课外加餐(三):程序员需要读哪些数学书?
结束语 (1讲)
结束语 | 从数学到编程,本身就是一个很长的链条
程序员的数学基础课
登录|注册

导读:程序员应该怎么学数学?

黄申 2018-12-07
你好,我是黄申。
在开篇,我详细讲了程序员为什么需要学数学。那么,怎样的学习方法才是行之有效的呢?我想你现在心里还没有一个固定的答案,而我不想一味地去讲我自己的一家之言,毕竟没有什么学习方法是最好的。
你能做的是要多看,去找适合自己的。而我能做的,就是尽量给你更多的参考,让你可以自己来选择。所以,我邀请了几位朋友,让他们来谈一谈,自己学习数学的一些心得体会,希望对你有所启发。

刘超 | 《趣谈网络协议》专栏作者:“学数学就像学一门新技术”

程序员是否需要学好数学?原本学数学分析、概率论、线性代数的时候,我也没想到数学和写程序有啥关系,但是随着研究的开源软件越来越多,我发现很多技术深入下去,本质就是数学。
程序员应该怎么学习数学呢?我不建议你将大学的数学书拿出来啃一遍,一来耗费大量时间,二来和实际应用结合不起来,往往该看的忽略了,不该看的费了半天劲用不上,过一阵又忘了。
我们了解一个新技术有三个阶段,第一阶段是,怎么使用;第二阶段是,如何实现,原理是什么;第三阶段是,为什么这样实现。学数学和学一门新技术一样,也有这样三个阶段,先用起来,了解原理,然后了解为什么。
用一句话来说,我们不能为了数学而学数学,学数学要和具体的应用结合在一起。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《程序员的数学基础课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(152)

  • 蔡雪钧 置顶
    图是用什么工具画的

    编辑回复: iPad Paper

    2018-12-10
    28
  • shuifa
    我学数学是为了防止老年痴呆,老师不要笑话我,😂
    2018-12-07
    155
  • Jerry银银
    死磕:这是一种精神

    实践:有目的的使用,刻意练习

    反思:举一反三,串联知识



    2018-12-07
    62
  • Mr.J
    当初大学的时候,总给自己找各种借口不学数学,说什么用不到,因为还没对编程有一个全的认识,后来随着开发时间的边长,越来越觉得数学都多么的重要,当初大学那么好的机会学各种高等数学,都白白浪费了,现在看到这个课,毫不犹豫,连别人的优惠码都没找,直接就订阅了!

    作者回复: 感谢你的支持!相信这个专栏对你会有启发

    2018-12-07
    28
  • 开心
    打卡 数学之美 我的方法是在讲完一种算法然后用python去实现,然后应用
    2018-12-07
    27
  • 帅迪
    因为工作中使用SQL最多,在用SQL完成了相当多的工作后,每天看到类似的工作感到烦闷无聊,明知道自己动动脑,动动手,使用经验就能完成,但就是提不起热情来。

    直到最近看了一本关于SQL进阶的书,在讲解完实用内容之后,最后压轴的内容就是讲SQL的数学基础——集合论和逻辑学。让我感到数据库相关的工作乐趣无穷,重新燃起了对编程的热情。书中的后记印象深刻:

    “这个世界没有一天是无聊的,只不过是你懒惰已久的感官无法发现眼前事物的乐趣而已”。

    总之,我会用专栏中的数学思维重新审视日常工作,并记录所感。

    作者回复: 非常好的感想,希望本专栏给你带来更多的触动

    2018-12-09
    4
    24
  • someday
    因为数学差,所以要跟数学干到底
    2018-12-07
    14
  • 恋恋
    大学中唯一对数学用到编程中的三件事就是:1,在竞赛中用微积分把一段冗长的代码化简为一个很简单的递归程序;2,在数学建模竞赛上用概率论公式求数据拟合度;3,用线性代数中的矩阵变换求图形学中会用到的世界、窗口坐标系。
    关于这门专栏的学习,我是抱着抛弃曾经脑海中残留的幻觉影像,重新开始一步一步的学习体会,不管是问题还是心得体会都会通过留言的方式发布出来,到时有不妥的地方还望老师指点一二!
    2018-12-12
    13
  • 南山
    打卡
    2018-12-07
    1
    9
  • 北天魔狼
    数学是手段,不是目的。我学数学就是为了更好理解算法。
    2018-12-07
    8
  • 广洲
    我是为了从零开始,转行成功。祝福我吧
    2019-02-17
    7
  • 单车
    老师,想请教一下您!
    因为大学时候非常懈怠,以至于高数、线代、概率论等数学课程基本没有去学,很多都挂科了,所以想知道这样的基础学您的课程没问题吗(高中数字学的其实很不错,但是这会儿也忘的差不多了)?
    还有,学完您的课程,以后做算法、机器学习之类的是不是相当于有了一个数学基础,不用再去补这方面的空缺,学会运用就行,还有,需要去补补以前落下的高数、线代之类的吗?需不需要同时学一些别的数学课程或者书籍来巩固和加强自己的学习成果!

    作者回复: 你好,我是从基础开始,逐步深入的,你应该跟得上。比较难的部分我尽量讲得浅显易懂,让你可以入门,之后你再去看更多相关的资料就会更轻松

    2018-12-11
    5
  • Noah
    在学习之前先把知识地图在脑中勾勒起来,发着金光,逐项学习时尽量把知识点通过编程实现以加深印象,举一反三,思考这个知识点还可以用在什么地方,举个例子,及时复习,书读百遍,先从认真学完一遍做起。
    2018-12-07
    4
  • Faraway
    大学狗听着有些名词好陌生哈哈
    2018-12-11
    3
  • 战斗力只有2的渣
    考研复习的时候,静下心来自己习读大学数学课本,才发现除了微积分以外,线性代数和概率论与数理统计其实真的很好玩,无奈课本本身编排的很无聊,之后就一直想寻找能把数学讲的好玩的课程。看了几位老师的分享,深以为然!对老师充满期待!
    2018-12-10
    3
  • upup
    渣渣学校应用数学专业,说实话学了四年数学并不知道如何应用。
    2018-12-08
    3
  • 陈小虎
    原来不只是我觉得联系数学不到实际学着很无聊:)
    2018-12-07
    3
  • escray
    我是在专栏结束之后才再一次开始学习的,我注意到,刚开始的时候,放出来的精选留言比较多,后来就越来越少了——比较合理的推测是,不少同学都逐渐掉队了。我之前也追过专栏的更新,不过很快就放弃掉了。

    那么对我来说,首先要争取能够把整个专栏完整的过一遍,建立一个基本的框架。

    在这个基础上,争取每篇都能写留言,或者是自己的想法,或者是回答课后问题。

    既然是一个与编码有关的数学专栏,如果能够做到学完每篇文章之后,留下一点代码,就更好了。不论是照抄文中的示例代码,还是从网络上找到的相关示例代码,当然最好的是自己手写的代码。

    如果能够顺利完成这个专栏,那么接下来会去学习算法专栏,也算是提前做一点准备。

    作者回复: 感谢你的留言,让我也产生了一些感触,相信这个专栏会对你有所帮助!

    2019-05-14
    2
  • 予悠悠
    学这门课是希望能够从一个新的角度认识数学
    2019-01-18
    2
  • 西北偏北
    总结来看,还是要从应用出发。不能想着系统体系的去学大学当中的数学书。你没这个时间,并且太偏理论,离实际应用远,你会边学边忘,映像不深。带着问题,去看一些视频课程,实战,揣摩。知道这个诞生的背景,和目的。这是学所有知识最好,最快的方式。
    2018-12-25
    2
收起评论
99+
返回
顶部