数学
和CS最相关的数学领域是“离散数学”,离散是连续对立面。是微积分之外的一系列的有趣的应用数学的主题。从大体上说,尝试学会全部范围的“离散数学”是没有意义的。更现实一点的做法是对于逻辑学,组合学和概率学,集合论,图论和一些数论告知密码学有一个了解。对于计算机图像学和机器学习来说,线性代数也是一门值得学习的课程。
算法和数据结构
只有一个方法是我一直以来广泛推荐的—编码前首先要思考 — Richard Hamming
我们根据几十年的通识来看,熟悉通用的算法和数据结构是计算机科学教育中最重要的方面之一。这是一个训练一个人解决问题的通用能力的方式,而且这种能力还可以迁移到其他领域的学习。
计算机网络
你不能够通过凝视水晶球来预见未来。因特网未来会变成什么样,取决于如今人类如何去塑造它 — Bob Kahn
考虑到很多软件项目都是基于web服务器和客户端的,计算机网络变成计算机科学中一门有实用价值的学科。系统学习过该课程的自学学生发现他们终于理解了围绕了伴随它们很多年的术语,概念,协议等等。
分布式系统
计算机的数量增长了,它们的分布也更广了。企业之前会购买越来越大型的主机,但是现在大家更倾向于在很多机器上分布式的运行多个小型的应用程序。分布式系统研究的就是这样的技术,这一技术变得越来越重要了。