计算机专业应该掌握的数学知识

时间:2022-01-10 09:05:33
计算机专业应该掌握的数学知识

在校的计算机专业学生可能还没有体会到数学的重要性,还在忙于死记硬背各种公式应付考试。而已工作或是读研读博并且“真正在用计算机做事的人“都会知道数学的重要性,这里的“真正做事的人”,不是指那些会几种计算机语言,平时写点没什么技术含量的网页或者数据库编程做几个MIS或者WEBSITE的之类的二流程序员,那是搞计算机最低的层次,属于简单应用(当然简单应用里面不代表没有高手,这和厨师里面有特级一级二级一样),计算机作为一种工具同时又是一门科学,我这里指把计算机作为科学来研究的人。

计算机本身的工具属性决定了计算机的发展必须和具体行业或者学科结合起来,最后利用计算机完成人工手工无法完成的工作,比如超大运算量,尤其在理工科用的最多,大部分理工科都是以数学为基础的,那么计算机上处理最多的就是各种数学模型与运算,而这些都离不开各种数学知识。根据我多年的工作经验,我整理了一下计算机专业最应该具备的数学知识:

1.《高等数学》             最重要的课,无需多言
2.《概率论与数理统计》     最重要的课,语音、图像、信号、通信等方向都要用到,也是金融方向用的最多的
3.《复变函数和积分变换》   最重要的课,我就是因为大学没学这课,后来科研中遇到了很多问题,可以说掌握的越好以后越有前途
4.《线性代数》             最重要的课,大部分方向都会用到,图像、信号、密码、神经网络等
5.《数值分析》             搞计算机算法的,如果不掌握数值分析,可以说很多问题都难以解决,这是门专业基础课,工具型很强
6.《信号处理》             所有信号类的基础,数学知识的综合应用,大量滤波算法
7.《随机信号分析》         信号处理等方向
8.《离散数学》             很重要,但我本人用到的不多,是很多理论的基础
9.《小波变换》             用的很广泛,信号、生物学等方向

以上是我觉得最重要的几门课,其他的数学知识在实际中用的比较少,或者我还没研究到那个层次。这几门课我觉得至少1-5都是要好好掌握的,特别是复变函数和积分变换,可以说95%的研究领域都是要用到的。

编程语言程是每个搞理工科必须掌握的基础,是使计算机成为工具的第一步,掌握上述的数学知识是第二步,是使计算机成为真正工具的关键。我自己工作多年也体会到了数学不够带来的痛苦,好在现在网络资源丰富,可以下到很多视频课程和书,弥补一下知识欠缺。但是在找这些资料的时候,也发现很多教程都写得相当晦涩难懂(很多人出书是为了评职称),不如欧美日本的教程写得好。我也和出版社打过交道写过书,知道中国出版社对书的语言限制非常死,所以几乎没有通俗易懂的好书,打开来都是公式叠公式,这点和欧美日本差距很大,希望以后能有所改观。

今天发现日本有个漫画数学系列,其中一本叫《漫画傅里叶解析》,我没看过,看评论好像还不错,真是佩服日本人,这么复杂的理论都能用漫画说清楚。也希望有一天自己的水平能提升到足够高度,写些通俗易懂的书。

44 个解决方案

#1


计算机专业应该掌握的数学知识

#2


计算机专业应该掌握的数学知识

#3


不明觉厉  感觉数学已经忘光了

#4


到很高级搞算法才会有用,一般写写代码不要很高深的数学知识

#5


线性代数还是离散数学,对数组什么的理解很有用处,高等数学貌似也没什么地方有用,概率的话只能说偶尔有些地方要用到,其它的从来没学过,不在课程范围内

#6


引用 5 楼 娃都会打酱油了的回复:
线性代数还是离散数学,对数组什么的理解很有用处,高等数学貌似也没什么地方有用,概率的话只能说偶尔有些地方要用到,其它的从来没学过,不在课程范围内

在一些追求效率的程序里,基本的时间复杂度概念还是要有的,比如二分是logN,线性是N

#7


  楼主的语气带有眼高和自我的境界,如果做一个网页真的像你说的低级,你能开发一套简单的UI架构吗?你知道色彩、设计学吗?开完一套网站的网站至少要有色彩、设计和布局!每一种语言都有自己的特点!
  我们也知道go、d、rust、c/c++都是更接触硬件和系统层的东东,但是也没有什么!至少我认为色彩学光这门学问很少人有这个天赋(基于牛顿的光学)
  

#8


