升级大学软件教育

2022-05-30 10:48王怀民王涛毛新军
中国大学教学 2022年9期
关键词:实践教育专业教育通识教育

王怀民??王涛??毛新军

摘 要:无处不在的软件已经成为现代社会经济活动的基础设施,深刻重塑人们的思维模式。在现代高等教育体系中,软件教育不仅仅是面向软件专门人才的专业教育,还应该成为覆盖全体大学生的通识教育。软件教育要专业教育与通识教育并重,领域学科知识与软件学科知识结合,原理讲授与动手实践融合,实现对软件通识教育、专业教育、领域软件教育以及实践教育的升级。

关键词:软件教育;升级;通识教育;专业教育;实践教育;开源教育

早期的大学软件教育是计算机教育的组成部分,是以计算机为中心的软件教育。随着信息时代的到来,人类社会的数字化程度日益深化和普及,实现了网络化,并正在向智能化的高级阶段迈进。当前世界,计算无处不在,软件定义一切。软件已经成为当今信息化社会的基础设施,它不仅是记载人类文明的新载体,而且是运行现代文明的新平台,软件正在重塑我们的思维模式和生产生活方式。面对新时代新需求,中国比任何时候都需要更加重视软件教育,软件教育亟须全面升级和变革[1-3]。本文结合我国当前大学软件教育实践,讨论为什么需要升级大学软件教育和如何升级大学软件教育。

一、为什么要升级大学软件教育

1.软件自身发展变化要求升级大学软件教育

软件学科是一个年轻的学科。从全球视角看,大学软件教育大约起步于20世纪50年代,直到20世纪80年代初才逐步形成以计算机为中心的软件知识体系。大学软件教育以软件开发专业人才为教育对象,以逻辑思维训练为核心。20世纪90年代,伴随着个人计算机和互联网的普及,大学软件教育及其知识体系虽然发生了数轮迭代升级,但仍然没有改变以计算机为中心的主流范式。例如,网络协议作为计算机上一种新的I/O协议,网络应用作为计算机上一种新的应用方式。进入21世纪,伴随着互联网、移动互联网和物联网的发展和普及,软件成为云计算、大数据、物联网、智能化(俗称“云大物智”)时代的灵魂载体,大学软件教育的对象、知识体系和模式都需要做出改变和升级。

第一,大学软件教育不应仅仅是面向软件专门人才的专业教育,还应该成为覆盖全体大学生的通识教育。软件技术已经发展成为具有广泛渗透性的基础性技术和技能,软件定义一切将带来软件定义的世界,无处不在的软件不仅是作为社会经济活动的基础设施,还将成为人们解决问题的基本手段。面向未来,每一个接受高等教育的成年人不仅应该是现代信息化社会的直接受益者,更应该是现代软件文明的直接创造者,软件技能不再仅仅是大学软件专业人才的专业能力,还将成为所有大学生必备的基本生活和工作技能。

第二,软件教育的专业知识体系升级不应仅仅局限在传统的计算机视野下,而应该向网络空间拓展。软件成为人类社会的基础设施是社会信息化进程不断深化的必然结果,其技术基础是“计算的泛在化”和“软件定义一切”。网络化计算平台连接无处不在的各类智能化设备和可传感物体,深入人类社会生活的方方面面,形成了“人—机—物”三元融合万物智能互联的态势。基于计算机的计算演变成基于网络的计算,软件基于网络开发、通过网络提供服务已经成为常态,传统计算理论(如算法理论)和软件开发模式(如逐步求精方法)不足以回答新的软件问题。例如,如何刻画基于云计算的软件服务的可信性和持续演化问题。软件知识体系必须正视软件作为基础设施的新挑战,特别是方法论上的挑战。

第三,大学软件教育方式不能仅仅局限于课堂的专业性知识传授,必须适应丰富多彩的软件实践生态发展要求。由于软件的逻辑特征,早期的软件教育关注于逻辑思维训练,形成了用大脑“运行软件”的数学演算取向,忽略了在计算机上“调试软件”的实践。在当今信息化时代,软件越来越复杂,仅仅开源空间的开源项目仓库数量就超过3亿个,任何程序员不可能读完每一行代码,更不可能用大脑“跑明白”复杂软件系统。软件教育不仅需要依靠共享协作的开源生态环境,更应该是一个“入世”的教育,形成与软件产业、软件研发、软件用户互为依赖、协同发展的共生体。

2.中國软件发展要求升级中国大学软件教育

自从我国开展软件教育以来,历经几代计算机科学家、教育家和企业家的不懈努力,我国软件科研、教育、产业不断发展壮大。20世纪80年代初,中国学位制度的建立和发展为我国大学软件教育奠定了坚实的学科基础,完成与国际先进软件知识体系对接。进入21世纪,为了满足我国软件产业发展对软件产业人才的迫切需求,国家试办示范性软件学院,开启了面向软件产业需求的大学软件教育新探索。在当前构建新发展格局的时代背景下,升级中国大学软件教育不仅有软件技术发展变化的要求,还有中国软件自身发展的特殊要求。

