编者注:这篇文章最初发表在她的个人博客Cassey的Thoughts中。
在大学学习计算机科学的那段时间里,我遇到了几本非常有用的教科书。 (这可能令您感到惊讶;当我终于开始找到它们时,这对我来说是一个惊喜。)我在这里与其他可能会编程的人分享,但他们对自己会学到的东西还没有信心。正式的计算机科学(CS)课程。
本书提供了关于面试中可能出现的许多基础CS主题或算法的快速入门指南。 在与大型科技公司面试之前,曾向同行推荐。 这对于清理您可能曾经学过但被遗忘的主题非常有用,并且可以使您意识到可以使用哈希图解决似乎所有的面试问题。 在概述级别介绍概念,因此这也是将CS学生期望了解的事物类型引入的一种好方法。
这是编写干净,可维护和正确的软件的权威参考书。 这是我从更有经验的团队成员通过详细的代码审查中学到的所有东西。 这本书不只是参考书,而且您可以随时学习新知识。
数学是美丽的-在这本书之前,我不知道! 它真的让我大开眼界,以崭新的方式考虑数学,并欣赏其哲学基础。 我没有在课堂上找到这个,但它涵盖了高级数学课程可能会向您介绍的主题。
对于初学者来说,可能不是最好的参考书,这是一本有关计算机科学家开发的许多规范算法的大量参考书。 伪代码有时可能很难理解,但文字说明很有帮助。
这是关于博弈论和代理设计系统(可以做出决定的自治生物,可以是从计算机模拟到人类的任何事物)的非常容易理解的文字。 它帮助我开始思考如何构建对个人和团体的激励机制,以促使出现期望的行为。 这是一本清单,对程序员和计算机科学家以外的人们都将有所帮助。 对公共政策或组织行为感兴趣的人也可以从中学习新的思维模式。 《 Multiagent Systems》一书可在线免费下载。
强类型输入是什么意思? 静态类型与动态类型的相对优势是什么? 函数式,逻辑式和命令式编程之间有什么区别? 编译器如何工作? 所有这些以及更多内容的答案都在此易读的文本中。
本书提供了以下问题的答案:操作系统如何工作? 引导加载程序如何工作,什么使您的Web浏览器无法访问核心系统文件? CPU如何同时管理多个正在运行的程序(可能每个程序都要求多个执行线程)? 很难判断这对日常的编程工作有多大帮助,但是尽管如此,它还是一个非常有用的文章。
由Cassey Lottman撰写,最初于 2017 年7月25日 发布在 dontpaniclabs.com 上。