理想的计算机科学知识体系
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/study/computer_science_knowledge_hierarchy.html
学了这么多年的计算机,真没好好梳理过整个计算机科学体系,正好看到一篇帖子讨论此问题,就此总结一下吧。
- 理论
- 数学理论(书籍:《具体数学》《离散数学》《数理逻辑》)
- 基础数学
- 高等数学(极限理论)
- 数论(Number Theory)
- 离散数学(集合论、图论)
- 数理逻辑
- 形式语言与自动机(Automata,书籍:《形式语言与自动机》)
- 几何理论(Geometry)
- 数学理论(书籍:《具体数学》《离散数学》《数理逻辑》)
- 硬件(书籍:《Computer Architecture: A Quantitative Approach》)
- 计算机组成原理:计算机组成部件、CPU时间片、存储体系、IO接口、总线技术
- 计算机体系结构:多处理机、流水技术、指令调度
- 计算机微机原理:一种处理机的具体结构、引脚作用
- 数字电路:逻辑门电路、触发器、组合电路设计
- 机器语言编程
- 汇编程序设计(Assembly)
- 可执行文件格式
- 链接(Linking)与加载(Loading)
- 操作系统(书籍:《现代操作系统》《操作系统实现》)
- 进程与线程理论
- 段页式内存管理
- 文件系统
- IO管理
- 内核与驱动
- 程序设计基础(书籍:《The Art of Computer Programming》)
- 数据结构(书籍:《数据结构与算法分析》)
- 算法
- 算法分析(书籍:《算法分析》)
- 算法设计(书籍:《算法导论》)
- 程序设计语言
- 编译原理(《编译原理》龙书)
- C一定要会
- C++/Java建议要会(《C++ Primer》《Effective C++》《Thinking in Java》)
- C#/F#等新语言了解
- Python/Perl/Shell等脚本语言掌握其一
- 编程框架和库
- 平台程序开发
- Windows程序设计(书籍:《Programming Windows》)
- Linux/Unix系统编程(书籍:《Advanced Programming in the UNIX Environment》)
- 跨平台程序设计
- 程序库
- C++:STL/Boost/MFC/
- 跨平台:GTK/wxWidgets/Qt
- Perl:CPAN
- 平台程序开发
- 程序设计与软件工程
- 面向对象的程序设计方法,必须掌握(书籍:《深入浅出设计模式》《Thinking in UML》《The Unified Modeling Language User Guide》)
- 敏捷(Agile)、统一过程(RUP)、迭代方法(Iterative)建议掌握一些
- 调试和测试方法必须掌握一些
- 应用
- 计算机网络(书籍:《计算机网络》)
- 数据库(书籍:《数据库系统概念》《数据库系统实现》)
- WEB应用
- 并行开发(Concurrent Programming)
- 分布式系统(Distributed System)
非常理想的计算机科学知识结构,原则上每个CS毕业的同学都应该具备这些技能,不过包括我在内绝大部分同学都有欠缺,虽然毕业了,继续努力补上自己的缺陷。
有一些只能作为培养从事it行业的职业感觉,工作了去看这些东西可浪费时间?
[回复]
P.Linux 回复:
11 8 月, 2010 at 11:28
要想成为大师,没有这种完备的知识体系是不行的。不愿意“浪费时间”去构建自己完备的知识体系,只能一辈子浪费时间。
[回复]
不断学习,我赞同,但是不能认同全才的概念,体系太大,背负太多,就行动太慢,何况现在的节奏如此之快,分工非常之细。这堆概念看起来很唬人,实际用处只能像我前面所说,所以博主所言只是图个心里安慰,因为…….你时间不够。
[回复]