看到这话,就觉得你还很年轻,真好。
其实没必要这么较真啦,眼高和自我,是绝大多数人的通病。在我看来,楼主的观点,面对大众群体,是足够正确的,这就行了。
只要说得有道理,我们就应该认可。没错,网页也是一门大学问,但这玩意跨度很大的:门槛极低,而出彩很难(简单说,就是易学难精)。若是泛泛而谈,人家觉得网页很低级,也是正常的。
我是先玩计算机编程,然后考入数学系,最后跑IT界的一个小混混,所以我比较理解楼主说的这些数学知识对计算机的重要性。但理解归理解,对于不同的人,不同的IT分支,侧重点是不一样的。楼主有自己的角度和立场,你也有自己的角度和立场,求同存异,不必有太多争论。
引用 7 楼 yschysn 的回复:
  楼主的语气带有眼高和自我的境界,如果做一个网页真的像你说的低级,你能开发一套简单的UI架构吗?你知道色彩、设计学吗?开完一套网站的网站至少要有色彩、设计和布局!每一种语言都有自己的特点!
  我们也知道go、d、rust、c/c++都是更接触硬件和系统层的东东,但是也没有什么!至少我认为色彩学光这门学问很少人有这个天赋(基于牛顿的光学)
  

#9


只能说,当你停止复制粘贴时,数学就有用了!但是比起数学,数学模型更重要。

#10


线代,高数应该有。OpenGL要用的知识挺多。

#11


大多数时候这些东西只是用来装b的。

#12


引用 8 楼 super_admi 的回复:
看到这话,就觉得你还很年轻,真好。
其实没必要这么较真啦,眼高和自我,是绝大多数人的通病。在我看来,楼主的观点,面对大众群体,是足够正确的,这就行了。
只要说得有道理,我们就应该认可。没错,网页也是一门大学问,但这玩意跨度很大的:门槛极低,而出彩很难(简单说,就是易学难精)。若是泛泛而谈,人家觉得网页很低级,也是正常的。
我是先玩计算机编程,然后考入数学系,最后跑IT界的一个小混混,所以我比较理解楼主说的这些数学知识对计算机的重要性。但理解归理解,对于不同的人,不同的IT分支,侧重点是不一样的。楼主有自己的角度和立场,你也有自己的角度和立场,求同存异,不必有太多争论。
Quote: 引用 7 楼 yschysn 的回复:

  楼主的语气带有眼高和自我的境界,如果做一个网页真的像你说的低级,你能开发一套简单的UI架构吗?你知道色彩、设计学吗?开完一套网站的网站至少要有色彩、设计和布局!每一种语言都有自己的特点!
  我们也知道go、d、rust、c/c++都是更接触硬件和系统层的东东,但是也没有什么!至少我认为色彩学光这门学问很少人有这个天赋(基于牛顿的光学)
  


说的都是废话,书读多了,脑子不好用了。 

#13


如果你碰到楼主这样的人做领导,你就明白了。 他觉得你这个也不会,那个也不懂,真正干活又用不到。他自己又不干活,还到处鄙视你。 
这些东西还是留给博士们研究吧。

#14


数论,图论居然没有?ACM必备。

#15


楼主和8楼就是特种兵,觉得火头兵和后勤部队不是“真正做事的人“,希望你们这些”真正做事的人”最基本搞个开源的国产系统出来看看,不要基于unix、linux、window,就从新写一个简单的即可!这样我们才真的认为你们是真正做事的人!不然那些简单的事情能够对于你们来说真的没有挑战!

#16


数学吗?不可否认,真的很有用。可是那玩意儿自学真的太难了,自己没有兴趣又没有好的老师指导,那就不要想了,浪费时间

#17


楼主 换个标题吧,把应该改成最好

#18


不搞算法研究真的不需要什么数学了,循环跟递归弄明白基本就差不多了 

#19


在学习新技术的同时,不能忽视对基础科学本质的深入学习,只有那样才可以创造出技术,比如导弹,导航卫星,都是需要数学算法的
,还有合成孔径雷达信号处理

#20


导弹设计!吓我一身冷汗!我还是去做二流程序员吧!!

#21


哈弗大学计算机和数学课程
http://www.math.harvard.edu/courses/index.html
http://www.seas.harvard.edu/programs/computer-science/planning-degrees-courses

清华大学计算机和数学课程
http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/education/edu-1-2-2014.html
http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/education/pdf/201419.pdf
http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/education/pdf/201424.pdf

#22


新加坡国立大学课程
http://www.nus.edu.sg/registrar/nusbulletin/other-multidisciplinary-special-programmes/double-degree-computer-sciences-and-mathematics-applied-mathematics

