给计算机专业同学的二三建议​​

简介: 每个计算机专业的同学都要掌握的知识

01 每个计算机专业的同学都要掌握的知识


1.gif


每个计算机专业的同学都要掌握的知识


What every computer science major should know

https://matt.might.net/articles/what-cs-majors-should-know/

https://matt.might.net/articles/what-cs-majors-should-know/


计算机专业的课程繁多并且学科发展迅速,而且随着时代的变化,直接套用现有的计算机专业课程列表,则有可能忽略一些将来可能变得重要的知识点。


对此 Matthew Might 在文章中概括为以下四点:


要获得一份好工作,学生需要知道什么?

为了一辈子都有工作做,学生需要知道什么?

学生需要知道什么,才能进入研究生阶段?

学生需要知道什么,才能对社会有益?

首先,对于我们每个人来说,作品集(Portfolio)会比简历(Resume)更有参考意义。所以,在自己的简历中应该放上自己的一些项目经历,或是一些开源软件的贡献,或是你完成的软件的网址等。


最好有一个自己的个人网址,上面有一些你做的事、自己的技能、经历,以及你的一些文章和思考会比简历更好。


其次,计算机专业工作者也要学会与人交流的技巧,包括如何写演示文稿,以及面对质疑时如何与人辩论的能力。


最后就各个方面展开计算机专业人士所需要的硬技能:工程类数学、Unix哲学和实践、系统管理、程序设计语言、离散数学、数据结构与算法、计算机体系结构、操作系统、网络、安全、密码学、软件测试、用户体验、可视化、并行计算、软件工程、形式化方法、图形学、机器人、人工智能、机器学习、数据库等等。


详读本文可以了解计算机专业知识的全貌。


这篇文章的第三部分是一个知识资源向导库,给出了各个技能的方向和关键知识点,可以跟随着这篇文章里的相关链接学到很多东西。

02 基于Github的编程语言 和代码质量研究报告



https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-programming-languages-and-code-quality-in-github/fulltext

https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-programming-languages-and-code-quality-in-github/fulltext


这是一项有趣的研究,作者从GitHub上分析了728个项目,6300万行代码,近3万个提交人,150万次commits,17种编程语言,他们想找到编程语言对软件质量的影响,其中每个语言最著名的三个开源项目如下图:


2.png

每种编程语言排名前三的项目


他们还对编程语言做了一个分类,找到不同类型的编程语言的bug问题。下图是各个编程语言的bug情况。正数说明高于平均水平,是负数则是低于平均水平。


3.png4.png


结论是,从查看bug fix的commits的次数情况来看,C,C++,Objective-C,PHP和Python中有很多很多的commits都是和bug fix相关的而Clojure,Haskell,Ruby.Scala在bug fix的commits的数上明显要少很多。


其次,函数式编程语言的bug明显比大多数其它语言要好很多。有隐式类型转换的语言明显产生的bug数要比强类型的语言要少很多。函数式的静态类型的语言要比函数式的动态类型语言的程序出bug的可能性要小很多。


03 大家都应当读一读的书



《深入理解操作系统》:


从程序员的视角,看计算机系统


本书适用于那些想要写出更快、更可靠程序的程序员。通过掌握程序是如何映射到系统上,以及程序是如何执行的,我们能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成的。


此外还推荐给大家以下四本书:


 《程序员修练之道》

       指路明灯,更多的是软实力的辅导


《设计模式》


       面向对象设计的经典书籍


《算法导论》


       本科生教材


《代码整洁之道》


       细节之处的效率,完美和简单


相关文章
|
5月前
|
机器学习/深度学习 物联网 定位技术
保研夏令营面试、考研复试自我介绍、个人展示模板与撰写注意事项
保研夏令营面试、考研复试自我介绍、个人展示模板与撰写注意事项
|
8月前
|
算法 网络协议 Java
备战秋招狂刷这份大厂级24W字java面试手册2个月可成功逆袭上岸!
23年金三银四程序员跳槽或者找工作并不理想,迟迟找不到工作,甚至大厂还进行几轮裁员,导致整个就业市场都不是太好! 出现这种情况是因为中美贸易战,导致大环境不好、大厂裁员、就业情况差、企业要求变高、各行各业越来越卷,尤其是程序员,处于这个阶段,感觉特别明显! 对于程序员这个群体来说,java程序员的占比就非常之高,就业市场等于说是千军万马过独木桥,简直可以说是太难了!卷不过、根本卷不过! 在这里想说的是,大环境已经这样了,我们已经也无法左右这个市场,根本没有选择的余地,所以,打不过就加入,努力的提升自己能技术能力,直接吊打面试官! 这不,就迎来了大厂级24W字java面试手
60 0
|
存储 分布式计算 算法
江苏大学 操作系统 知识点提纲 期末考试/考研 复习
江苏大学 操作系统 知识点提纲 期末考试/考研 复习
235 0
|
机器学习/深度学习 并行计算 测试技术
百度飞桨学院小白逆袭大神第四天(笔记+解题思路)
百度飞桨学院小白逆袭大神第四天(笔记+解题思路)
118 0
百度飞桨学院小白逆袭大神第四天(笔记+解题思路)
|
机器学习/深度学习 存储 算法
写给小白看的硬核递归(低调点,当回小白)
递归:就是函数自己调用自己。 子问题须与原始问题为同样的事,或者更为简单。 递归通常可以简单的处理子问题,但是不一定是最好的解决方式。
73 0
写给小白看的硬核递归(低调点,当回小白)
|
人工智能 算法 程序员
CSDN粉丝解答:六月份第一期精选——互联网笔试编程解决、简单bug处理、编程系统设计等
CSDN粉丝解答:六月份第一期精选——互联网笔试编程解决、简单bug处理、编程系统设计等
CSDN粉丝解答:六月份第一期精选——互联网笔试编程解决、简单bug处理、编程系统设计等
|
Android开发 iOS开发
​面试中的小妙招!
​面试中的小妙招!
​面试中的小妙招!
|
存储 缓存 NoSQL
小林求职记(二):说好的问基础,为啥我感觉一点也不基础呢?
小林求职记(二):说好的问基础,为啥我感觉一点也不基础呢?
小林求职记(二):说好的问基础,为啥我感觉一点也不基础呢?