第一,必须加强服务于软件产业发展的人才供给。过去20年间,我国软件产业持续保持两位数的快速增长态势。2021年我国软件业累计完成软件业务收入94 994亿元,同比增长17.7%,是2001年的131倍,软件业利润总额11 875亿元,同比增长7.6%[1]。近20年来,虽然我国高校软件相关专业毕业生规模不断扩大,但相较于我国软件产业持续多年的两位数年增速,我国大学软件类人才供给年均增长只有个位数,人才供给增量较之需求存在巨大缺口。根据关键软件人才需求预测研究报告,预计到2025年,我国软件人才缺口将继续加大,软件人才紧缺问题将严重制约软件产业的高质量发展。

第二,必须加强掌握软件核心关键技术创新的高素质人才供给。20世纪80年代,当美国主导全球IT市场之后,我国也完全开放了中国IT市场。我们培养的优秀大学生或者留学美国,成为美国IT核心技术创新的生力军,或者进入外企,成为美国产品进入中国的代理者。相当长的一段时间,国内失去了关键软件的市场竞争力,大学软件教育更加热衷追逐应用热点,软件人才的系统能力培养严重弱化,导致我国关键软件人才奇缺。当中国IT产业升级的时候,发现“缺芯少魂”,被“卡脖子”问题日益突出。近年来,尽管开源软件为我国学习关键软件提供了新机会和新条件,但我们仍处于开源软件生态链的外围,缺少主导性的关键软件开源项目和软件核心关键技术创新人才群体。

二、如何升级大学软件教育

无论是从软件技术发展的时代特點出发,还是从我国软件产业发展和国家安全要求出发,我国大学软件教育都亟须升级。大学软件教育涉及软件通识教育、软件专业教育、领域软件教育等,结合我国当前软件教育现状,中国大学软件教育升级需要重点关注以下四个方面的问题。

问题一:如何升级大学软件通识教育?

软件有通识教育吗?答案是肯定的。比如当前中国大学普遍开设的“大学计算机基础”通识课,在相当程度上就是软件通识教育。在“软件定义一切”的时代背景下,我们不是把所有大学专业变为计算机类专业,而是通过升级软件通识教育,使每一个大学生具备用软件来解决未来就职领域数字化问题的知识和技能。同时升级大学软件通识教育也是解决我国软件人才缺口的最有效途径。

通过国防科技大学近年来的实践,我们认为升级大学软件通识教育需要聚焦“两种能力”,抓住“三个衔接”。首先要聚焦提升学生的计算思维认知能力,帮助学生形成用算法抽象理解数字空间问题求解,计算思维的训练必须以软件为载体,且须通过编程能力培养加以落实。其次要聚焦提升学生的编程实践能力,通过问题案例和编程案例,依托各类在线编程工具的灵活组合,支持课堂内的实践教学,帮助学生形成自主学习编程工具解决现实问题的知识、技能和信心。

“三个衔接”是指大学软件通识教育要与中小学计算机基础教育、大学计算机通识教育、其他专业教育相衔接。通过衔接过去、衔接当下、衔接未来,促进软件通识教育与各类教育的融合和衔接,贯穿教育的各个阶段,极大提升软件通识教育的效率。

问题二:如何升级软件专业教育?

培养关键软件核心技术的创新人才主要依靠升级软件专业,需要把握软件技术发展的新机遇。传统的软件专业教育以计算机为中心。进入互联网时代,软件系统往往基于网络开发、维护、运行和演化,呈现出“构造于网络、运行于网络、服务于网络”的网络化特征,软件形态也正在变为“人—机—物”融合的基础设施。软件系统表现出的这些新特征、新变化,要求软件专业教育主动适应,做好升级。

一是要升级新的软件观。要培养学生新的软件系统观,关注“人—机—物”融合的复杂软件系统论;要培养学生新的软件形态观,关注软件系统持续成长的特点和规律;要培养学生新的软件价值观,关注以人为中心的可信软件价值标准;要培养学生新的软件生态观,关注软件生态系统的发展演变。

二是要升级以网络为中心的软件学科知识体系。从软件运行的角度看,需要将以计算机为平台的软件知识体系升级到以网络为平台的软件知识体系;从软件开发的角度看,需要将计算机辅助的软件工程知识体系升级为基于网络的软件开发生态知识体系。

三是要升级软件系统能力培养。系统能力是软件专业人才的关键能力,系统能力培养标准同样需要由计算机空间拓展到网络空间,建立与软件新形态相适应的高层次研究型人才培养方法,强化解决以网络为平台的复杂系统问题的能力,提升勇于开拓新时代软件学科“无人区”的探索能力。