#23


都是搞IT的 就算你做的高级 也不能歧视其他IT工作者

#24


+10086
支持楼主

#25


三流码农 路过.........


计算机专业应该掌握的数学知识

#26


虽然大学这些都学了,考试全80+,90左右的,然而这并没有什么卵用。

#27


中国的学生就是背书比较厉害

#28


引用 26 楼 luoguansong 的回复:
虽然大学这些都学了,考试全80+,90左右的,然而这并没有什么卵用。

如果上述课程都掌握,可以尝试一下科研性强的软件工作,绝对是有回报的

#29


要是做算法工程师,这些需要学习,做软件研发,这些不是必须的

#30


半路出家程序员,对数学一直颇为头痛。现在有时会想学,但有很多其他的东西总会挤开时间。

#31


建议去看看网易公开课国外的数学视频,国内的数学觉得很坑,国外的数学学以致用,真心不错!

#32


楼主列的课程大学里基本都学过,但是早就还给老师了。
只是做应用的话,离散数学就足够了,其他的还真的用不上。

#33


计算机专业应该掌握的数学知识感谢分享。
同时告诉你为什么米国、日本为什么这么牛。
http://ezheng.people.com.cn/proposalPostDetail.do?boardId=1&view=1&id=1880396
http://www.csdn.net/article/2015-06-02/2824834
同时我觉得学好外语是很重要滴,详细见: http://yuxping.blogchina.com/1209958.html一文

#34


计算机往软件深入是数学,往硬件深入是物理

#35


感觉无论是应用层还是底层,朝着自己的感兴趣的方面研究就是件好事,感觉没必要较真,毕竟兴趣不一样啊

#36


楼主说的非常有道理的。如果高等数学没搞同,下面的统计概率也很难懂,如果概率什么的不懂,你说你是数据挖掘的高手,你不是跟我扯淡嘛。一环扣一环。
很多数学书都只给你知识,不给你用的方向。

#37


其实只要知道0 1 就行了。

#38


软件技术越深入就会发现数学越重要,计算机的本质是什么,是计算,计算就是数学

#39


做图像处理什么的超考验数学知识

#40


现在写代码没有用到数学知识

#41


这个漫画系列确实不错的

#42


中国人出书 就是怕人家看懂 更怕很容易看懂,不下功夫装b 而已

还有这么多数学理论很难 去学完 平时只能记个大概用的时候 再学习研究即可,使用数学而已不是搞数学研究
要使用主要还是需要先理解这些数据理论的 基本思想 而国内的sb些把这些理论 视若~明,好象在一味膜拜,生怕
人家很容易就懂了的似的,而且本身有很多数学理论 也不成熟 或很烂,需要 甄别吧。多利用网络参考 动手即可

所以理解有时还是一个痛苦和漫长的过程 但并不需要什么智商,只是理清复杂度和那些装b的语言背后的意思

#43


搞图像算法的需要,其他软件开发一般不需要。
我也总结下自己平常工作中需要用到的:
1.《数学分析》
2.《高等代数》
3.《概率论与数理统计》
4.《数值分析》
5.《常微分方程》&《偏微分方程》及数值解法
6.《优化理论》
7.《实变函数》&《泛函分析》---有精力可以学学
8.《小波变换》---总感觉虽然理论牛逼,但是实际没有用到多少,跟工作有关系。
等。
其实搞算法的除了这些基础外,还有更多其它的,另外那些只能从paper中获取了。

#44


至少在搞前端FLASH曲线的时候,接触过高中学的解析几何的一些知识。直线方程、双曲线方程、三角函数等等,做物体运动的时候也会用到这些。
另外之前还没看完的o'Reilly的《集体智慧编程》一书中更是对如欧几里德距离,皮尔逊相关度扥一些数学公式有实用性的阐述。
不管怎么样,学好数学肯定对编程有帮助

#1


计算机专业应该掌握的数学知识

#2


计算机专业应该掌握的数学知识

#3


不明觉厉  感觉数学已经忘光了

#4


到很高级搞算法才会有用,一般写写代码不要很高深的数学知识

#5


线性代数还是离散数学,对数组什么的理解很有用处,高等数学貌似也没什么地方有用,概率的话只能说偶尔有些地方要用到,其它的从来没学过,不在课程范围内

#6


引用 5 楼 娃都会打酱油了的回复:
线性代数还是离散数学,对数组什么的理解很有用处,高等数学貌似也没什么地方有用,概率的话只能说偶尔有些地方要用到,其它的从来没学过,不在课程范围内

