【云驻共创】培养具有全栈思维的工科人才:一种“小型全系统”贯通式教学方案

举报
叶一一 发表于 2025/06/16 16:03:19 2025/06/16
【摘要】 背景在计算机学科教育领域,长期存在“课堂代码跑得通,企业项目不会用”的实践困境。对于计算机专业的学生而言,仅仅掌握理论知识远远不够,实践能力的培养同样至关重要。华为云联合国内顶尖高校推出的贯通式实践教学体系,以“计算机专业的危机”开篇,经历了“计算机系统”课程重构,从“程序设计”到“编译原理”的系统类核心课贯通,实现从代码级实践到系统级设计的认知跃迁。前言计算机专业的危机10多年前,也就是2...

背景

在计算机学科教育领域,长期存在“课堂代码跑得通,企业项目不会用”的实践困境。对于计算机专业的学生而言,仅仅掌握理论知识远远不够,实践能力的培养同样至关重要。

华为云联合国内顶尖高校推出的贯通式实践教学体系,以“计算机专业的危机”开篇,经历了“计算机系统”课程重构,从“程序设计”到“编译原理”的系统类核心课贯通,实现从代码级实践到系统级设计的认知跃迁。

前言

计算机专业的危机

10多年前,也就是2010年前后,计算机专业曾经经历过一次萧条。

当时,计算机是专业是招生的调剂大户。当时有一种论调:“就是一个工具,人人都会”。其他专业的学生也开始学习程序设计,甚至更懂自己专业的需求。还有一种声音是:“上了4年大学比不过3个月的培训班”。所以当时催生了计算机专业学生的系统能力培养的1.0时代。

关注点在于,计算机专业培养的学生与其他专业也会写程序的学生有什么区别。

近几年,计算机专业开始回暖,各大高效热门专业也均为计算机专业。

2022年,被称为“生成式AI元年”。然而,伴随着“计算机专业将成为新天坑”的声音,频频出现,再次敲响“狼来了”警钟。

计算机专业学生的系统能力培养2.0时代到来。智能计算时代,需要什么样的程序员?

培养具有“全栈能力”工科人才

在异构计算时代的程序员必须对于算法和硬件模型融会贯通,才能写出高质量的代码。

智能计算时代的程序员需要具备三方面能力:

  • 软硬协同:大规模数据中心的建立和个人移动设备的普及,计算机人才培养强调的“程序性开发能力”正在转化为更重要的“系统性设计能力”。
  • 熟悉底层:为了应对各种复杂应用,开发人员必须了解系统平台的结构与特性,并热练掌握其中的技术和工具。
  • 全栈能力:开发人员必须在系统层面综合设计,在整个技术栈实现优化。

黄金圈法则:从为什么开始

如何破局?

黄金圈法则是一种深度思考方式,由外至内依次为:做什么(What)、怎么做(How)、为什么(Why)。即从问题的核心出发,先思考目的,再探索方法,最后落实行动,这种思考方式更有助于发现问题的本质,提出更有效的解决方案。

新工科面临的问题

新工科对计算专业人才培养提出新要求

新工科是高等工程教育改革的新范式,核心目标是提升工程类人才培养质量。

现代工程实践特点:

  • 多学科交叉。
  • 多要素协同。
  • 多系统集成。
  • 多链条耦合。

面对现代工程实践特点,对计算机专业人才培养提出新要求:

  • 会“造”计算机系统。
  • 会“用”计算机系统。
  • 解决复杂工程问题。

3个关键点:

  • 新时代对人才培养提出更高要求:迫切需要具备创新意识,综合素养和专门能力的新型工程人才。
  • 现代工程的特点:通常具有系统结构复杂,设计约束繁多,内部要素冲突等特征。
  • 计算机系统能力是解决工程问题能力的核心:计算机系统能力从过去强调“程序性开发能力”向更加重要的“系统性思维”和“系统性设计能力”转变。

系统能力的起源

学生学完“计算机组成”之后,能开发简单的CPU吗?

学生学完“操作系统”之后,能开发简单的操作系统内核吗?

学生学完“编译”之后,能开发简单的编译器吗?

大多数的学校和大多数的学生,学完这三门课,是不能的。

解决复杂工程问题能力培养

培养学生解决复杂工程问题能力的普遍做法:

  • 企业级/工业级案例直接带入课堂。
  • 本科生进实验室,进科研团队。
  • 全员创新创业,全员参加学科竞赛。

直接这么做,能使大多数学生受益,在大多数高校可复制吗?否。

不是说这个做法不好。

