我学习CS历程,也包含基础知识的总结以及编程实现的整理。

每一阶段里面, 都有很多个性化选项, 仅供参考

入门

夯实基础 你可以跳过这些而直接进入下面的进阶实践环节,并根据自己需要查漏补缺。 但是这些都是非常重要的基础,任何时候,只要有时间,就可以去学习了解。

进阶与实践

English template 英文模板


CS入门

现在的入门课基本都是用Python语言。

面向对象编程语言

一般而言,建议先学Java 或 Python,再学C++。 这三种语言都基本掌握后,再根据自身的职业需求,选择其中一个语言(或者其他语言)进一步深入练习。

面向初学者程序员的在线资源:

面向有经验的程序员的在线资源:

测试你的代码

了解如何捕获错误,创建测试和破解软件.

操作系统

逻辑推理和离散数学

计算理论

  • Introduction to the theory of computation, Michael Sipser

计算机网络

  • Computer Networking A Top-Down Approach, James F. Kurose, Keith W. Ross

数据库

  • SQL
  • A First Course in Database Systems, Jeffrey D. Ullman, Jennifer Widom

编译器

算法和数据结构

了解基本数据类型(堆栈,队列和袋子),排序算法(快速排序,合并,堆栈),数据结构(二叉搜索树,红黑树,哈希表)和Big O.

分布式,并行和大数据

加密与区块链

安卓开发

iOS开发

网页开发

参与项目

  1. 尝试课堂以外的项目:创建和维护网站,构建自己的服务器或构建机器人。
  2. 参与大型系统(代码库)的一小部分,阅读并理解现有代码,跟踪文档和调试
  3. 与其他程序员一起工作
    • 参与开源项目:
      • 尝试提出一个issue
      • 针对一个issue,尝试给出解决方案,并提交 pull request
    • 参与公司实习

其他编程语言

根据实际需要自行选择一种或多种学习, 一些在线资源:

JavaScript

CSS & HTML

Ruby

Haskell

Lua

PHP

GO

参考资料

Guide to technical development from Google education OS Free Programming Books