
TeachYourselfCS-CN编程入门从《计算机程序的构造和解释》到实战项目【免费下载链接】TeachYourselfCS-CNTeachYourselfCS 的中文翻译 | A Chinese translation of TeachYourselfCS项目地址: https://gitcode.com/gh_mirrors/teac/TeachYourselfCS-CNTeachYourselfCS-CN是TeachYourselfCS的中文翻译项目旨在为自学成才的工程师或编程培训班毕业生提供系统的计算机科学学习路径。通过这份指南你无需花费数年时间和大量金钱攻读学位就能获得世界一流的计算机科学教育。为什么选择自学计算机科学软件工程师分为两种一种充分理解计算机科学能应对充满挑战的创造性工作另一种仅凭着对一些高级工具的熟悉而勉强应付。虽然这两种人在职业生涯早期可能挣到差不多的工资但随着时间流逝第一种工程师会不断成长从事更有意义且高薪的工作。如今涌入计算机行业的人数激增而计算机专业毕业生数量基本未变。仅掌握表面工具的工程师正面临就业机会减少的困境。无论你是想成为第一种工程师还是只想让职业生涯更安全学习计算机科学都是唯一可靠的途径。核心学习科目与资源推荐编程打下坚实基础编程是计算机科学的入门基石。推荐经典著作《计算机程序的构造和解释》SICP这本书既可供免费阅读英文版也有MIT的免费视频课程。不过更推荐Brian Harvey开设的SICP课程即Berkeley的61A课程它比MIT的课程更完善更适用于初学者。建议至少学完SICP的前三章并完成配套习题。如果需要额外练习可以解决一些小的程序设计问题比如exercism上的题目。对于中文读者还有一些额外资源MIT的免费视频课程中英字幕Brian Harvey开设的SICP课程英文字幕Scheme学习的相关资源参见https://github.com/DeathKing/Learning-SICP计算机系统结构了解底层运作计算机系统结构是了解软件底层的重要视角也是自学软件工程师最容易忽视的领域。推荐《深入理解计算机系统》这本书实用性强站在程序员的视角讲解。典型的计算机体系结构导论课程会涵盖本书的1-6章。另一个推荐是《计算机系统要素》又名“从与非门到俄罗斯方块”这本书让读者对计算机内所有部分如何协同工作有完全的认识。书中每一章节对应构建计算机整体系统中的一小部分从基本逻辑门电路到应用程序。算法与数据结构提升问题解决能力对常见算法和数据结构的熟悉是计算机科学教育赋予人们的最大能量之一也能训练问题解决能力。推荐Steven Skiena编写的《算法设计手册》这本书充满热情能帮助读者轻松理解算法知识。如果更喜欢视频课程Skiena慷慨地提供了他的课程。此外Tim Roughgarden的课程也很不错可在Stanford的MOOC平台Lagunita或Coursera上获得。练习方面推荐在Leetcode上解决问题。这些问题有趣且带有良好的解法和讨论还能帮助评估应对技术面试中常见问题的能力。建议解决大约100道随机挑选的Leetcode问题。其他重要科目概览数学知识计算机科学基本上是应用数学的一个分支。推荐从László Lovász的课程笔记开始学习离散数学然后可学习《计算机科学中的数学》。线性代数推荐从“Essence of linear algebra”系列视频开始再学习Gilbert Strang的《线性代数导论》和视频课程。操作系统推荐《操作系统导论》这本书结构清晰习题值得一做。之后可探索特定操作系统的设计如Linux内核等。计算机网络推荐《计算机网络自顶向下方法》书中的小项目和习题尤其是“Wireshark labs”很有价值。数据库建议从2015年春季学期的CS 186课程Joe Hellerstein在Berkeley的数据库课程开始然后阅读论文。推荐论文“Architecture of a Database System”和《Readings in Database Systems》数据库“红书”。编程语言与编译器推荐Bob Nystrom所著的《Crafting Interpreters》可在网上免费获取。另一本传统推荐书籍是《编译原理》“龙书”。分布式系统推荐Martin Kleppmann的《数据密集型应用系统设计》这本书可读性高保持了深度和严谨性。视频课程可选择MIT的6.824。学习路径与实践建议学习顺序与时间投入大致按照上述顺序学习九门科目借助建议的教材或视频课程最好二者兼用。目标是先花100到200个小时学习完每一个科目然后在职业生涯中不时温习其中的精髓。如果觉得学习九门科目让人望而却步建议只专注于两本书《深入理解计算机系统》和《数据密集型应用系统设计》。根据经验投入到这两本书的时间可以获得极高的回报率特别适合从事网络应用开发的自学工程师。实践项目推荐学习计算机科学不能只停留在理论层面实践项目至关重要编程完成SICP习题解决exercism上的问题。计算机系统结构完成《计算机系统要素》中的项目如构建基本逻辑门电路、CPU等。算法与数据结构在Leetcode上解决约100道问题。计算机网络开发HTTP服务器、基于UDP的聊天APP、迷你TCP栈等。数据库从零实现一个简单的关系型数据库管理系统。编程语言与编译器编写一个编译器或从“Make a Lisp”项目开始。如何获取学习资源许多推荐的教材在网上都可以免费获得这多亏了作者们的慷慨。对于那些不免费的书籍建议购买旧版本的二手书籍。一般来说如果一本教材有多个版本旧版本大概率是完全足够使用的。常见问题解答这份指引的目标受众是面向自学的软件工程师、培训班学生、“早熟的”高中生或者想要通过自学补充正式教育的大学生。多数人在有一定的职业经历后深入学习计算机科学理论会获益匪浅比如在工作中使用过数据库后再学习数据库系统课程会更有收获。一定要严格遵守推荐的学习次序吗所有主题之间都有一定程度的重叠彼此循环引用。推荐的次序主要是为了帮助起步如果你有强烈的原因倾向以不同顺序学习也可以勇敢开始。不过重要的“先决条件”是先学计算机体系结构再学操作系统或数据库先学计算机网络和操作系统再学分布式系统。如何开始自学之旅首先确保你已经具备一定的编程基础。如果是完全不懂编程的新手可以先参考一些编程入门指南。然后按照推荐的科目顺序选择合适的教材和视频课程开始学习同时注重实践项目将理论知识应用到实际中。总结TeachYourselfCS-CN为你提供了一条系统、高效的计算机科学自学路径。从《计算机程序的构造和解释》开始逐步深入各个核心科目通过实践项目巩固知识你完全可以凭借自己的努力获得世界一流的计算机科学教育成为一名能够应对挑战、不断成长的软件工程师。现在就行动起来开启你的自学计算机科学之旅吧【免费下载链接】TeachYourselfCS-CNTeachYourselfCS 的中文翻译 | A Chinese translation of TeachYourselfCS项目地址: https://gitcode.com/gh_mirrors/teac/TeachYourselfCS-CN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考