首先应该打基础,根据学生学习认知规律搭梯子,再进一步综合应用/企业级案例/学科竞赛/科研训练。

什么才是最基础的“课程”?如何教好这些课程?

什么才是学生安身立命之本的本领?如何让学生掌握这些本领?

高等工程教育的普遍问题

高等工程课程体系问题亟待解决:

  • 没有建立良课程之间的关联
    • 课程与课程之间缺乏有效衔接。
    • 课程内容滞后,挑战度低。
    • 课堂上忙于知识灌输,填鸭式。
  • 实践教学体系松散,缺乏贯通式综合实践
    • 没有统一的平台,多为验证性实验。
    • 脱离行业,技术手段落后 重塑实践体系。
    • 综合分析,设计,应用能力差。
  • 对计算机系统,核心内容掌握不够
    • 高高漂浮在“代码层”。
    • 难以胜任复杂工程问题。
    • 难以完成软硬件协同设计任务。
  • 不能很好建立,计算机系统完整概念
    • 缺乏系统观。
    • 不具备系统全栈思维。
    • 无法解决系统层面的问题。

应系统性重构课程体系和重塑实践体系,着力培养具体全栈思维和系统能力的工科人才。

高等工程教育的课程体系问题,主要有:

  • 缺乏一门独立的能贯穿整 整个知识体系的基础课程。
  • 缺少大课硬课,无法给课程的深 的深度提供空间。
  • 课程之间缺乏衔接,无法给课程的宽度提 复提供空间。
  • 实践教学不成体系,脱离行业,技术手段落后,多为验证性实验。
  • 一上来就是工业级案例,蜻蜓点水,无法深入理解,甚至劝退。

以计算机专业为例

计算机系统抽象层的转换。上层是下层的抽象,下层是上层的实现。

程序执行结果,不仅取决于,算法、程序编写。而且取决于,语言处理系统(编译)、操作系统、ISA、微体系结构、器件。

必须将各层次关联起来解决问题。

目前,国内大多数高校的情况:

  • 课程体系:每门课只涉及其中1-2个层次,层次之间的转换没有交待。
  • 软件课和硬件课各自: “守身如玉” ,“互不贯通”。

培养模式创新

构建双重环链,强化系统能力

解决高等工程教育面临的新问题,提出“1234”教学模式。

“1234”教学模式主要解决如下问题:

  • 解决课程体系松散,核心课程内容滞后,挑战度偏低等问题。
  • 解决实践教学无序,脱离行业, 技术手段落后等问题。
  • 解决学生学习成果评价不够科学,合理,全面等问题。

“1234”教学模式的核心双重环链结构培养体系:

  • 一套人才培养教学体系:面向系统能力,全过程可跟踪,可追溯。
  • 双重环链结构:横向能力链,纵向课程群链。
  • 三级实践教学体系:课程实验,综合实践,领域创新应用。
  • 四维学习成果评价:学习过程,专业教师,第三方,企业导师。

“1234”教学模式有效的解决了多重问题:

  • 有效解决基于课程,课程群组,毕业要求多级评价,改进的系统性和客观性问题。
  • 有效解决课程教学问题。
  • 有效解决实践教学问题。
  • 有效解决能力评价问题。

“双重环链结构”培养体系

贯穿四年,层层递进的能力链,分别是:

  • 程序设计能力。
  • 系统设计能力。
  • 系统工程能力。
  • IT职业素养。

支撑能力培养的课程群链,分别是:

  • 能力培养基础课程。
  • 能力培养高阶课程。
  • 集中实践环节。
  • 学习成果测试环节。

“计算机系统及实验”是核心枢纽课程,三个夏季学期层层递进的集中实践项目。

重构课程体系

新开“计算机系统”取代“计算机组成与结构”。

《深入理解计算机系统》大部分内容:

  • 先修:对程序设计,数字电路(改造:将CPU设计等内容加入)回溯。
  • 后续:与操作系统,编译原理贯通。

“计算机系统”课程定位,解决三个问题:

  1. 程序在计算机中怎么跑的?
  2. 程序在机器上跑怎样才有效?
  3. 这门课与先修后续课的关系?

设计枢纽课程——计算机系统

新开的“计算机系统”课程,取代了“计算机组成”课程。

这一变化的核心目的,不是不开“计算机组成”,而是换了一个视角。不是不要“计算机组成”,而是教学内容重构。

重构之后,“计算机系统”枢纽课程解决了前面提到的三个问题。

重塑教学内容

以程序员视角重塑课程内容。

计算机系统与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期

任务1:计算机核心课程贯通式实践教学体系介绍

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。