计算机科学分支领域体系
算法和数据结构
程序设计语言
体系结构
数值和符号计算
操作系统
软件方法学和工程
数据库和信息检索系统
人工智能和机器人学
人机通信
算法和数据结构
本事域研究部分特定类型问题及它们有效解。基础问题包含:
1.对给定类型问题,最好算法是什么?
2.它们要求多少存放空间和时间?
3.空间和时间折衷方案是什么?
4.存取数据最好方法是什么?
5.最好算法最坏情况是什么?
6.算法运行按平均来说好到何种程度?
7.算法通常化到何种程度--即什么类型问题能够用类似方法处理?
1.理论
算法和数据结构领域理论关键原理是:
(1) 可计算性理论。它定义机器能干什么、不能干什么。
(2) 计算复杂性理论。它告诉你怎样测度可计算函数时空要求,把问题大小和处理该问题算法最好或最坏情况性能联络起来,并提供证实对问题任何可能解下界方法。
(3) 算法和算法类时间和空间界限。
(4) 难解性(intractability) 水平。比如,确定性多项式时间内可解问题(P问题入非确定性多项式时间内可解问题(NP问题) ;和有效并行机可解问题(NC问题) 。
(5) 从算法数据流要求到机器通讯通路并行计算、下界和影射。
(6) 在时空上比确定性算法愈加有效、且以足够高概率取得正确结果概率算法。蒙特卡洛方法。
(7) 密码术。
(8) 图论、递归函数、递推关系、组合论、微积分、归纳、谓词逻辑和时态逻辑(Temporal Logical) 、语义学、概率和统计等支撑领域。
2.抽象
算法和数据结构抽象关键部分是:
(1) 对关键问题类有效最优算法和对最好、最坏和通常性能分析。·
(2) 控制和数据结构对多种问题时空要求影响分类。
(3) 关键技术类型,像分治(divide-and-conquer) 、格里地算法、动态计划、有限状态机解释器、堆栈机解释器。
(4) 并行和分布式算法;把问题分为能够在不一样处理器上实施任务划分方法。
3.设计
算法和数据结构领域设计和试验关键内容是:
(1) 对关键问题类算法选择、实现和测试。这些问题类包含搜索、排序、随机数产生和结构模式匹配。
(2) 对于很多类型问题全部能够使用通用方法实现和测试。如杂凑法(harshing图和树)。
(3) 分布式算法实现和测试。比如网络协议、分布式数据更新、信号(semaphores) 、死锁检测器和同时方法。
(4) 存放管理实现和测试。比如无用单元搜集、伙伴系统(buddy System) 、表(lists) 、表格(tables) 和分支。
(5) 对组合问题启发式算法大量试验测试。
(6) 能够安全可靠和秘密通信密码协议。
程序设计语言
本事域研究实施算法虚拟机符号表示、算法和数据符号表示和从高级语言到机器码有效翻译。基础问题包含:
1.由一个语言绘出虚拟机可能组织(数据类型、运算、控制结构、引入新类型和运算机制) 是什么?
2.这些抽象怎样在计算机上实现?
3.用什么样符号表示(语法) 能够有效地指明计算机应该做什么?
1.理论
程序设计语言领域理论关键部分是:
(1) 形式语言和自动机,包含语法分析和语言翻译理论。
(2) 图灵机(过程性语言基础) 。
(3) 形式语义:定义计算机数学模型及模型、语法和实现之间关系方法。关键方法包含标志、代数、操作和公理语义。
(4) 支撑领域:谓词逻辑、时态逻辑、近世代数和数学归纳。
2.抽象
程序设计语言领域抽象关键部分包含:
(1) 基于语法和动态语义模型语言分类:即静态型、动态型、功效、过程性、面向对象、逻辑、说明性、报文传输和数据流。
(2) 语言按应用领域分类:即商业数据处理、模拟表处理和图形。
(3) 程序结构关键语法和语义模型分类:即过程分级、功效合成、抽象数据类型和通信并行过程。
(4) 每一个语言关键类型抽象实现模型。
(5) 语法分析、编译、解释和目标码优化方法。
(6) 语法分析器、扫描器、编译器部件和编译器自动产生方法。
3.设计
程序设计语言领域设计和试验关键内容是:
(1) 和特定抽象机器(语义) 和语法一起,能形成统一可实现整体特定语言。比如,过程性(COBOL, FORTRAN, ALGOL,Pascal,Ada,C) 、功效(LISP) ,数据流(SISAL,VAL) 、面向对象(Smalltalk, CLU) ,逻辑(Prolog) ,单处理(SNOBOL) ,和并行性(CSP, Occam,Concurrent Pascal,Modula2) 。
(2) 特定类型语言指定实现方法:运行时间模型、静态和动态实施方法、打印检验、存放和寄存器分配、编译器、交叉编译器和解释器、在程序中寻求并行性系统。
(3) 程序设计环境。
(4) 语法分析器和扫描器产生器(比如YACC,LEX)