PAT 计算机程序设计能力考试
- 考试总分100 分。
- 顶级考试一般出3题,题目描述语言为英文;甲级考试一般出4题,题目描述语言为英文;乙级考试一般出5题,题目描述语言为中文。
- 每题要求考生按照严格的输入输出要求提交程序解决问题。程序须经过若干测试用例的测试,每个测试用例分配一定分数。
- 每题的得分为通过的测试用例得分之和;整场考试得分为各题得分之和。提交错误不扣分。
- 名次根据总得分决定,相同分数对应并列名次。
- 每题分数的分布与题目难度成正比。顶级考试的分数分布一般为:30、35、35;甲级考试的分数分布一般为:20、25、25、30;乙级考试的分数分布一般为:15、20、20、20、25。
乙级(Basic Level)
考生应具备以下基本能力:
1. 基本的C/C++的代码设计能力,以及相关开发环境的基本调试技巧;
2. 理解并掌握最基本的数据存储结构,即:数组、链表;
3. 理解并熟练编程实现与基本数据结构相关的基础算法,包括递归、排序、查找等;
4. 能够分析算法的时间复杂度、空间复杂度和算法稳定性;
5. 具备问题抽象和建模的初步能力,并能够用所学方法解决实际问题。
甲级(Advanced Level)
在达到乙级要求的基础上,还要求:
1. 具有充分的英文阅读理解能力;
2. 理解并掌握基础数据结构,包括:线性表、树、图;
3. 理解并熟练编程实现经典高级算法,包括哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、深度优先搜索、广度优先搜索、回溯剪枝等;
4. 具备较强的问题抽象和建模能力,能实现对复杂实际问题的模拟求解。
顶级(Top Level)
在达到甲级要求的基础上,还要求:
1. 对高级、复杂数据结构掌握其用法并能够熟练使用,如后缀数组、树状数组、线段树、Treap、静态KDTree等;
2. 能够利用经典算法思想解决较难的算法问题,如动态规划、计算几何、图论高级应用(包括最大流/最小割,强连通分支、最近公共祖先、最小生成树、欧拉序列)等,并灵活运用;
3. 能够解决复杂的模拟问题,编写并调试代码量较大的程序;
4. 具有缜密的科学思维,考虑问题周全,能够正确应对复杂问题的边界情况。
CCF软件能力认证
Certified Software Professional(CSP)
1. 认证概况
- 认证名称:计算机软件能力考试认证,简称软件能力认证。
- 认证定义:软件能力包括软件的开发、测试、部署和运行维护能力等。本认证目前主要对软件开发能力,即使用计算机通过编程语言和算法,编制成能在计算机上稳定运行的软件模块的能力进行考察和认证。
- 认证对象:高等院校的在校生、从事或将要从事IT领域技术与技术管理人员均可申请参与认证。
- 认证方法:认证考试全部采用上机编程方式,编程语言允许使用C/C++或Java。考核为黑盒测试,以通过测试用例判断程序是否能够输出正确结果来进行评分。考试时间为240分钟。
- 认证时间:每年举行若干次。
2. 认证知识要求
考试内容主要覆盖大学计算机专业所学习的程序设计、数据结构以及算法,以及相关的数学基础知识。包括但不限于:
- (1)程序设计基础
逻辑与数学运算,分支循环,过程调用(递归),字符串操作,文件操作等。 - (2)数据结构
线性表(数组、队列、栈、链表)、树(堆、排序二叉树)、哈希表、集合与映射、图。 - (3)算法与算法设计策略
排序与查找,枚举,贪心策略,分治策略,递推与递归,动态规划,搜索,图论算法,计算几何,字符串算法、线段树、随机算法,近似算法等。
3. 认证标准
- 计算机软件能力认证以被测试者熟练掌握程序设计、数据结构以及算法,通过一定范围内自选的通用编程语言,在指定时间空间内,熟练、准确地完成对给定问题的编程和调试为认证标准。编程语言允许使用C/C++或Java。所编程序的正确性由计算机系统根据事先给定的数据进行测试,通过者得分,否则不得分。中国计算机学会将对每一名参加认证并有成绩者发放认证成绩单(成绩单中标注所使用编程语言及成绩分析)。
- 测试的问题覆盖大学计算机专业所学习的程序设计、数据结构以及算法,以及相关的数学基础知识,并关注编程技巧的使用、性能的优化,以及奇异情况的正常处理。