为什么80%的码农都做不了架构师?>>>
- 学校简介:
温州肯恩大学是2014年3月31日教育部正式批准成立的我国第一所具有独立法人资格的全一本招生的中美合作大学。由美方完全负责学校的日常教学工作,全英文授课比例高于90%;由中方负责学校日常行政和后勤保障工作。本届(2017届)产生毕业生的五个院系为会计系、金融系、国际经济与贸易系、计算机系以及英语系(按照入学人数排列),另外开设视觉传达设计系以及市场营销系。根据学校毕业生质量报告,第一届毕业生考研录取率达57%,在102名考研学生中,考入世界前100名研究生院院校32人,录取率达到30.5%。以下是有关本校更多详细情况的相关链接:
温州肯恩大学官方网站: http://www.wku.edu.cn/zh-hans/
温州肯恩大学第一届毕业生质量报告: http://www.wku.edu.cn/zh-hans/2016/12/2016niandubiyeshengjiuyezhiliangniandubaogao/
-------------------------------------------------------------正文开始--------------------------------------------------------------------
据《计算机科学导论》(第4版)的描述,计算机科学研究的问题是“什么能被自动化”。楼主则认为,这个看法本身是没错的,但是在人工智能技术、云计算存储技术以及大数据科技高度发达的今天,如此看待这个问题可能就具有局限性了。楼主刻苦修习计算机科学与技术四年,感慨其博大精深,若真的只能用三言两语概括计算机科学与技术,楼主认为它是一门以算法研究和离散数学为核心、以程序编写为手段的通过一系列规范化、模块化和模式化的软硬件开发过程达到解决各领域用户需求这一目的科学技术。
特别地,在我们学校,教授们在传授给我们专业知识的同时会反复强调计算机编程乃至计算机科学技术只是手段,解决问题才是最终目的。因此,我们的课程设置会更加侧重于计算机科学与技术在各学科、各领域的应用研究,形成了我校计算机系非常独特的跨学科计算机科学与技术应用研究的教学和学习体系。因此,楼主认为在这样的学校不仅专业基础知识要学得扎实牢固,更要懂得这些知识能用在哪些领域、解决哪些问题。相比于单纯进行专业学习与研究的学校,专业知识的实际应用确实对我们构成了不小的挑战。本文则从把握重点学科、掌握学习方法和关注业界动态这三个方面谈谈楼主计算机科学与技术探索学习路上的经验教训。
一、把握重点学科
楼主认为,想要初步了解计算机科学与技术以及它的跨学科应用,我们大学阶段要按次序先后把握好基础编程、基础数学、人文科学、算法分析、跨学科知识、网络编程、信息管理、系统知识和计算机安全这9个重点方面约25门学科的主题。
(1) 基础编程(重要程度15%):虽然说编程只是手段,然而同样是解决问题,编程高手善于更好地解决问题。如同一个问题,会不会用API肯定就有很大区别,会不会用这个语言特有的功能肯定也有很大区别。大学阶段,想要走好这个阶段需要的用时是从入学开始的一年半左右时间。此处列举了楼主认为大学阶段必须掌握的三个编程语言:
- Python语言:所有读过研究生院的楼主学长们都跟楼主反映过大学阶段没学Python是一个很大的遗憾。的确,Python是当今研究生院的“通行”编程语言,在机器学习、可视化和数值计算等方面大显身手。其著名的一些第三方库如numpy和scipy也是被各大数据科学领域的砖家们用得不亦乐乎。此外,Python学起来难度远低于Java和C/C++,因此楼主的建议是刚入学的小伙伴们从大学预科阶段(又叫新生浸润营阶段)就开始着手进行学习,持续过程为一年左右。
- C/C++语言:C/C++广泛用于系统编程、网络编程和引擎优化的各个领域,在大学阶段C/C++语言的编程能力直接与你计算机系统分析的领域、计算机安全分析领域相关,当你需要高性能的算法时,C/C++也间接与你的算法实现能力有关;C/C++还与跨学科领域中的科学计算和数值计算直接相关。因此,楼主强烈推荐后来者直接尝试学习C++11或C++14标准,从大一第二学期就开始,先持续学习C/C++一年半左右。此外,强烈推荐学有余力的同学学习一下C/C++的boost库,链接是:http://www.boost.org/
- Java编程语言:在移动端“大火”的今天,你极有可能找到一份开发移动端APP的工作。虽然这货在计算机科学日后的学术生涯中用处真心不大,但是也应当成为你的工具箱中必不可少的一项“必杀技”,要能达到需要用的时候能马上“捡起来”的程度。需要注意的是,在WKU Java语言基本上是从大一开学用到大二上学期为止(课程代号CS1231, CS2231和CS2232),因此这一年半也就成了你学习Java语言的黄金时段。
(2)基础数学(重要程度20%):计算机系的人,需要掌握的数学能力独特而又重要。我们学校是流传这么一句话“一个计算机科学,半个数学专业”。甚至在某些数学系的童鞋看来,计算机人玩的数学他们都不一定懂。具有好的数学功底,你才能在专业学习的道路上一步一个脚印以致千里,否则你将在计算机科学(尤其是研究)的领域寸步难行。
- 离散数学:本科阶段计算机系“碰到”的第一门数学课,它是以逻辑运算、数列处理、数据结构、排列组合、离散概率和渐进性为主,研究变量的离散情况的学科,是高等数学、计算机模拟、计算机操作系统、计算机组成原理和概率统计等众多数学和计算机相关学科的基础。虽然这门课大一下才开,课程代号MATH2110和MATH3120。但楼主真心建议后来者从大学预科开始学习,学习过程持续到大一下正式课程结束。
- 高等数学(1-2级):我们的高等数学共分为3个等级,难度从1-3依次增加。高等数学虽不教傅里叶变换,曲面向量积分也在第3级才学,但以微分和积分为主的主题不变,研究“运动的数学”。学好这个学科,不仅仅能够培养数学能力思维,还能为数理统计、数值计算和计算机模拟等打下坚实的基础。建议从大一上学期开学就开始学习,三个级别都学完,到大三下学期高等数学3结束的时候学习完毕。在温肯第一个级别开课是大二上学期,明显偏晚。三个级别课程代号分别是(MATH2415,MATH2416和MATH3415)
- 向量矩阵:在计算机科学中,诸如Strassen算法以及动态规划算法等很多方面都与矩阵运算息息相关。向量运算的知识在高等数学第3级以及后面的数值计算中也会用到。因此这方面也要给予足够重视。好在本学科与其他学科关联不大,可以随时开始,一学期时间学习完毕。建议是大一下开始接触,到大二上该课程结束时(课程代号MATH2995)初步完成学习。
- 概率统计:基于贝叶斯理论和各种统计模型建立和研究的一门科学,作为高等数学的后继以及数值模拟、机器学习、算法分析、系统概论等等领域的前提课程(课程代号MATH2526),概率统计这门学科的重要性自然不言而喻。建议从高等数学第2级修习完毕(大约大二上)开始学习,持续学习一年。
(3)人文科学(重要程度5% - 15%):作为计院的人也是要稍微有点人文素养的。楼主在各类学术研讨会和业界分享会见过许多研究水平很高但是表达能力欠缺的高手,造成的后果就是要么别人没听懂在研究什么,要么就是自己都讲不清楚自己在研究什么,让自己的成果大打折扣。尤其对于我们这样的中外合作大学来说,人文素养其实重要性是不输于算法和基础编程这些如此重要的课程的。想走出国门做研究的你们如果连自己做了什么都讲不清楚或写不清楚的话,估计第一关语言关就会“死”得很凄惨。因此,楼主决定本模块的重要程度对于我校计院同学来说重要程度是15%,至于其他学校的计院,可能一般在10%左右。它包括以下几个方面:
- 英语口语训练(对应课程编号ESL0503或ESL0303):如果你连cache, client, exactly这种单词发音都不标准,怎么能让研究生院相信你的研究能力呢?此外,从功利角度,考雅思和托福的时候我们最容易栽的模块之一也是口语,因此别小看了大学这两门“不收GPA”的课程,事实上相当相当重要。否则当你托福败绩、雅思差半分的那天再后悔,这都木已成舟了。
- 英语议论文写作(对应课程ENG1430和ENG1300):同样从功利角度出发,自己体会。特别注意,ENG1430不仅记学分,还记6个学分,这将直接决定你大三上之前的总体GPA水平。此外,议论文写作还有一个作用就是发表PAPER(无论是社区还是学术机构)用的。尤其是学术机构,语法错误频出的PAPER当然只有被拒收的残酷下场。
- 调查研究方法(对应课程GE2024):除了发PAPER用的,这门课教给你各种做调查研究的方法,无论日 后走入研究生院还是工作中遇到要研究的问题,这门课教给你的方法将对你产生深远的影响。
- 公共关系之公众演讲篇(课程代号COMM1402):事实上,不知所云的公众演讲各有各的问题,好的公众演讲却大体相似。在这个Public relationship如此重要的时代,公关知识不仅仅只是他们商科的专有的,我们计院人也一定要略懂一点。关于如何公众演讲,楼主此处提供一个攻略链接:http://blog.163.com/sy_sblog/blog/static/2657070222016112295335894/?newFollowBlog (千万别告诉DVD小哥我写的,这基本上可是他一学期课程的全部啊)
- 英语议论文高级写作(对应课程ENG3091):可能刚看此文的小伙伴跟楼主感觉一样是懵逼的,这门课不就写写简历、练练面试、搞搞proposal而已吗?然而你们可能不知道,这个proposal换个名词叫做开题报告,你的研究经费就是这么写出来的;此外你去找工作,你不学绝对不知道在中国找工作的方式跟你在欧美截然不同,要是简历上放上私人信息你就OVER了。要是面试完毕不问工资可以拿多少你也OVER了。因此,这门课对于要工作和升研的计院同学用处都很大。
- 历史学(课程代号HIST1062):它使你知道快速入门一个学科(比如化学)的方法是读该学科的简史,这个思想在日后你跨学科的学习中将会非常有用。
_ 备注:出国留学语言关的准备工作一般从大二下开始做,尤其要抓紧大二的暑假。大三上期间通过考试。准备太早了会影响专业基础知识的学习积累,晚了则你自己申请来不及。这个时间点各位后来者务必把握好。_
(4)算法分析和实现(重要程度14%-16%):在本校比重大约15%。且作为业界的我们都知道为什么这个模块占的比例如此之高。算法分析和程序的具体实现要充分考虑算法的时间复杂度、空间复杂度以及运行算法的操作系统和机器的性能,好的算法能达到事半功倍的效果,甚至存在不少将计算量从若干千年缩小到几分钟甚至几秒钟的实例。因此,算法的“魔力”还是值得众位后来者不断探究的吧。
- 数据结构与算法:包括数据结构部分从数组这个最简单的数据结构到各种复杂树的概念、复杂度和具体实现的分析,以及算法部分各种算法思想在解决具体问题中的运用。主干课程大二上才开始开设(对应课程代号CS2232和CS3440,其中CS3440一般A-以及以上不给,A-和A系荣誉等第),楼主认为大一下有一定编程基础之后事实上就可以着手开始研究这方面的问题了。
- 数值计算:以误差分析、泰勒展开式等高等数学学科为基础,研究对于各学科领域中遇到需要计算问题的离散型计算算法的学科。这需要以完全的高等数学知识为基础,建议从大三上开始学习研究。
- 系统模拟仿真:课程代号CS4410,是建立在统计学和高等数学基础之上研究计算机程序和算法实现对于现实场景或系统模拟的学科,需要良好的基础数学和算法素养以及较强的编程能力。建议从大三下开始学习研究,另:本课大三下会作为与CS4601 HCI同期开设的选修课。
(5)跨学科知识(重要程度4%-9%):在不强调跨学科研究的院校这部分可能不那么重要,然而在本校这方面知识占有与其他计算机扩展知识一样8%的高比重。毕竟,如果计算机科学技术只是工具的话,那么这个工具怎么用呢?
-
生物:想玩生物信息学么?可是如果连蛋白质有几级结构都不清楚的话还肿么玩呢?作为码农想要迅速过渡到生物信息学,高中+的生物知识都嫌不够。大学补课的机会来了,课程代号BIO13/1400。
-
化学(课程代号CHEM1083/4):计算化学也是近年来在药物制造方面大火的一门学科。此外,我们系某教授的科研就是基于反应速率的计算化学研究,SO,不学化学怎么玩这些呢?另外提一句,市面上现在研究计算化学这方面的材料吧,大致都是用C#写的,楼主一直想用Python也写一本呢。
-
注:上面两个学科拼起来玩,再加点计算机技术在里面的话,写出来的东西至少SI高级起档吧。
-
经济学/会计学:想玩金融工程发财的小伙伴们苦于代码不会写和数学不行,而我们已经二者兼得了,如果再不小心学了个经济学啥的那就离发财不远了。当然,如果码农 + 会计学的话,会计系小伙伴们可要哭了,毕竟他们吃饭的东西有可能就被我们“自动化”了。
-
心理学(课程代号PSY1000):先学着,即使未来机器学习的时代还没到来,用来研究叫兽和怎么泡妞可能都有用。此外,本课也是比较容易拿GPA的课程之一。
由此可见,计算机科学跟稍微一点点的跨学科知识摩擦,就可能擦出火花。小伙伴们还不心动吗?楼主的建议是,大二下学期基础打得差不多的时候就可以开始找自己的“跨学科”了,并今后持续研究两年这个自己找到的、喜欢的学科。
(6)网络编程三部曲(重要程度5%-7%):
- HTML/CSS/JavaScript(需自学):好的前端基础会让你的网站更加漂亮。这个东西大一的暑假可以学学。
- PHP+MySQL编程(课程代号CS3500):学习这个的目的是让你了解一下脚本语言。此外,这门课程系比较容易提高GPA的课程之一。此外,里面提到的“脚本注入”攻击等等与网络安全有关,可以了解一下。这门课大三下开始开课学,课程结束的时候也就学的差不多了。
- 计算机网络学(课程代号CS4222):这门课是网络编程学习中的重中之重,虽然开课在大四下(楼主认为明显开晚了),但是建议在大三下接触PHP编程的时候同时可以开始研究这个,毕竟是信息安全和网络安全的基础。
(7)信息管理(重要程度4%-6%):
- 数据库(课程代号CS3740):数据库是基于E-R模型研究数据的查询、增添、删除等数据操作的学科,在“大数据”大火的今天,楼主认为至少小伙伴们除了E-R型数据库,mongodb和NoSQL也总是要知道一下。此外,据OSC2017年第一场会议透露的消息,楼主认为智能化大数据分析2017年必然大火。建议一般的小伙伴们在研究编程的大一下就可以开始程序链接数据库的初步研究。到大二下开始全面铺开这方面理论的研究。因为等大三上开课了再研究,也明显是略晚的。
- 面向对象程序设计(设计模式,课程代号CS3962):说不重要吧,这门课却是毕业课题的基础;说重要吧,它没有你的雅思和GRE重要。当然了,学好设计模式还是相当重要的,这是让码农们事半功倍的一个绝密武器哦。建议大三下学期考完语言关以后可以稍微研究一下。
(8)系统分析(重要程度8%-12%):说这部分重要的原因,不仅仅因为这是我国极其欠缺的技术,而且学好这部分对于理解计算机硬件和软件如何“互动”是很有帮助的。建议大二寒假开始研究这个事情,本模块难度较大,需要一直研究到大四结束。
- 计算机系统科学:大二下开设的第一门系统学CS3250,虽然学分只有区区3分,但这门课是系统入门的基础课,请务必高度重视。
- 计算机操作系统和组成原理:会在TECH2920和CS4150中陆续讲授,想做系统程序员,这两门课也是必须哦!
(9)计算机安全(重要程度4%-6%):课程代号CS3498。为什么这一门课被楼主拎出来单独成为一个模块?因为它实在太重要了。多少优秀的APP和项目最终毁于骇客之手。因此,我们学习这一招,不仅为了黑别人和自黑,还是那句老话“害人之心不可有,防人之心不可无”。此外,这门课开设也略晚。在大二下结束你初步对系统有了解之后便可以开始研究了。不过这是个选修模块,你也可以选择对计算机安全一无所知。
顺便解答一下关于楼主经常被问到的几个选修模块答疑:
- 营养学:课程代号BIO3200。这门课是BIO1300生物基础的衍生课程,对于码农们来说可能确实没有直接用途。但是从身体是革命的本钱的角度来说,怎样吃得健康营养合理还是很重要的,并且这门课A的难度系数相比于其他课也不高,建议3开头选修缺一门冬季要上的可以选。
- C#:课程代号CS3351。C#这个语言用在.NET Framework以及一些化学分析领域还是蛮好用的。《大话设计模式》这本书源代码也是C#,据说集成了现代软件工程的所有结果。不过楼主认为语言嘛,这个自学即可。事实上,与C#同时期开的选修课是数据库,楼主个人认为数据库的知识比学一门语言是更加重要的。
- 人机交互:课程代号CS4601,又称HCI(Human-Computer Interaction)。这门课基本上会讲用户界面设计,据上过的小伙伴说主要任务是写Paper。不过感觉跟汤教授一起学的话好好听课应该能了解到很多“玄外音”。因此楼主是建议小伙伴们去选修的(虽然自己没选,因为对系统模拟方面更感兴趣)。不过与它同期开得选修叫系统模拟,因此看小伙伴们更喜欢哪样了。喜欢做用户界面或者图形图像设计的就去找汤教授学这个,否则选系统模拟也是很不错的(虽然个人感觉难度略超出了大三下的能力)。此外,若是想选这门课的话C#无论是自学还是听课都要学一点(according to 汤崖教授)。
- 艺术类选修:当代美术(课程代号AH3741,Contemporary Art)。楼主认为AH3741这门课比大家都认为好拿分的AH1701更好拿分(AH1701很多记忆的要素,事实上对我们WKU计院这样的纯理科生来说还是很难的)。它课业任务量级适度,就是每周写一些PAPER即可了。所以如果冬季缺3开头的选修,除了BIO3200,这门课对于擅长写PAPER却不擅长记忆的计算机系的我们来说也是相当不错的一个选择。此外,艺术类选修课若配合HCI进行学习应该效果更佳。
二、掌握学习方法
在第一个模块谈了将近本系的30几门重要的课程之后,这个模块我们谈谈学习方法。就学长本人来说,这四年的总体学习中有经验,也有不足,甚至有教训。因此学长也打算把这些经验、不足和教训拿出来跟同届的师兄师弟师姐们、上届的学长学姐们以及后来的学弟学妹们进行分享。
-
突出学习重点
首先,看完模块一,大家的反映一定是非常吃惊的。但是没有办法,模块一已经是从计院总计的43门课里面精挑细选的绝对重点了。因此不说四年的时间43门课都吃透(也不可能),但至少这25门课大家都要有点建树(选修模块答疑的那部分实在不行也可以暂时不算重点,生化可以选一个当重点,生化后面的其他几个选修暂时不当重点也行,除了PSY1000其实其他一般也不太会去选,这么不断“挑肥拣瘦”弄出学科重点,学长也挺不容易的吧)。所以4年除一下,基本每年要抓住5-6个重点进行研究。
因此,每学期的一开始大家合理规划时间就非常重要了。哪些课要作为重点,哪些课可以不那么重要都应该结合这些“重点”慢慢做到心中有数。此外,提个“双休日不补课”倡议,因为根据学长本人经验,大家往往双休日都是不太想学习的。因此要抓紧周一到周五的时间进行学习(大家可以私戳本学长索取平时周一到周五的学习计划,保证没清华的那么恐怖,精确到10分钟而已),那么双休日则可以“浪”一点了。此外,真正厉害的学神一般在于双休日不学新的也不“大浪”,而是在“温故而知新”或反思整理加以适中程度的玩耍,这样就能以更加饱满的状态开始下一周的生活。
-
及时记录反思
有个叫艾宾浩斯曲线的东西想必不需要学长多解释了,这个说的就是我们在学习中如果有好的想法、体会或者知识收获的话不妨及时记下来,这样一来有利于我们日后复习参考,二来若能相互之间分享学习心得的话,必然有事半功倍的效果。
-
学会调查研究
大学在学有余力的前提下建议可以搞一些research,因为万一发表了paper,你的申请表就会“鹤立鸡群了”。除此之外,你不仅仅是收获了paper本身之外的名誉,更重要的是做paper教给你的调查研究方法、专业知识技能等等。发表PAPER的合适时间一般在大三下学期之前。
-
合理规划假期时间
对于计算机系小伙伴来说,学长以过来人的反思,总结出几个寒暑假建议应当利用如下:
- 大一寒假:多学1-2门除了JAVA以外的编程语言。
- 大一暑假:初步研习算法,进一步加深语言的学习。
- 大二寒假:深入研究算法和语言的学习,适度预览一些系统方面的知识。
- 大二暑假:全力以赴攻“语言关”,争取大三开学告捷。并在有余力的情况下深入研究系统方面的知识,学习一些网络前端编程的知识。
- 大三寒假:去美国的小伙伴要开始攻G类考试啦。其他的小伙伴继续深入研究网络方面的知识。
- 大三暑假:把自己研究哒以及考试、实习哒等的结果全部整理一下,自己或者和中介一起好好整理申请的材料。因为大四上一开学英国澳洲方向就要申请了,大四上的11月份左右美利坚也开始了。然后把自己没考好的什么考试再弄弄刷分试试看
- 大四寒假:之前考试有问题的、申请资料没全的要加紧补上了。此外与意向学校进行确认,确保万无一失。此外,租房和机票业务最好也此时开始规划。
- 大四暑假:是个为数不多的可以真正好好放松的暑假(土澳除外,因为基本上大四下非正式结束到新学校开学也就两个月不到),但别忘落实好在新学校的录取确认、签证确认、机票确认、新国家入关规则熟悉、导师联系、课程选择、住房选择、学费缴纳以及校园环境熟悉(著名建筑物地点、图书馆地点及使用方式以及社团情况等等)
三、关注业界动态
计算机行业更新是非常快的,书本的知识只是一些不变的原理性东西,那么在变化的一些业界最新进展就要我们另外特别关注了。
对于计算机系的小伙伴来说,至少因为你在中国(学长也清楚往往你们很喜欢看中文的东西),这两个地方是一定要关注的。
- http://www.oschina.net/
- http://www.csdn.net/
关注它们有助于你业余的时候拓展一下自己的视野,更好地清楚自己所学的知识能怎么用,哪些是过时的、哪些是有用的、哪些是需要进一步学习的如此等等。这样,在学好专业知识的同时你就能有望“跟上时代的步伐”了。
总结
本文写得比较长,但是从把握重点学科、掌握学习方法和关注业界动态三个方面详尽描述了计算机科学与技术这个专业究竟是做什么的以及该如何进行学习。其实楼主和你们汤崖教授都有过这样的感受,就是计算机科学刚看到会觉得好奇,学了一阵子会略有点BORING,但是随着学习的深入你会发现这是一门越学越喜欢的专业,因为你每天醒来会不断迎接新鲜的东西,这种感觉非常清新。此外,无论是哪个国家,哪怕是美国,如今计算机专业的人员还是供不应求的,因此我们赶上了最好的时代。加油吧,同志们!
特别鸣谢:本文末尾,感谢以下教授,他们在楼主的小伙伴们以及楼主专业能力的养成方面倾注了大量心血,是我们永远爱戴的大学教授和人生导师。
- 温州肯恩大学计算机系张长江博士
- 温州肯恩大学计算机系黄宏斌博士
- 温州肯恩大学生物学学部孟宇博士
- 温州肯恩大学计算机系汤崖博士
- 美国肯恩大学自然科学学院主任张至先博士
- 美国肯恩大学计算机科学学院研究生院指导教授刘景秋博士
- 温州肯恩大学数学学部Mr.Dow教授
- 温州肯恩大学原数学学部Dr.Nazar博士
- 温州肯恩大学生物学学部Dr.Machelina博士
- 温州肯恩大学原会计系李永清博士
- 温州肯恩大学英语系Dr.Maquardt博士
- 温州肯恩大学数学学部Dr.Olson博士
- 温州肯恩大学原数学学部蒋亚楠博士
- 温州肯恩大学计算机系Dr.Nazeer博士
- 温州肯恩大学交流传媒学部Dr.Girardelli博士
- 温州肯恩大学原英语系王嘉兰博士
- 温州肯恩大学英语系以及商法学部Dr.Lew博士
- 温州肯恩大学原英语系Dr.Thornton博士
- 温州肯恩大学原英语系Mr.Mayer教授
参考资料既是大学阶段引文的标准书写方式,也是大学阶段你不容错过的经典书目。
参考资料:(标注*号则为选读书目,其余为必读书目)
- Abraham Silberschatz, Peter Baer Galvin and Greg Gagne, Operating System Concepts ninth edition, in Wiley, 2013, United States of America
- Adam Freeman, Introduction to Visual C# 2010, in Apress, 2013, New York (*)
- Andrew S. Tanenbaum and David J. Wetherall, Computer Networks Fifth Edition, in China Machine Press, Oct. 2013, Beijing, China (*)
- 程杰,《大话设计模式》,清华大学出版社,2015年11月,北京
- Ronald L.Graham, Donald E. Knuth and Oren Patashnik, Concrete Mathematics A Foundation For Computer Science, China Machine Press,in Mar. 2013, Beijing
- 刘西杰、柳林,《HTML、CSS、JavaScript网页制作从入门到精通》,人民邮电出版社,2015年2月,北京(*)
- 陆文周,《Qt 5开发及实例》第二版,电子工业出版社,2015年12月,北京(*)
- Maurice D. Weir and Joel Hass, Thomas' Calculus, in Person, 2010,New York
- Mark Lutz, Learning Python 5th edition, in O'REILLY, 2013 (注:他出的programming python也很好看哟)
- Paul Deitel and Harvey Deitel, C++11 for Programmers 2E, in Publishing House of Electronics Industry, Apr.2016, Massachusetts
- Paul Deitel and Harvey Deitel, Java How to Program Ninth Edition, in Prentice Hall, 2013, New York
- 靳天飞、杜忠友和张海林等,《计算方法(C语言版)》,清华大学出版社,2011年8月,北京(*)
- 瞿中、刘玲和熊安萍等,《计算机科学导论》第4版,清华大学出版社,2016年6月,北京
- 任晓辉等,黑客如何学起,URL:https://www.zhihu.com/question/20607351 引用时间:2017年3月4日10:55(*)
- 盛骤、谢式千和潘承毅,《概率论与数理统计》第四版,高等教育出版社,2014年8月,北京
- Thomas H. Cormen, Charles E. Leiserson and Ronald L.Rivest etc., Introduction to Algorithms Third Edition, in The MIT Press, 2009, in Cambridge, Massachusetts and London (chap 1 - 18, 21 and 22 - 25)
- Thomas H. Cormen, Charles E. Leiserson and Ronald L.Rivest etc., Introduction to Algorithms Third Edition, in The MIT Press, 2009, in Cambridge, Massachusetts and London (chap 19 - 20, 26 and 27- 35) (*)
- 同济大学数学系,《高等数学》第六版上册,高等教育出版社,2012年9月,北京
- 同济大学数学系,《高等数学》第六版下册,高等教育出版社,2012年9月,北京(*)
- 同济大学数学系,《工程数学线性代数》第五版,高等教育出版社,2014年8月,北京
- 王珊和萨师煊,《数据库系统概论》第5版,高等教育出版社,2016年2月,北京
- 吴玉梅,《黑客攻防入门》,电子工业出版社,2013年2月,北京(*)
(本书单系经学长亲自仔细鉴定以及与本系相关同学教授们广泛使用或认可之后认为的好书,后续还在更新中,请持续关注)