真正决定软件工程师上限的,不是会多少工具,而是对计算机科学基础的理解深度。工具会不断变化,但底层原理决定了一个人是否能够解决新的、复杂的问题。

课程为什么要学?推荐书籍推荐视频课程
编程不要成为那种始终没有真正理解某个基础概念的人。Structure and Interpretation of Computer Programs,SICPBrian Harvey 的 Berkeley CS 61A
计算机体系结构如果没有对计算机实际工作原理建立扎实的心智模型,你所依赖的各种高级抽象都会缺乏坚实基础。Computer Systems: A Programmer's Perspective,CS:APPBerkeley CS 61C
算法与数据结构如果不了解栈、队列、树、图等常用数据结构,就很难解决具有挑战性的实际问题。The Algorithm Design ManualSteven Skiena 的课程
计算机科学数学基础计算机科学本质上可以看作应用数学不断发展的一个重要分支,因此扎实的数学基础会成为你的竞争优势。Mathematics for Computer ScienceMIT 6.042J(Tom Leighton)
操作系统你编写的大多数程序最终都运行在操作系统之上,因此应该理解程序与操作系统之间是如何协同工作的。Operating Systems: Three Easy PiecesBerkeley CS 162
计算机网络互联网已经成为现代计算最重要的基础设施之一,理解其工作原理,才能真正发挥它的全部潜力。Computer Networking: A Top-Down ApproachStanford CS 144
数据库数据是绝大多数重要软件系统的核心,但真正理解数据库系统内部工作机制的人并不多。Readings in Database SystemsJoe Hellerstein 的 Berkeley CS 186
编程语言与编译器理解编程语言和编译器的内部原理,不仅能写出更好的代码,也能更快掌握新的编程语言。Crafting InterpretersAlex Aiken 的 edX 课程
分布式系统如今,大多数大型软件系统都是分布式系统,因此这是现代软件工程的一项核心知识。Designing Data-Intensive ApplicationsMIT 6.824
返回列表