问题三:如何升级领域软件教育?

领域软件是领域知识软件化,在经济社会发展和国家安全中的作用日益突出,学习、理解、开发领域软件,是软件教育的重要目标与内容。传统的领域软件开发是以程序本身为关注点的垂直领域软件开发,如工业设计系统、气象预报系统、地理信息系统、作战指挥系统等。如何有效提升领域软件开发效率与软件质量,提高领域软件可移植、易复用、能升级和平台化水平,是当前领域软件教育面临的主要问题。

首先要升级或强化领域软件工程课程体系。要聚焦工业设计、电子信息、科学计算等领域的特点和信息化转型发展需求,构建面向领域的软件工程课程体系,在相关专业领域开设软件工程、软件体系结构、软件开发方法学等相关课程。其次要加强各专业领域学生两种能力的培养:一是升级领域需求工程能力,即提升学生的领域需求分析能力以及领域软件的规划和构思能力;二是升级领域软件工程能力,即提升学生跨学科协作的专业软件研发能力和专业软件创新能力。

以MATLAB的发展为例,在1965年到1970年,J. H. Wilkinson教授及18个同事发表了一系列数学计算方法及其算法的论文,为MATLAB打下了数学基础。之后他们相继发布了一组工具软件,如1971年发布的基于Algol 60开发的相关矩阵算法和基于Fortran开发的EISPACK,1975年发布的基于Fortran开发的LINPACK。在此基础上,1980年MATLAB正式发布并开始用于新墨西哥大学、斯坦福大学的相关教学。1992年,Simulink发布并用于仿真和模型设计,MATLAB作为一个教学和工程计算平台开始发挥越来越重要的作用。2010年以后,一大批MATLAB相关应用程序发布,覆盖了生物、金融、控制系统、数据库、图像处理和计算机视觉、数学、并行计算、信号处理和无线通信、测试和测量等相关领域,提供了一大批各个领域的工具箱,形成了丰富的计算与仿真工具生态系统。今天的MATLAB已然发展为一个覆盖多领域的计算工具生态系统。

问题四:如何升级软件实践教育?

软件教育既是逻辑性很强的知识传授,更是工程性很强的实践教育。软件实践教育质量的好坏,直接关系到软件通识教育、软件专业教育和领域软件教育水平的高低。长期以来,软件实践教育始终是制约软件教育发展的薄弱环节。软件实践教育在实践案例构造、实践资源共享、实践效果评估等方面面临着严峻的挑战。开源软件的成功实践为我们提供了升级软件实践教育、破解长期困扰软件实践教学难题的启示和途径。

升级软件实践教育,首先要开展教育模式创新,有效利用大规模开放在线实践教学模式;其次要做好平台升级,全力打造开放、共享的软件教育支撑平台。具体而言,一是要升级软件教学与软件实践的融合,基于互联网实践教学平台,依托线上线下课堂教学和线上线下实践教学,采用群体化实践教学模式,从而形成群体化实践教学案例。二是要升级学习工具与开发工具的融合,依托项目代码库、核心开发团队,通过快速体验、创意分享、协同编程、持续评估等,实现开发测试与部署维护的相互促进,从而让学生能够读好的代码,学好的技术,做好的项目,真正参与群体化的创新实践。三是升级软件创作与软件生产的融合。软件创作是由创意驱动的软件实践活动,鼓励开放共享,而软件生产则是目标驱动的软件实践活动,关注质量和流程控制。

在软件实践教育升级中,要遵循以“大众化协同、开放式共享、持续性评估”为核心的群体化学习与创新机理[4]。作为未来的软件开发人员,要学会面向大规模开放群体,通过大众化协同将教师答疑辅导为主的课堂实验模式,转变为面向开放社区、面向客户需求和任务、以互助讨论为主的协作学习模式。通过引入开放式资源共享模式,将以教师为单一资源来源的封闭环境资源分享模式,转变为与程序员、开发者甚至极客一起解决软件问题的基于互联网的大范围资源共享模式。通过引入持续性评估机制,实现对实践教学的有效评估与反馈,实现对学习者参与性与创新性的有效培养。

三、升级软件教育的探索与实践

近年来,国防科技大学以开源创新为抓手,以软件开发群体化方法的大众化协同、开放式共享和持续性评估思想为指导,积极研发支持软件人才培养的支撑软件和大规模开放在线课程(Massive Open Online Course,MOOC),与开源软件资源以及开源软件开发部署云平台对接,构建开放共享的软件开发、部署、维护、升级和演化的实训平台,推广大规模开放在线实践(Massive Open Online Practice,MOOP)教学,推进基于开源和面向开源的软件教育升级,并取得了很好的成效。