在一些追求效率的程序里,基本的时间复杂度概念还是要有的,比如二分是logN,线性是N

#7


  楼主的语气带有眼高和自我的境界,如果做一个网页真的像你说的低级,你能开发一套简单的UI架构吗?你知道色彩、设计学吗?开完一套网站的网站至少要有色彩、设计和布局!每一种语言都有自己的特点!
  我们也知道go、d、rust、c/c++都是更接触硬件和系统层的东东,但是也没有什么!至少我认为色彩学光这门学问很少人有这个天赋(基于牛顿的光学)
  

#8


看到这话,就觉得你还很年轻,真好。
其实没必要这么较真啦,眼高和自我,是绝大多数人的通病。在我看来,楼主的观点,面对大众群体,是足够正确的,这就行了。
只要说得有道理,我们就应该认可。没错,网页也是一门大学问,但这玩意跨度很大的:门槛极低,而出彩很难(简单说,就是易学难精)。若是泛泛而谈,人家觉得网页很低级,也是正常的。
我是先玩计算机编程,然后考入数学系,最后跑IT界的一个小混混,所以我比较理解楼主说的这些数学知识对计算机的重要性。但理解归理解,对于不同的人,不同的IT分支,侧重点是不一样的。楼主有自己的角度和立场,你也有自己的角度和立场,求同存异,不必有太多争论。
引用 7 楼 yschysn 的回复:
  楼主的语气带有眼高和自我的境界,如果做一个网页真的像你说的低级,你能开发一套简单的UI架构吗?你知道色彩、设计学吗?开完一套网站的网站至少要有色彩、设计和布局!每一种语言都有自己的特点!
  我们也知道go、d、rust、c/c++都是更接触硬件和系统层的东东,但是也没有什么!至少我认为色彩学光这门学问很少人有这个天赋(基于牛顿的光学)
  

#9


只能说,当你停止复制粘贴时,数学就有用了!但是比起数学,数学模型更重要。

#10


线代,高数应该有。OpenGL要用的知识挺多。

#11


大多数时候这些东西只是用来装b的。

#12


引用 8 楼 super_admi 的回复:
看到这话,就觉得你还很年轻,真好。
其实没必要这么较真啦,眼高和自我,是绝大多数人的通病。在我看来,楼主的观点,面对大众群体,是足够正确的,这就行了。
只要说得有道理,我们就应该认可。没错,网页也是一门大学问,但这玩意跨度很大的:门槛极低,而出彩很难(简单说,就是易学难精)。若是泛泛而谈,人家觉得网页很低级,也是正常的。
我是先玩计算机编程,然后考入数学系,最后跑IT界的一个小混混,所以我比较理解楼主说的这些数学知识对计算机的重要性。但理解归理解,对于不同的人,不同的IT分支,侧重点是不一样的。楼主有自己的角度和立场,你也有自己的角度和立场,求同存异,不必有太多争论。
Quote: 引用 7 楼 yschysn 的回复:

  楼主的语气带有眼高和自我的境界,如果做一个网页真的像你说的低级,你能开发一套简单的UI架构吗?你知道色彩、设计学吗?开完一套网站的网站至少要有色彩、设计和布局!每一种语言都有自己的特点!
  我们也知道go、d、rust、c/c++都是更接触硬件和系统层的东东,但是也没有什么!至少我认为色彩学光这门学问很少人有这个天赋(基于牛顿的光学)
  


说的都是废话,书读多了,脑子不好用了。 

#13


如果你碰到楼主这样的人做领导,你就明白了。 他觉得你这个也不会,那个也不懂,真正干活又用不到。他自己又不干活,还到处鄙视你。 
这些东西还是留给博士们研究吧。

#14


数论,图论居然没有?ACM必备。

#15


楼主和8楼就是特种兵,觉得火头兵和后勤部队不是“真正做事的人“,希望你们这些”真正做事的人”最基本搞个开源的国产系统出来看看,不要基于unix、linux、window,就从新写一个简单的即可!这样我们才真的认为你们是真正做事的人!不然那些简单的事情能够对于你们来说真的没有挑战!

#16


数学吗?不可否认,真的很有用。可是那玩意儿自学真的太难了,自己没有兴趣又没有好的老师指导,那就不要想了,浪费时间

#17


楼主 换个标题吧,把应该改成最好

#18


不搞算法研究真的不需要什么数学了,循环跟递归弄明白基本就差不多了 

#19


在学习新技术的同时,不能忽视对基础科学本质的深入学习,只有那样才可以创造出技术,比如导弹,导航卫星,都是需要数学算法的
,还有合成孔径雷达信号处理

