开源思维在人才培养体系中的研究与实践
2022-06-14乔文豹
梁 旭 李 宁 曾 铮 乔文豹
(北京信息科技大学计算机学院 北京 100101)
1 开源思维
思维最初是人脑借助于语言对事物的概括和间接的反应过程。思维以感知为基础又超越感知的界限。通常意义上的思维,涉及所有的认知或智力活动。它探索与发现事物的内部本质联系和规律性,是认识过程的高级阶段。思维是人类所具有的高级认识活动。按照信息论的观点,思维是对新输入信息与脑内储存知识经验进行一系列复杂的心智操作过程[1]。
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真首次提出计算思维的概念,即运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。引起计算机教育界的广泛重视,之后相继有人提出设计思维、互联网思维等概念。这反映了当代信息技术发展背景下,科学思想的突出地位和作用。设计思维最早作为一种创造性解决问题的方法论是被美国商业创新咨询公司IDEO提出的,IDEO认为“设计思维是实现创新的新方法和新途径”[2]。互联网思维,就是在(移动)互联网+、大数据、云计算等科技不断发展的背景下,对市场、用户、产品、企业价值链乃至对整个商业生态进行重新审视的思考方式[3]。
开源思维的核心是运用开源形成的观点和方法,解决现实世界中的问题。开源思维的特点例如:共享、合作、互助,相互尊重、用人所长、快速迭代、及时发布、不从头发明轮子等等。
开源的思想和重要性,贯穿和影响了整个人类文明发展史,比如,中国古代的四大发明之一造纸术的开放共享,使得由语言所形成的知识可以在世界范围内广泛流传。开放共享除了促进文明的发展之外,也是科学技术发展的重要工具。
这些开源思维不但使开源运动取得了巨大的成功,也对计算机科学与技术的未来发展以及人才培养产生了深远的影响。在大学计算机教育中,学生能够运用开源思维,习惯于从开源世界中找灵感、找答案,找问题,并从开源社区求帮助,求合作,做贡献,对于未来软件市场的公平竞争、培养学生乐于奉献的精神和开阔的胸襟都是十分必要的。
2 开源理念及自主创新
开源软件的精神在于让尽可能多的人复制、使用、研究、改进和散布软件,其主要关注点在于软件上,而非金钱[4]。在现代社会,信息技术的革命主要是人工智能,而开源软件极大地促进了人工智能的发展。
开源软件的特征概括起来就是“自由”“公开”“可修改”“可重新发布”,为了保证这四个特征,需要“一群人”遵守相同的“规则”。在互联网发达的当今世界,地域已经不再是人群划分的界限,这里的“一群人”构成了世界范围内遵守相同“规则”的有法律约束力的“社区”,而这里的“规则”就是开源许可证(License)和版权(Copyright)[5][6]。
习近平总书记多次强调,核心技术是国之重器,是我们最大的命门,核心技术受制于人是我们最大的隐患。不掌握核心技术,我们就会被卡脖子、牵鼻子,不得不看别人脸色行事。十四五规划中指出:在事关国家安全和发展全局的基础核心领域,制定实施战略性科学计划和科学工程。瞄准人工智能、量子信息、集成电路、生命健康、脑科学、生物育种、空天科技、深地深海等前沿领域,实施一批具有前瞻性、战略性的国家重大科技项目。
我国在信息领域核心技术上,与世界领先水平相比,仍有较大差距。特别是在集成电路、芯片等半导体行业,以及工业设计软件、人工智能深度学习系统平台、操作系统等基础技术与应收上差距更大。人工智能发展进入新阶段,特别是在移动互联网、大数据、超级计算等新理论新技术以及经济社会发展强烈需求的共同驱动下,人工智能加速发展。人工智能是引领未来的战略性技术,我国也把人工智能发展放在国家战略层面系统布局,围绕核心技术、顶尖人才、标准规范等强化部署,增强人工智能领域的核心竞争力[7]。
目前,我国软件产业仍处于方兴未艾的发展阶段,无论在产业规模还是技术水平方面都与世界先进国家存在相当的差距。充分利用好国内外资源是实现我国软件产业的跨越式发展的重要方针。开源软件凝聚了世界各国大量软件研究和开发人员创造的技术成果,充分地学习、研究、分析以及合理地利用这一丰富的软件技术资源,无疑对加速提高我国软件业的水平具有重要作用。
为构筑开源软件发展的良好平台,我国科技部在近几年布局了包括:百度自动驾驶、阿里城市大脑、腾讯医疗影像、讯飞智能语音、商汤智能视觉、华为基础软硬件、小米智能家居等十五个开放创新平台。开源逐渐成为科技公司抢占市场的有力机制,借助开源推广用户侧的事实标准,通过开源机制实现科技类公司的市场布局,建立上下游合作机制,扩大产业生态。我国科技类公司在跟随国际顶级开源项目的同时,积极推广自发开源项目,阿里、腾讯、华为、滴滴等科技公司纷纷成立开源管理办公室,负责公司对外开源的统筹规划,进行开源之前的合规检查及后续运行推广。
3 开源人才培养和课程体系
形成信息领域核心技术的突破,不仅面临技术难题,还面临材料技术、制造工艺、制造设备以及生态链构造与专利壁垒。正是这些方面,形成了信息技术软硬件系统生态链和价值链。即便有更好、更先进的技术,也很难取而代之。更何况,技术的底层是基本原理、基础理论与思想;而所有这一切,又都与人才有关[8]。
3.1 理论教学、实验教学、科研训练三位一体的创新教育
构建了“两个阶段、三位一体、四种结合”的“234”创新教育模式:坚持理论教学与实验教学、实验教学与实践教育、实践教育与科研训练、课内教学与课外教育的四种结合,通过“基本技能—个性兴趣—创新特色”的两个阶段,实现理论教学、实验教学、科研训练三位一体,从科学方法和科学思维、科学实验和综合实验、综合实践和创新实践的三个方面达到学生创新素质的锻炼和培养。
开源社区是开源课外学习的关键平台。开源社区建设、运行基本思路是:营造创新氛围促进学生开源编程意识培养;建立激励机制培育学生主体性;以项目为中心多学科融合团队型研究活动提高学生实践能力;组织课外开源开发实践活动为学生提供参与开源实践的机会;通过学生间相互交流、相互促进和社会实践,加快开源思维培养。
课程整体上采用“理论+案例+实践”三级强化教学模式,突出实践环节,培养学生开发计算机应用系统的实际能力。在理论环节,启发式教学方法、丰富生动的网站内容,使学生成为教学的主体,通过自主学习来了解、掌握相关知识。
3.2 构建先进的“工程化”教学理念和“多层次,以项目为主线”的开源课程体系
案例教学主要是教师带领学生完成一个实际案例中的一个或数个任务,然后由学生自主完成其中的另外一些任务。研究表明,学生只有通过实际体验和实践才能真正了解和掌握课程的相关知识,才能学到“开源开发”的真谛。因此,课程特别强调学生的实践活动和直接体验。鼓励学生通过课程进行自主性学习,要求学生从中选择主题及相应的内容,通过专题讨论、课题研究、方案设计、模拟体验、实验操作、社会调查等形式,真正学习掌握相关知识,去发现和解决现实生活中的问题,培养创新精神及实践能力。实践教学采用任务驱动的教学方式,让学生相对独立完成一个模拟的、或教师在研的实际科研项目,教师通过指点、探究的方式进行指导。这种项目练习以团队的方式进行,一个项目组由4~6名学生组成,分别担任不同角色。分工协同、共同探寻问题的解决方案,教师和学生、学生和学生一起讨论协商解决问题,理论拉动实践,两者融为有机整体,学生的学习变得充实而有意义。
按照开源人才培养目标、培养规格,树立工程化能力培养与基础理论教学、专业能力培养并重,通过全面改革开源开发课程体系、充实教学内容、改进教学方法,建立工程化实践教学体系,在教学过程中全面体现工程化能力和职业素质培养的思路,进而形成了一个融基础理论、实验教学、工程实践为一体的整体化培养机制,让学生各方面的能力都得到全面均衡的发展,以适应现代软件产业的需求。根据课程的指导思想,依据这个指导思想,确定了“立足基本理论,加强实践教学,注重工程化能力培养”的课程内容设计思想,围绕这个核心思想,教学内容强调了应用性和工程性,同时结合软件工程学科最新的开发技术,提高教学内容的先进性。在课程内容的设置上,围绕着提高学生工程化素质,培养和造就与社会需求相适应的人才这个目标,建立起面向工程化人才培养的课程体系。
开源运动的新理念、新标准、新模式、新方法、新技术、新文化,是创新性、复合型人才成长的沃土,在学生中倡导开源文化中社会合作、共享的理念,有利于构建人类命运共同体的理想的实现。
基础层(突出先进技术和重点内容):了解开源软件生命周期要素,掌握软件开发过程管理模型,能够评价开源技术、程序资源和开发工具等用于解决复杂工程问题对社会可持续发展的影响。
应用层(贯穿标准规范和支持工具):具有从事有生命力的开源软件工作的科学素养,并能参与实际的开源软件项目。利用开放源代码资源从事科学研究,并有能力参与实际的开源软件项目。
实践层(注重教学实践和环境建设):引入小组协作式的课程实践项目,建立支持小组开发的开源开发支持环境,让学生从“可实践”开发的角度学习和运用开源思想和现代技术解决开源软件开发问题。
针对教学中的重要知识点,精心设计教学任务。从开源开发基本原理、方法、技术等方面,对案例逐步展开。同时在任务的驱动下,促使学生自主思考,并通过自主学习、协作学习等方法,探求解决问题的途径。任务驱动教学法的基本过程为:提出任务、分析任务、学生操作、交流讨论、巩固创新、总结等,加快学生对抽象理论和方法的理解和掌握。改变传统的课程考核方式,注重考察学生的综合能力和素质。通过一个具体系统的开发实战机会去让学生参与解决实际问题的全过程。
在教学过程中,注重鼓励和引导探索式学习。学生可以通过文献查阅以及与开源开发企业人员的接触交流,真正体会当前开源开发业界的真实案例和最佳实践,并结合课程实践中的问题进行专题报告和软件演示。
3.3 重视开源开发实践特点,建设“做中学”的实践教学体系
3.3.1 以“做中学”思想指导实践教学
“做中学才是真正的学,做中教才是真正的教”。按照这样的教育模式把实践放在重要地位,全面改革提升开源课程实践的教学工作。具体来说就是要求学生针对一个具体项目从构思、设计、实现,最后进行运作。强化实践环节,体现软件工程实践课程的客观要求和工程教育的基本要求,培养学生的团队合作及工程项目研发能力,让学生在团队环境下运用软件工程方法和技术获得较真实的软件开发经验,提高学生在项目规划、队伍组织、工作分配、成员交流等多方面的能力,培养积极向上的合作精神。
3.3.2 以“合作学习”方法组织实践教学
随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件工程越来越重视团队精神。
合作学习是当前在世界范围内被广泛使用的教学组织形式和教学策略之一,它能充分体现教师的主导地位和学生的主体作用。合作学习指学生为了完成共同的任务,有明确的责任分工的互助性学习。合作学习鼓励学生为集体的利益和个人的利益而一起工作,在完成共同任务的过程中实现自己的理想。
在实现合作学习的教学目标中,重点强调了以下几点:
(1)异质分组,即将具有不同优势能力的学生分配到不同的小组。
(2)分工合作,即在实践中我们从学习目标、奖励方式、角色互换等几个不同角度训练和鼓励学生培养积极的相互依赖。
(3)考核体系。具体在考核中,个人成绩和小组总体排名成绩相结合,可以促进学生合作积极性。
(4)在合作方式组织的实践环节中,学生真正体验到一种有序的、可控的、协作的软件开发过程,在分析问题、解决问题、协调冲突、消除矛盾的过程中享受软件开发成功的最终结果。