从知识到能力:大学计算机教育到底要培养你什么
开篇:一个常见的困惑
你有没有过这样的感觉?
期末考试背了满满一脑袋的知识,考完试却发现忘得差不多了? 学了很多编程语法,但面对一个真实的项目,还是不知道从哪里下手? 简历上写满了"掌握XX技术",但面试官问起项目经验,却答不上来?
如果你有这些困惑,说明你正在经历一个很普遍的问题——你学了很多知识,但却不知道如何把它们变成真正的能力。
这个问题不仅你注意到了,全世界的计算机教育专家也注意到了。CC2020(本系列上篇文章已经介绍过,请参见计算学科的门类与版图:你所不知道的"计算"两个字)专门用了一整章来讨论这个问题:大学教育到底要培养什么?仅仅有知识够不够?
答案显然是不够的。
CC2020 报告从基于知识的学习转向基于胜任力的学习。胜任力要求用知识和技能来展示人类行为,同时将品行作为内在调节因素。
传统教育模式:知识本位
让我们先来看看传统大学教育是怎么运作的。
在过去的几百年里,大学教育有一个核心假设:只要你掌握了足够的知识,你就能成为一个专业人士。
这种模式很自然——老师教你知识,你学会知识,然后通过考试证明你掌握了知识。学习效果怎么样?用考试分数来衡量。
这种模式有其道理。知识是基础,没有知识就像盖房子没有砖瓦。但问题是,知识只是起点,不是终点。
CC2020指出,传统的计算教育主要关注"知识领域"——也就是一个学科里要学哪些概念、理论、原理。学生学完这些,通过考试,就认为学会了。但这种模式存在明显的问题。
知识遗忘曲线
首先,知识会遗忘。
你有没有这种感觉:大一学的微积分,现在还记得多少?大二学的编译原理,现在还能写出什么?大部分知识考完试就还给老师了。
这不是你的错,这是人类记忆的自然规律。研究表明,学到的知识如果不在实践中使用,会随着时间快速遗忘。
知识与能力的鸿沟
更重要的是,知道"是什么"不等于知道"怎么做"。
举一个简单的例子:
-
你知道排序算法有哪几种——这是知识(知道是什么) -
让你在一个实际项目里选择合适的排序算法——这是技能(知道怎么做) -
让你在时间紧迫的情况下快速实现并优化,并考虑代码的可维护性——这需要品行(知道为什么)
很多同学学完数据结构,书本上的算法背得滚瓜烂熟,但真正要解决一个实际问题,却不知道该用哪种算法、怎么用、为什么要这样用。
这说明,传统教育培养的"知识存储",并不能自动转化为"问题解决"的胜任力。
CC2020 指出,脱离具体任务,知识、技能和品行就无法整合为真正的胜任力。传统教育的问题不在于教知识,而在于没有提供足够的真实任务场景,让学生在实践中整合知识、技能、品行。
CC2020的突破:从知识到胜任力
正是看到了传统模式的局限性,CC2020提出了一个根本性的转变:从"知识本位"转向"胜任力本位"。
这个概念听起来有点抽象,但理解它很重要。
什么是胜任力?
胜任力(Competency),是指一个人能够有效完成工作任务的能力。
注意这个定义的关键点:有效完成工作任务。它关注的不是你知道什么,而是你能做什么。
CC2020 在 IT2017 的基础上进一步扩展了胜任力框架,提出胜任力是在任务执行中观察到的知识 - 技能 - 品行的组合。由此形成一个更精确的公式:
胜任力 = 任务中的[知识 + 技能 + 品行]
这三个要素,缺一不可。脱离具体任务,知识、技能和品行就无法整合为真正的胜任力。
知识:知道"是什么"
知识(Knowledge)——这是胜任力的"知道是什么"维度,可以理解为事实。
CC2020 将计算专业毕业生需要掌握的知识分为三个层次:计算交叉学科知识、专业知识和基础知识、应用领域知识。
第一层:计算交叉学科知识
这是计算学科的核心知识体系。CC2020 总结了六大类计算知识领域:
-
用户和组织:社会问题与专业实践、安全政策与管理、信息系统管理与领导、企业架构、项目管理、用户体验设计 -
系统建模:安全问题与原则、系统分析与设计、需求分析和规范、数据与信息管理 -
系统架构和基础设施:虚拟系统与服务、智能系统(AI)、物联网、并行与分布式计算、计算机网络、嵌入式系统、平台技术、安全技术与实操 -
软件开发:软件质量、验证与确认、软件流程、软件建模与分析、软件设计、平台开发 -
软件基础:图形可视化、操作系统、数据结构、算法与复杂性、程序设计语言、程序设计基础、计算系统基础 -
硬件:架构与组织、数字化设计、电路与电子、信号处理
这些知识领域来自六种已发布的计算课程体系规范,代表了计算学科集体智慧的结晶。
第二层:专业知识和基础知识
仅凭计算学科知识不足以使毕业生为成功的职业生涯做好准备。CC2020 强调还需要:
基础知识——以个人为中心的基本学术品行:
-
数学、物理科学、语言、社会科学的基础 -
有效沟通(书面、口头、演示) -
时间自我管理、礼仪、礼节等
专业知识——工作场所敏锐度:
-
口头交流和表述、书面交流 -
问题解决与故障排除 -
项目和任务的组织规划 -
协作与团队精神 -
研究与自学 -
关系管理 -
分析与批判性思维 -
时间管理 -
质量保障/控制 -
数学与统计 -
伦理与跨文化视野 -
多任务优化与管理
行业用人经理通常认为,仅有计算方向的专业知识或者基础敏锐度不是雇佣计算专业毕业生的主要标准。计算专家需要与其他来自不同背景的专业人士合作,通过连贯和清晰的沟通来展示有效的思想交流。
第三层:应用领域知识
计算领域的专业实践体现在组织或商业环境中。每一个计算人工制品都存在于某种社会环境中——也就是说,服务于个人、社区或两者皆有的意图。
计算常见的应用领域包括商业、医学、工程、交通、娱乐等。有许多子学科:
-
计算+X:计算是主要学科重点,如计算 + 医学、计算 + 金融 -
X+ 计算:X 是主要学科重点,如会计 - 信息系统、营销 - 信息系统、金融 - 信息系统、医疗 - 信息系统
为了使未来的学生、用人单位受益,计算课程体系指南应该尽可能明确地以有计划的方式发布基础、专业和应用领域的经验。
知识是胜任力必不可少的核心概念,反映了那些列在教学大纲中的主题。传统上,计算教育的课程体系指南主要由基于科学推论或事实的知识元素来决定。
但光有知识不够。一个百科全书式的人,未必能解决实际问题。
技能:知道"怎么做"
技能(Skills)——这是在特定背景下应用知识执行任务的能力和策略。
你知道排序算法有快速排序、归并排序——这是知识。让你写一个高性能的排序函数——这需要技能。
技能回答"怎么做"的问题。当将"知道是什么"的知识应用于行动以完成任务时,才能实现胜任力。技能通常是随着时间的推移和实践而发展起来的。
CC2020 采用修订后的布鲁姆认知过程分类法来指定成功完成任务所期望的技能程度,分为六个累积级别。每个级别都有对应的动词和期望表现:
第一层:记忆
通过回忆事实、术语、基本概念和答案来展示对先前学习材料的记忆。
-
典型动词:选择、定义、发现、标记、列表、匹配、回忆、展示、拼写、告诉 -
计算机领域例子:能够列出五种常见的排序算法;能够定义什么是时间复杂度;能够回忆TCP/IP 四层模型的名称
第二层:理解
通过组织、比较、翻译、解释、描述来展示对事实和想法的理解。
-
典型动词:分类、比较、对比、证明、解释、扩展、推断、解释、大纲、改写、展示、总结、翻译 -
计算机领域例子:能够解释快速排序的工作原理;能够比较关系型数据库和非关系型数据库的区别;能够总结一个算法的核心思想
第三层:应用
通过运用获得的知识、事实、技术规则,在新环境下解决问题。
-
典型动词:应用、建立、选择、构建、发展、实验、做、使用、模型、组织、计划、解决、利用 -
计算机领域例子:能够应用动态规划解决背包问题;能够在项目中使用设计模式构建可扩展的系统;能够利用缓存机制优化网站性能
第四层:分析
测试并把信息分为几部分,以识别动机和原因;做出推断并找到证据来支持解决方案。
-
典型动词:分析、假设、分类别、分类、比较、总结、对比、发现、解剖、分辨、分开、测试、调查、推理、检查 -
计算机领域例子:能够分析系统瓶颈并找出性能问题的根本原因;能够分解一个复杂需求为多个可实现的模块;能够对比不同技术方案的优劣并推理出最佳选择
第五层:评估
根据信息、想法的有效性或者质量做出判断,并提出并捍卫观点。
-
典型动词:同意、评价、评估、奖励、选择、比较、总结、标准、批评、决定、扣除、防守、定义、反对、预估、解释、判断、证明、优先、推荐、支持、价值 -
计算机领域例子:能够评估两个框架哪个更适合项目需求;能够判断一段代码的质量并提出改进建议;能够论证为什么选择微服务架构而不是单体架构
第六层:创造
通过以新模式组合元素或者提出替代方案,以不同的方式编译信息。
-
典型动词:适应、建立、改变、选择、混合、编译、撰写、构造、创新、删除、设计、发展、讨论、精心制作、估计、制定、发生、假设、证明、发明、弥补、最大化、最小化、修改、原来的、起源、计划、预测、提出、解决、方案 -
计算机领域例子:能够设计一个全新的系统架构;能够开发一个创新的产品功能;能够提出一种更高效的算法;能够构建一个完整的创业产品原型
大学教育不应该只停留在"记忆"和"理解"的层次,而应该培养学生达到"应用"、"分析"、"评估"甚至"创造"的层次。
CC2020 强调,技能维度通常是通过观察所产生的工作过程或质量来间接评估的。由于知识和技能两个维度的融合,"知道是什么"通过"知道怎么做"而被赋予了更生动丰富的内涵。因此,知识要素和应用它的技能水平在胜任力规范中必然要自然地融合在一起。
品行:知道"为什么"
品行(Dispositions)——这是最容易被忽视,却最关键的要素。
品行决定了胜任力的"知道为什么"维度,规定了任务执行中必不可少的特征或质量。品行代表了社会情感倾向、偏好和态度,体现了执行任务的倾向以及知道何时以及如何参与这些任务的敏感性。
品行为什么重要?
让我给你讲一个故事。
小张和小李是同学,都学计算机,成绩差不多。毕业时,小张去了一个小公司,小李去了一个大厂。
三年后,小张成了技术负责人,带着一个小团队。小李却还是在写代码,晋升无望。
为什么?
不是因为小张技术上比小李强多少,而是因为小张有一个重要的特质:他总是主动找问题,而不是等领导分配任务。
这听起来是个小事,但正是这种主动性,让他获得了更多的成长机会,最终脱颖而出。
这就是品行的力量。
品行如何调节知识和技能
CC2020 特别强调,品行能够调节从业者的能力,将一项任务区分为"专业完成"而不是简单地"完成"。
例如:
-
两个人都有同样的编程知识,但一个人以严谨性对待代码质量,另一个人只求"能跑就行"——长期来看,前者会成为更可靠的工程师 -
两个人都有同样的技术能力,但一个人主动学习新技术、适应变化,另一个人固守已有知识——技术变革时,前者会脱颖而出 -
两个人都能完成分配的任务,但一个人目标导向、追求结果,另一个人只做"分内事"——晋升机会来临时,前者更可能被选中
CC2020 从文献中得出 11 种预期的品行特征,如表 4.4 所示。这些品行在真实的职场中至关重要:
|
|
|
|
|---|---|---|
| 适应性 |
|
|
| 协作性 |
|
|
| 创造性 |
|
|
| 严谨性 |
|
|
| 热情 |
|
|
| 主动性 |
|
|
| 专业精神 |
|
|
| 目标导向 |
|
|
| 责任感 |
|
|
| 反应灵敏 |
|
|
| 自我指导 |
|
|
这些品行听起来像是"软技能",但在实际工作中,它们往往比技术知识更能决定一个人的成败。
CC2020 指出,品行通常是通过观察行为模式或反思实践来间接评估的。这意味着:你的品行不是你说出来的,而是你在每一个任务中的选择、行动和努力所展现出来的。
任务:让知识、技能、品行融为一体
你可能会问:知识、技能、品行,这三个要素怎么结合在一起?
答案是:任务。
任务是让知识熟练应用并使品行具体化的一种架构。以口语、平实形式表述的任务提供了得以展现品行的环境,个人可以调整自己的选择、行动和努力,以高效和有效的方式追求并达到成功。
从这个意义上说,任务包含了胜任力有目的的背景,揭示了知识、技能和品行的一体性。为此,任务定义规定了务实的参与行为,反映了与某一培养计划毕业生特定目标相关的专业实践。因此,任务描述为该计划提供了一个明确的背景,以便开展相应的教学法,使毕业生能够展现出作为计算专业人员的胜任力。
举一个具体的例子:
-
任务:在一个电商网站中实现用户登录功能 -
知识:知道 HTTP 协议、会话管理、密码加密原理 -
技能:能够编写安全的认证代码、调试问题、优化性能 -
品行:严谨性(注意安全性细节)、责任感(对用户数据负责)、专业性(遵循最佳实践)
只有在这个具体任务中,你的知识、技能和品行才能被观察到、被评估,才能真正构成胜任力。
为什么这个转变很重要?
职场的新现实:技能差距
让我们面对一个现实问题:现在找一个程序员工作,需要什么?
你可能听说现在就业形势不好,大公司裁员,应届生竞争激烈。但同时,几乎所有公司都在招人——招不到合适的人。
这就是技能差距。CC2020 引用了美国劳工统计局的数据:到 2024 年,美国计算相关岗位将增加 12%,其中信息安全增长 36.5%。但与此同时,许多计算专业毕业生却找不到工作。
岗位很多,但合适的人很少。
原因很简单:传统教育培养的是"知识存储",但工作需要的是"胜任力"。企业希望毕业生能够"来之即战",能够在真实任务中应用知识、展示技能、体现品行。但传统教育模式下,学生可能在考试中取得高分,却无法在真实工作场景中有效完成任务。
CC2020 强调,行业用人经理通常认为,仅有计算方向的专业知识或者基础敏锐度不是雇佣计算专业毕业生的主要标准。用人单位需要的是能够将其计算机技术知识应用于特定的商业任务,并具有专业洞察力的人才。
技术的快速变化
另一个重要原因是:技术变化太快了。
你入学时学的技术,等你毕业时可能已经过时了。CC2020 特别指出,计算领域的变化尤其剧烈——新的框架、新的语言、新的工具层出不穷。
如果你只学会了知识本身,等你工作时可能发现学的知识已经用不上了。
但如果你学会的是:
-
在特定背景下应用知识的能力(技能) -
适应变化、持续学习的态度(品行) -
在真实任务中整合知识、技能、品行的胜任力
——这些能力不会过时,它们会帮助你适应任何新技术。
从"学什么"到"能做什么"
CC2020 的胜任力模型,本质上是一个从"学什么"到"能做什么"的转变。
当你毕业时,企业问的不是"你学过什么课程",而是:
-
你能完成什么任务?(胜任力) -
你应用知识达到什么水平?(技能层次) -
你以什么样的方式工作?(品行)
这就是为什么 CC2020 强调:胜任力 = 任务中的[知识 + 技能 + 品行]。脱离具体任务,知识、技能和品行就无法整合为真正的胜任力。
你该怎么做?
理解了 CC2020 的理念,你会发现一个关键问题:仅仅在课堂上听讲、做作业、应付考试,是远远不够的。
CC2020 的胜任力模型为你指明了一个清晰的方向:知识、技能、品行必须在真实任务中融合,才能转化为真正的胜任力。
你需要主动设计自己的学习路径,把每一个学习任务都当作培养胜任力的机会。怎么做?
第一层:夯实知识基础
知识是胜任力的基石,但知识的获取不能止步于记忆和理解。
-
课堂学习:不仅要记住概念,更要理解背后的原理。问自己:这个知识为什么重要?它解决了什么问题? -
拓展阅读:课堂知识只是基础,主动阅读技术文档、行业报告、开源项目代码,了解知识的实际应用场景 -
构建知识体系:用思维导图、笔记等方式,把零散的知识点串联成网络,形成自己的知识框架
第二层:在实践中锤炼技能
技能必须在实践中才能习得,而且需要从"应用"层次逐步提升到"创造"层次。
基础实践:
-
学完一门编程语言,去做一个完整的项目,而不是只写课后习题 -
学完数据结构,去 LeetCode 刷题锻炼思维,但更要理解每道题背后的算法思想 -
学完数据库,自己设计并实现一个小型系统,从需求分析到部署上线
进阶挑战——学科竞赛:
-
ACM/ICPC 程序设计竞赛:锻炼算法设计和快速编程能力,培养在压力下解决问题的技能 -
数学建模竞赛:学习将实际问题抽象为数学模型,培养分析和综合能力 -
黑客马拉松(Hackathon):在 24-48 小时内完成一个产品原型,锻炼快速学习和团队协作能力 -
"互联网+"大学生创新创业大赛:从技术、商业、市场多维度思考问题,培养创新思维
高阶实践——科研与创新项目:
-
大学生创新创业训练计划(大创项目):自主选题、自主设计、自主实施,完整体验从想法到成果的全过程 -
参与教师科研项目:接触前沿问题,学习研究方法论,培养分析和评估能力 -
开源项目贡献:参与真实世界的软件开发,学习代码规范、版本管理、协作开发
记住:每一个项目、每一次竞赛、每一项研究,都是一个"任务"——在这个任务中,你的知识被应用,技能被锤炼,品行被塑造。
第三层:在挑战中塑造品行
品行需要在真实场景中锻炼,尤其是在面临困难和压力时的选择,最能体现一个人的品行。
-
参加团队项目,主动承担协调角色——培养协作性、目标导向和责任感 -
遇到困难不轻言放弃——培养严谨性、自我指导和韧性 -
主动发现问题、提出问题、解决问题——培养主动性、创造性 -
在截止期限前高质量交付——培养专业精神、责任感 -
面对新技术保持好奇和学习热情——培养适应性、持续学习的习惯 -
参加开源社区、技术沙龙——学习与陌生人协作,建立专业网络
第四层:在反思中持续成长
胜任力的培养不是一蹴而就的,需要持续的反思和改进。
-
定期复盘:每完成一个项目或竞赛,问自己:我学到了什么?哪些地方可以做得更好? -
寻求反馈:主动向老师、同学、业界人士请教,获取外部视角 -
建立成长档案:记录自己的项目经历、技术成长、反思心得,这不仅是求职的资本,更是自我认知的镜子 -
关注行业趋势:技术变化快,保持对新技术、新工具的敏感度,培养终身学习的习惯
一个整合的建议
不要把知识、技能、品行割裂开来。最好的学习方式是:
选择一个有挑战性的任务(如大创项目或学科竞赛)→ 在完成任务的过程中学习所需知识 → 通过反复实践将知识转化为技能 → 在面对困难和协作中塑造品行
这样的学习,才是 CC2020 所倡导的胜任力本位学习。
写在最后
回到开篇的问题:大学教育到底要培养什么?
CC2020 给出了一个清晰的答案:不是培养"知识仓库",而是培养"能力个体"。
知识很重要,没有知识,能力就是无本之木。但知识本身不足以让你成为一个专业人士。
你需要:
-
把知识转化为技能——通过实践,让"知道是什么"变成"知道怎么做" -
把技能内化为品行——在真实任务中,展现"知道为什么"的专业素养 -
在任务中整合三者——胜任力 = 任务中的[知识 + 技能 + 品行]
当你毕业时,企业问的不是"你学过什么",而是:
-
你能完成什么任务? -
你应用知识达到什么水平? -
你以什么样的方式工作?
CC2020 工作组写道:"本报告将帮助学生决定计算学习路径,帮助行业代表提高他们对毕业生概况的理解,以及教育工作者创建有效的课程体系。"
希望这篇文字,也能帮助你更好地理解——你为什么学这些,以及学这些能做什么。
更进一步:
-
主动设计自己的学习路径,把每一个学习任务都当作培养胜任力的机会 -
勇于接受挑战,在学科竞赛、创新项目、开源贡献中锤炼自己 -
持续反思和成长,在每一个任务中展现并塑造自己的品行
理解了"大学教育到底要培养什么"之后,你可能会问:为什么我的课程表长这样?
为什么离散数学要在数据结构之前?为什么操作系统要等学完计算机组成原理?这些核心课程是怎么选出来的?它们之间有什么内在联系?
下一章,我们来聊聊我国教育部的"101 计划",以及它如何回答了"计算机专业到底应该学什么"这个根本问题。你会发现,课程表不是随意安排的,每一门课、每一个顺序,都有它的道理。


评论