#20


导弹设计!吓我一身冷汗!我还是去做二流程序员吧!!

#21


哈弗大学计算机和数学课程
http://www.math.harvard.edu/courses/index.html
http://www.seas.harvard.edu/programs/computer-science/planning-degrees-courses

清华大学计算机和数学课程
http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/education/edu-1-2-2014.html
http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/education/pdf/201419.pdf
http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/education/pdf/201424.pdf

#22


新加坡国立大学课程
http://www.nus.edu.sg/registrar/nusbulletin/other-multidisciplinary-special-programmes/double-degree-computer-sciences-and-mathematics-applied-mathematics

#23


都是搞IT的 就算你做的高级 也不能歧视其他IT工作者

#24


+10086
支持楼主

#25


三流码农 路过.........


计算机专业应该掌握的数学知识

#26


虽然大学这些都学了,考试全80+,90左右的,然而这并没有什么卵用。

#27


中国的学生就是背书比较厉害

#28


引用 26 楼 luoguansong 的回复:
虽然大学这些都学了,考试全80+,90左右的,然而这并没有什么卵用。

如果上述课程都掌握,可以尝试一下科研性强的软件工作,绝对是有回报的

#29


要是做算法工程师,这些需要学习,做软件研发,这些不是必须的

#30


半路出家程序员,对数学一直颇为头痛。现在有时会想学,但有很多其他的东西总会挤开时间。

#31


建议去看看网易公开课国外的数学视频,国内的数学觉得很坑,国外的数学学以致用,真心不错!

#32


楼主列的课程大学里基本都学过,但是早就还给老师了。
只是做应用的话,离散数学就足够了,其他的还真的用不上。

#33


计算机专业应该掌握的数学知识感谢分享。
同时告诉你为什么米国、日本为什么这么牛。
http://ezheng.people.com.cn/proposalPostDetail.do?boardId=1&view=1&id=1880396
http://www.csdn.net/article/2015-06-02/2824834
同时我觉得学好外语是很重要滴,详细见: http://yuxping.blogchina.com/1209958.html一文

#34


计算机往软件深入是数学,往硬件深入是物理

#35


感觉无论是应用层还是底层,朝着自己的感兴趣的方面研究就是件好事,感觉没必要较真,毕竟兴趣不一样啊

#36


楼主说的非常有道理的。如果高等数学没搞同,下面的统计概率也很难懂,如果概率什么的不懂,你说你是数据挖掘的高手,你不是跟我扯淡嘛。一环扣一环。
很多数学书都只给你知识,不给你用的方向。

#37


其实只要知道0 1 就行了。

#38


软件技术越深入就会发现数学越重要,计算机的本质是什么,是计算,计算就是数学

#39


做图像处理什么的超考验数学知识

#40


现在写代码没有用到数学知识

#41


这个漫画系列确实不错的

#42


中国人出书 就是怕人家看懂 更怕很容易看懂,不下功夫装b 而已

还有这么多数学理论很难 去学完 平时只能记个大概用的时候 再学习研究即可,使用数学而已不是搞数学研究
要使用主要还是需要先理解这些数据理论的 基本思想 而国内的sb些把这些理论 视若~明,好象在一味膜拜,生怕
人家很容易就懂了的似的,而且本身有很多数学理论 也不成熟 或很烂,需要 甄别吧。多利用网络参考 动手即可

所以理解有时还是一个痛苦和漫长的过程 但并不需要什么智商,只是理清复杂度和那些装b的语言背后的意思

#43


搞图像算法的需要,其他软件开发一般不需要。
我也总结下自己平常工作中需要用到的:
1.《数学分析》
2.《高等代数》
3.《概率论与数理统计》
4.《数值分析》
5.《常微分方程》&《偏微分方程》及数值解法
6.《优化理论》
7.《实变函数》&《泛函分析》---有精力可以学学
8.《小波变换》---总感觉虽然理论牛逼,但是实际没有用到多少,跟工作有关系。
等。
其实搞算法的除了这些基础外,还有更多其它的,另外那些只能从paper中获取了。

#44


至少在搞前端FLASH曲线的时候,接触过高中学的解析几何的一些知识。直线方程、双曲线方程、三角函数等等,做物体运动的时候也会用到这些。
另外之前还没看完的o'Reilly的《集体智慧编程》一书中更是对如欧几里德距离,皮尔逊相关度扥一些数学公式有实用性的阐述。
不管怎么样,学好数学肯定对编程有帮助