“大学计算机基础”在相当程度上就是软件通识教育,国防科技大学开设的“大学计算”课程以计算思维和编程能力培养为核心,采用以复杂工程问题实训为主线的能力培养途径编排教学内容和施教。该课程依托EduCoder.net实训平台,精心选取了数学、物理、经济、地理等领域的案例和实践,以公式编程、圆周率π的计算、泰勒级数计算及误差分析、函数可视化、国家统计局数据分析、在线实时地震动画模拟、线性代数计算、数独游戏、密码破解与电子取证、SAR图像处理10个复杂工程问题为牵引,分成37个内容,植入130余个知识点,将课程知识和技术植入复杂工程问题计算求解过程之中,通过翻转知识学习和实践实训的传统方式,突出了能力培养的中心地位。该课程在国防科技大学作为计算机专业基础课面向全校各专业一年级本科生开课,有效形成了线下课堂与线上课程相结合、理论学习与实战实训相结合的混合式教学模式,充分发挥了线上平台伴随式实战实训、持续实时评测、全过程跟踪评估的优势,学生学习兴趣、问题求解能力以及编程实践能力得到极大的提升,获得了非常好的教学效果。

“软件工程”是软件专业教育的核心课程,国防科技大学依托Trustie/GitLink等平台对软件工程系列课程进行了系统性和深层次的改

革[5-6]。(1)在专业知识体系方面,引入以开源软件技术、群体化开发方法、分布式协同开发等基于网络的软件工程技术,全面升级以网络为中心的软件学科知识体系;以“人—机—物”融合的软件系统为案例来介绍软件开发的挑战和问题以及相关的方法和技术,以此来帮助学生深入理解软件新形态,建立新的软件观。(2)在实践教学方面,创新课程实践教学模式。一方面要求学生阅读、分析、标注和维护高质量、上规模的开源软件,以此来学习开源社区中高水平软件开发者的软件开发经验、技能和工程素质,从而实现学生的快速学习和高效成长;另一方面,要求学生开发出有创意、上规模、高质量的“人—机—物”融合软件系统,并借助开源软件和群智知识来完成开发任务,从而培养学生的系统能力、解决复杂工程问题的能力、创新实践能力。(3)在教育理念和学习方法方面,打破传统教育教学严重依靠教师、教材和教室的局限性,借助开源软件所蕴含的群体智能思想和理念,提出要将不同学校、不同班级、不同年级的学生组织在一起,围绕课程知识学习和实践教学,开展群体化学习,以讨论和解决问题、交流学习和实践经验、分享教学和实践资源,从而形成基于群体大众的新颖学习方式,极大提升了学生的学习效率和解决问题的能力,并引导学生创作出空巢老人看护系统等优秀的开源软件项目。

此外,国防科技大学联合中国计算机学会(CCF)以及相关单位形成了从开源代码阅读评注平台Codepedia、开源技能学习实践平台EduCoder.net到开源项目创新开发平台GitLink等的系列实践支撑平台。并以平台为依托支撑本科生和研究生的计算机教育,帮助学生从读好的开源代码开始,不断学好的开源技术实现实践能力的快速提升。在此基础上参与好的开源项目开源,甚至进一步做出属于自己的优秀开源项目。相关平台已支持4届中国软件开源创新大赛,并在在线实践教学、开源项目创新中得到广泛应用。

参考文献:

[1]张尧学. 软件与软件的教育[J]. 中国大学教学,2020(6):3.

[2]陈志刚,石金晶,奎晓燕.“双一流”建设背景下软件工程国家级一流本科专业建设思路探讨[J].中国大学教学,2022(6):27-33.

[3]洪玫,严斌宇,余静.面向学生能力培養的课程教学设计——以软件工程专业为例[J].中国大学教学,2022(7):39-44.

[4] Wang H. Harnessing the crowd wisdom for software trustworthiness[J]. ACM Sigsoft Software Engineering Notes. 2018, 43(1): 1-6.

[5]毛新军,尹刚,王怀民.软件工程系列课程实践教学平台Trustie[J]. 计算机教育,2014(23):53-56.

[6]毛新军,尹良泽,尹刚,等. 基于群体化方法的软件工程课程实践教学[J]. 计算机教育,2018(7):14-17.

王怀民,国防科技大学教授,中国科学院院士。

猜你喜欢
实践教育专业教育通识教育
高职艺术院校文化素质教育与专业教育的融合
服装与服饰设计专业实践教育模式
房地产专业教育与“三创”教育的耦合效应
通识教育与自由教育
工程教育认证模式T的人才培养模式
高职院校专业教育与思想政治教育融合研究
论研究学习小组在大学生成才转型教育中的实践意义
工科院校设计类专业实践教育的反思与出路
浅析师范生中国精神培育的路径
应用型本科院校“通识教育”的教务管理及对策分析