【云驻共创】培养具有全栈思维的工科人才:一种“小型全系统”贯通式教学方案
背景
在计算机学科教育领域,长期存在“课堂代码跑得通,企业项目不会用”的实践困境。对于计算机专业的学生而言,仅仅掌握理论知识远远不够,实践能力的培养同样至关重要。
华为云联合国内顶尖高校推出的贯通式实践教学体系,以“计算机专业的危机”开篇,经历了“计算机系统”课程重构,从“程序设计”到“编译原理”的系统类核心课贯通,实现从代码级实践到系统级设计的认知跃迁。
前言
计算机专业的危机
10多年前,也就是2010年前后,计算机专业曾经经历过一次萧条。
当时,计算机是专业是招生的调剂大户。当时有一种论调:“就是一个工具,人人都会”。其他专业的学生也开始学习程序设计,甚至更懂自己专业的需求。还有一种声音是:“上了4年大学比不过3个月的培训班”。所以当时催生了计算机专业学生的系统能力培养的1.0时代。
关注点在于,计算机专业培养的学生与其他专业也会写程序的学生有什么区别。
近几年,计算机专业开始回暖,各大高效热门专业也均为计算机专业。
2022年,被称为“生成式AI元年”。然而,伴随着“计算机专业将成为新天坑”的声音,频频出现,再次敲响“狼来了”警钟。
计算机专业学生的系统能力培养2.0时代到来。智能计算时代,需要什么样的程序员?
培养具有“全栈能力”工科人才
在异构计算时代的程序员必须对于算法和硬件模型融会贯通,才能写出高质量的代码。
智能计算时代的程序员需要具备三方面能力:
- 软硬协同:大规模数据中心的建立和个人移动设备的普及,计算机人才培养强调的“程序性开发能力”正在转化为更重要的“系统性设计能力”。
- 熟悉底层:为了应对各种复杂应用,开发人员必须了解系统平台的结构与特性,并热练掌握其中的技术和工具。
- 全栈能力:开发人员必须在系统层面综合设计,在整个技术栈实现优化。
黄金圈法则:从为什么开始
如何破局?
黄金圈法则是一种深度思考方式,由外至内依次为:做什么(What)、怎么做(How)、为什么(Why)。即从问题的核心出发,先思考目的,再探索方法,最后落实行动,这种思考方式更有助于发现问题的本质,提出更有效的解决方案。
新工科面临的问题
新工科对计算专业人才培养提出新要求
新工科是高等工程教育改革的新范式,核心目标是提升工程类人才培养质量。
现代工程实践特点:
- 多学科交叉。
- 多要素协同。
- 多系统集成。
- 多链条耦合。
面对现代工程实践特点,对计算机专业人才培养提出新要求:
- 会“造”计算机系统。
- 会“用”计算机系统。
- 解决复杂工程问题。
3个关键点:
- 新时代对人才培养提出更高要求:迫切需要具备创新意识,综合素养和专门能力的新型工程人才。
- 现代工程的特点:通常具有系统结构复杂,设计约束繁多,内部要素冲突等特征。
- 计算机系统能力是解决工程问题能力的核心:计算机系统能力从过去强调“程序性开发能力”向更加重要的“系统性思维”和“系统性设计能力”转变。
系统能力的起源
学生学完“计算机组成”之后,能开发简单的CPU吗?
学生学完“操作系统”之后,能开发简单的操作系统内核吗?
学生学完“编译”之后,能开发简单的编译器吗?
大多数的学校和大多数的学生,学完这三门课,是不能的。
解决复杂工程问题能力培养
培养学生解决复杂工程问题能力的普遍做法:
- 企业级/工业级案例直接带入课堂。
- 本科生进实验室,进科研团队。
- 全员创新创业,全员参加学科竞赛。
直接这么做,能使大多数学生受益,在大多数高校可复制吗?否。
不是说这个做法不好。
首先应该打基础,根据学生学习认知规律搭梯子,再进一步综合应用/企业级案例/学科竞赛/科研训练。
什么才是最基础的“课程”?如何教好这些课程?
什么才是学生安身立命之本的本领?如何让学生掌握这些本领?
高等工程教育的普遍问题
高等工程课程体系问题亟待解决:
- 没有建立良课程之间的关联
- 课程与课程之间缺乏有效衔接。
- 课程内容滞后,挑战度低。
- 课堂上忙于知识灌输,填鸭式。
- 实践教学体系松散,缺乏贯通式综合实践
- 没有统一的平台,多为验证性实验。
- 脱离行业,技术手段落后 重塑实践体系。
- 综合分析,设计,应用能力差。
- 对计算机系统,核心内容掌握不够
- 高高漂浮在“代码层”。
- 难以胜任复杂工程问题。
- 难以完成软硬件协同设计任务。
- 不能很好建立,计算机系统完整概念
- 缺乏系统观。
- 不具备系统全栈思维。
- 无法解决系统层面的问题。
应系统性重构课程体系和重塑实践体系,着力培养具体全栈思维和系统能力的工科人才。
高等工程教育的课程体系问题,主要有:
- 缺乏一门独立的能贯穿整 整个知识体系的基础课程。
- 缺少大课硬课,无法给课程的深 的深度提供空间。
- 课程之间缺乏衔接,无法给课程的宽度提 复提供空间。
- 实践教学不成体系,脱离行业,技术手段落后,多为验证性实验。
- 一上来就是工业级案例,蜻蜓点水,无法深入理解,甚至劝退。
以计算机专业为例
计算机系统抽象层的转换。上层是下层的抽象,下层是上层的实现。
程序执行结果,不仅取决于,算法、程序编写。而且取决于,语言处理系统(编译)、操作系统、ISA、微体系结构、器件。
必须将各层次关联起来解决问题。
目前,国内大多数高校的情况:
- 课程体系:每门课只涉及其中1-2个层次,层次之间的转换没有交待。
- 软件课和硬件课各自: “守身如玉” ,“互不贯通”。
培养模式创新
构建双重环链,强化系统能力
解决高等工程教育面临的新问题,提出“1234”教学模式。
“1234”教学模式主要解决如下问题:
- 解决课程体系松散,核心课程内容滞后,挑战度偏低等问题。
- 解决实践教学无序,脱离行业, 技术手段落后等问题。
- 解决学生学习成果评价不够科学,合理,全面等问题。
“1234”教学模式的核心双重环链结构培养体系:
- 一套人才培养教学体系:面向系统能力,全过程可跟踪,可追溯。
- 双重环链结构:横向能力链,纵向课程群链。
- 三级实践教学体系:课程实验,综合实践,领域创新应用。
- 四维学习成果评价:学习过程,专业教师,第三方,企业导师。
“1234”教学模式有效的解决了多重问题:
- 有效解决基于课程,课程群组,毕业要求多级评价,改进的系统性和客观性问题。
- 有效解决课程教学问题。
- 有效解决实践教学问题。
- 有效解决能力评价问题。
“双重环链结构”培养体系
贯穿四年,层层递进的能力链,分别是:
- 程序设计能力。
- 系统设计能力。
- 系统工程能力。
- IT职业素养。
支撑能力培养的课程群链,分别是:
- 能力培养基础课程。
- 能力培养高阶课程。
- 集中实践环节。
- 学习成果测试环节。
“计算机系统及实验”是核心枢纽课程,三个夏季学期层层递进的集中实践项目。
重构课程体系
新开“计算机系统”取代“计算机组成与结构”。
《深入理解计算机系统》大部分内容:
- 先修:对程序设计,数字电路(改造:将CPU设计等内容加入)回溯。
- 后续:与操作系统,编译原理贯通。
“计算机系统”课程定位,解决三个问题:
- 程序在计算机中怎么跑的?
- 程序在机器上跑怎样才有效?
- 这门课与先修后续课的关系?
设计枢纽课程——计算机系统
新开的“计算机系统”课程,取代了“计算机组成”课程。
这一变化的核心目的,不是不开“计算机组成”,而是换了一个视角。不是不要“计算机组成”,而是教学内容重构。
重构之后,“计算机系统”枢纽课程解决了前面提到的三个问题。
重塑教学内容
以程序员视角重塑课程内容。
计算机系统与CMU的课程不同之处:
- 增加汇编基础(自编案例代码库,录制操作视频)。
- 增加VSPM的设计与实现(与数字逻辑贯通,理解指令的电路级行为)。
- 自创系列原型机,贯穿核心课程体系。
系统类核心课开设情况
形成链条,为学生系统能力培养提供“支撑”和“空间”。
大课硬课,为学生系统能力培养提供“深度”和“宽度”。
小型全系统贯通
系统类核心课贯通
我们自行设计了两台原型机,这两台原型机就是为了教学而设计的,贯穿不同课程。
系统类核心课贯通,形成链条,向前导引,向后回溯,解决不成体系问题。
自创原型机
自行设计了两台原型机,这两台原型机就是为了教学而设计的。
第一台原型机只有十二条指令,被称为VSPM。它主要用于贯穿“数字电路”到“计算机系统”课程。
在硬件层面,这台原型机可以实现仿真小而全CPU的设计与实现。
此外这台原型机提供了实验课程,帮助学生写出汇编器和模拟器,理解程序的机器级行为,进而理解指令的电路级行为。
另一条原型机,RSPM,它有四十条指令。它主要用于贯穿“计算机系统”到“操作系统+编译原理”课程。
这台原型机帮助学生,讨论指令集结构的设计,研究程序的机器级行为,再写汇编器、模拟器。
在操作系统里面,这台原型机可以实现:
- OS:链接器的实现,完成简单的进程切换,中断处理等。
- CC:小而全编译器的设计与实现,程序性能优化等。
“课程贯通+实践融通”的双螺旋迭代
HNU原型机和HNU口袋猫,是两台自创机器,“一虚一实,一软一硬”,以螺旋迭代结构,贯穿整个课程体系。
以原型机贯穿课程体系,以口袋计算机融通实践环节,“课程贯穿+实践融通”的螺旋迭代。
渐进式系统能力培养体系
由浅入深,由简到繁(课程-实验-夏季学期)。
先模拟器(虚拟方式),后硬件板子(物理方式)。
同两款原型机,同一块FPGA板子。
顺序渐进,贯穿四年。
小结:课程贯通+小型全系统
本科生首先掌握基本理论、基础知识。
将专业“安身立命”之本的核心课打造成大课硬课。
建立计算机系统整体观,打通学生“任督二脉”。
建立符合学生认知规律、循序渐进的贯通式教学体系。
学生亲手从无到有、从简到繁搭建一个“小型全系统”。
不是依靠某一门课或者某一个课程设计,而是一整套培养方案。
与华为合作
香橙派鲲鹏Pro开发板
与华为的合作:
香橙派开发的鲲鹏Pro开发板(搭载湖大“小型全系统”教学体系,支持二次开发)。
第1期建设(已完成):
- 基于自创的VSPM原型机,开发miniCPU、mini操作系统和mini编译器教学体系,移植到鲲鹏Pro;
- 基于这套体系的课程群教学资源(程序设计+数字电路+计算机系统操作系统+编译原理)建设。
分多期围绕原型cpu构建基于开发板的课程群
围绕原型CPU构建基于开发板的课程群,涵盖4门核心课程:
- 数字电路/计组:移植12条指令原型;新开发扩展模块支持堆栈和函数调用。
- 计算机系统导论:移植编译器,汇编器、链接器;新开发扩展模块支持堆栈和函数调用。
- 操作系统:移植Uniprotion到开发板上。
- 编译原理: 开发新课件,融合毕昇编译器内容,移植现有编译实验到开发板。
使用简单原型机教学,让学生掌握基本原理,同时解除鲲鹏技术栈。
设计清晰的教学线路,使用ARM V8示例教学,让学生全面解除鲲鹏根技术。
- 程序设计基础/数据结构。
- 数字电路/计组:初阶,12条指令原型机,逻辑部件设计/模拟仿真。
- 计算机系统导论/汇编与接口:初阶,原型机框架实现/编译器/汇编器/链接器实现。
- 操作系统:openEuler Uniproton 和开发板结合。
- 编译原理:结合开发板的编译课程实验(含毕昇)。
- 数字电路/计组:进阶,ARM V8 DEMO CPU 设计
- 计算机系统导论/汇编与接口:进阶,ARM V8 编译器/汇编器/链接器实现。
- 操作系统:进阶,编写 DEMO OS。
- 原生开发/迁移:基于Devkit的原生开发。
培训计划
2024年12月8日,CECC演讲,在中国计算机教育大会上。
2025年1月5日,华为布道师直播+几大平台同步直播。
2025年寒假,联合线上线下师资培训,线下形式为宣讲+实操。
2025全年,虚拟教研室教研活动,点对点集体备课。计划,线上开展5-8次课程,线下开展1-2次课程。
教育的目的(个人观点)
一门课对学生的影响不应该终止在考完试之后,当他被问到这门课,还能对他有意义,才是成功的、一流的课程。
总结
聆听了赵欢老师关于“小型全系统”贯通式教学方案的课程后,我深刻理解到,好的课程,应该因地制宜,因校制宜,因专业制宜,因课制宜。
循序渐进的贯通式教学体系,不是依靠某一门课或者某一个课程设计,而是一整套培养方案。学生可以亲手从无到有、从简到繁搭建一个“小型全系统”。
“课程贯穿+实践融通”式教学,才能更好的让学生理解课程、深入课程,掌握核心基本知识的同时,更大的激发学习兴趣,进而赋予职业发展潜力。
未来,期待华为开发者布道师们更多精彩演讲。
本文参与华为云社区【内容共创】活动第28期。
- 点赞
- 收藏
- 关注作者
评论(0)