编程
编程是一个实践性的科目,所以一定要进行实操练习,不能光看不写代码,否则学习效果会大打折扣。对于视频中或者书中的代码示例,一定要跟着敲一遍和运行一遍,如果有练习题也尽量完成。你会发现我推荐的大部分是视频资料,因为看视频跟着敲代码更方便一点(善用电脑的分屏功能,或者买个平板),一边看书一边敲代码不符合大多数人的习惯。学习的时候自己跟着敲代码是很重要的,因为看得懂代码和会写代码是差别很远的两件事,可以类比看得懂数学题答案和会解数学题。所以一定要跟着敲代码,有练习题的话也要尽量完成!
平时可以多做一些有趣的小项目,比如用Python写一个网站爬虫来帮助自己快速收集信息、用前端技术开发个人网站等等。编程语言是一个非常有用的工具,可以用来做很多有意思的事情。学会利用编程语言这个工具来提升自己的日常生活效率,而不要只是把编程语言当成为了学分不得不学习的又一个枯燥的科目。
这里首先推荐哈佛大学的 CS50,这是哈佛大学的一门通识课,是入门编程和计算机科学的绝佳选择。不管是零基础还是之前已经学过一点编程了,都非常建议看一看,课程涵盖了C语言,Python,SQL,前后端开发等等知识,可以帮助建立起对整个计算机世界的了解。
Python
Python 是信管专业使用频率最高的语言,掌握好 Python 会让你成为同学眼中的大神,老师眼中的香饽饽。因为大量的课作业程和科研项目都需要进行数据的爬取、处理和分析,这些都是 Python 所擅长的。同时 Python 还可以用于搭建 Web 应用,做大作业的时候会有很大帮助。
入门
由密歇根大学教授 Charles Severance 讲授的一门 Python 入门课,可以说是全球最受欢迎的 Python 入门教程了。教授无私地在课程网站上面提供了所有的讲义、课程视频、练习题和参考资料(可能需要科学上网才能有完整的体验哦)。非常建议用它来开始你的 Python 入门之旅!
教授的主页上面还有一些其他课程的链接,包括Django,计算机网络,Web应用开发等等,感兴趣的同学也可以看看
Python语言基础与应用 - 陈斌
这门课系统地讲解了Python的所有基础知识,也提供了编程作业。如果完全没有学过编程,北理工嵩天老师的的Python课程或许更适合你。
进阶
这本书是供有一定Python基础的同学阅读的,前几章也有对Python基础的复习。其内容主要是对
Numpy
,Pandas
和Matplotlib
这几个库的介绍,提供了很多数据分析的实例。这些内容在后续的课程机器学习相关课程中会被大量的使用,在科研项目中也十分常用,因此非常推荐学习。本书目前中文版只有第二版,英文版已经出到了第三版,且可以免费在线阅读,大家可以根据自己的需要选择。
C语言
C语言对于信管的同学来说实用价值并不高,可以说基本上不会用到,但学习C语言可以很好地锻炼你的编程能力,所以并不是毫无价值。如果你想要深入学习计算机科学,那么对C语言的了解更是必不可少的。
入门
C语言入门课程 - 翁恺
翁恺老师的编程入门课都非常经典,喜欢看视频学习的同学可以通过他的课程来入门 C 语言。
日本人写的编程书籍的特点是语言比较风趣,而且往往有大量的配图帮助理解,这本书就是典型的例子。喜欢通过看书学习的同学可以用这本书来入门C语言。
进阶
这本书是我个人认为写的最好的C语言教程,但它并不适合零基础的同学阅读,推荐有基本的C语言知识或者对某一门其他的编程语言有深入了解的同学阅读。这本书几乎涵盖了C语言所有方面的知识点,对指针的讲解非常透彻,是深入学习C语言的不二之选。唯一的缺点是这本书已经比较老了,对于C语言的现代特性缺乏介绍。
Java
Java语言是后端开发和Android开发最常用的语言,同时作为面向对象语言的典型代表,其重要性不言而喻。
入门
零基础学Java语言 - 翁恺
上面这两个和C语言的入门推荐都是同样的两位老师出品,适合零基础的同学。大家根据自己喜欢看书还是视频进行选择即可。
进阶
学院的 Java 课程讲了
JavaFX
框架,如果想在大作业里面用上这个框架来开发应用界面,单靠课堂和课本上的讲解可能有些吃力。可以跟着 TheNewBoston 的这个系列视频敲一敲,里面讲解了如何配置JavaFX
的开发环境,并且提供了很多实用的组件的开发方法。不需要全部视频都看完,只要看到你觉得自己能够用JavaFX
开发想要的界面的程度就OK了。
前端开发
前端开发其实并没有对应哪一门具体的课程,但因为大家在做项目的时候几乎不可避免的会需要进行前端应用的开发,所以还是给大家推荐一些优秀的入门资料,这样大家在做项目时遇到需要开发应用界面的情况就不会一脸懵了。
学习前端开发需要了解的内容包括HTML
,CSS
和JavaScript
,有兴趣的话可以顺便学习一个前端框架,也就是Vue
或者React
(更推荐前者)。
Web前端工程狮 - 清华大学
这个课由360公司的前端开发工程师讲解,课程比较有条理,涵盖了HTML、CSS、JavaScript、NodeJS和Vue,理论与实战结合,涵盖了前端开发所需要了解的全部基本知识。
MDN的文档是做前端过程中必然会使用到的,它们的前端开发教程也非常的值得推荐。按照网站上面的学习路线进行学习即可。(
HTML
部分可以只学第一节)
数据结构
数据结构与算法是成为一个好程序员必学的内容,也是计算机科学的重要基础。信管的同学直接使用到这些知识的机会也许不多,但自己编写代码实现经典的数据结构与算法对于编码能力也是极佳的锻炼。
这本书基本上涵盖了数据结构考试的所有内容,但讲的比课本好很多,可以用来预习和复习,或者对不理解的数据结构和算法进行查漏补缺。其代码是用C语言编写的,不懂C语言的同学可以只看理论讲解,再与课程提供的Python代码进行对比学习。
这本书主要是对常见算法的讲解,除了算法课上使用的搜索和排序算法外,还讲了网页排名和压缩算法。其示例代码是用Python写的,而且有大量的图解,读起来很轻松。
计算机网络
如果是有志于从事Web应用开发工作的同学,计算机网络一定是要好好学习的,特别是IP、TCP和HTTP协议。但对于大部分的同学来说,了解上课所讲的内容就已经足够了,所以这里只推荐一个非常适合用来预习复习的课程。
这个网课的内容和课本的内容基本一致,以动画的形式进行概念讲解,比较易于理解,内容也非常紧凑。
数据库
和计算机网络一样,有志于Web应用开发特别是服务端开发的同学一定要学好数据库。特别是SQL语言和数据库的设计方法,这可以说是所有后端项目都需要用到的知识。
MySQL Tutorial for Beginners - Mosh
Mosh的教程非常的适合新手入门,制作精良,语速对英语小白也比较友好。可以通过这个课程来学习MySQL的入门知识,油管的官方号只有三个小时的课程预览,完整的课程是需要付费购买的,但在B站上面是可以搜到的。
前面说到的Python,数据结构,Java等Mosh也有教程,如果大家觉得喜欢他的风格的话可以都看看。
关于自学CS(计算机科学)
如果你有志于成为一名专业的软件工程师,或者希望更深入的学习计算机科学,只了解上面说的那些编程语言是远远不够的。这方面的学习指南可以参考 Teach Yourself Computer Science 以及 CS自学指南,也可以通过 Computer Science Crash Course 来快速建立对整个计算机科学领域的认知。