软件文化课程教学法研究与实践

摘 要:本文结合清华大学多年来在软件工程、计算机科学与技术、电子商务和工程文化领域的科研和教学探索,探讨了软件文化教学方法和教学内容的建设。在课堂教学中引入项目导向式教学法,创新性地结合问题研究式教学法和主题式教学法创立了“融合式”教学法。

关键词:软件文化;项目导向式;“融合式”;软件工程;电子商务;教学内容建设

软件文化课程是软件工程学科在发展演进过程中的重要拓展,是信息科学、软件科学及相关领域学科中培养学生文化素质的课程,从知识单元逐步过渡到知识体系,建成以人类计算方法为基础、以软件分类为导向、以创新案例为特征、以软件创新为目标、以软件文化为传承的软件文化课程体系。

清华大学率先在国内开设“软件文化概论”课程,该课程主要讲述软件文化的基本概念, 软件系统的基本构成,软件的划分标准、设计原则及应用领域。课程注重培养学生掌握软件 文化研究的科学方法,对案例的分析理解能力,使学生明确最新学科、交叉学科在软件文化创新与发展过程中所起到的引领作用。软件文化堪称是软件工程领域基础教学的“灵魂”和“基石”,本课程自2013年在国内首次开设以来,时刻关注国内外计算机大类文化素质课程的建设情况,结合交叉学科的国际发展前沿,在建设课程体系的基础上不断完善教学方 法,变“输入式”为“融合式”,综合运用多种教学手段,形成了“软件文化概论”课程教学方法。该课程在 2016 年得到“清华大学本科生教育教学改革项目”的支持,2017年被选入清华大学“新生研讨课”,在国内高校起到了示范引领作用。

一、国内外计算机大类文化素质课程调研

在课程建设初期,国内软件文化课程建设尚处空白,课程组对国内外计算机大类文化素 质课程进行调研。部分欧美高等学校开设了计算机相关文化课程。例如,加利福尼亚大学伯克利分校从2015年秋季起每学期开设“The Beauty and Joy of Computing”课程,该课程主题为计算之美,主要内容包括计算历史、社会意义、重要理论和未来发展,以此展示计算应用如何改变世界以及计算如何推进其他领域的发现和进步;剑桥大学开设Foundations of Computer Science,旨在使学生能够理解基本的编程规则,理解基本的数据结構和算法设计。亚洲的高校有很多课程涉及软件和计算机的发展历程,以及培养软件从业人员除了程序开发以外应具备的其他能力。以韩国首尔大学为例,在软件工程课程之外,开设了软件应用课程、IT 创业课程、IT 领导力研讨、计算机主题研究课程。这些课程介绍了软件开发基础,在传统计算模式的基础上,集成了其他不同领域的知识,形成了新的模式,使学生掌握新计算模式下的软件设计思维,并形成新的设计文化。

国内部分高校已经开设了计算机文化基础课程。清华大学开设的计算机文化基础课程, 共计32学时,主要介绍计算机基本组成和工作原理、操作系统相关概念和基本方法、常用工 具软件、多媒体技术应用、网络应用基础、网页制作;北京航空航天大学、西安交通大学等兄弟高校也开设了计算机文化基础等相关课程。与此同时,在世界范围内,软件工程作为独立的学科,已产生广泛的影响力,关乎国民经济、社会变革、未来创新等诸多方面,已形成以软件应用为特征的新文化。但是在国内外,尚未有人进行软件文化的深入研究。

为此,清华大学立足软件发展,建设 “软件文化概论”课程,目的是推动软件科学技术的创新与发展。课程旨在使学生掌握软件文化的基本概念、通用软件系统的基本构成、世界软件分类标准和相关领域国内外信息化产业发展的经典案例和核心推动力;能够从软件文化的视角了解人类的计算历史、计算机的发展历程、信息学科的发展历程和软件创新创业发展的里程碑,软件在各领域中的应用和未来发展趋势;掌握全球软件的划分标准、设计原则及 应用领域。掌握软件文化研究的科学方法,培养对经典案例的探究分析能力,建立起软件科学的科学发展观。课程主要内容包括三部分:人类计算及计算机的历史、世界软件分类标准、信息产业与智能软件应用。课程的设置符合教育部推进“新工科”建设的需求,以软件文化为轴,将创新前沿与计算机、控制、数学、统计学、物理学、生物学、心理学等学科交叉融合。

二、结合问题研究式教学法与主题式教学法

“软件文化概论”课程,面向清华大学全校低年级本科生。由于学生对计算机的掌握程 度不同,即使在同年级软件工程专业本科生之间,不同人的学习兴趣和学习程度也有很大差异,因此尽快使学生摆脱中学时“灌输式”教学法,适应大学的教学节奏是课程能否取得实效的重要因素。

为了充分利用各种不同类型的数字资源,调动学生的积极性和主动性,课程组采用问题 研究式教学法和主题式教学法相结合的“融合式”教学法规划每节课的授课内容及教学形式。问题研究式教学法和主题式教学法在国内外著名大学已经得到了广泛应用,课程组以软件文化为纽带,将二者融合起来,形成了独特的教学方式。以问题引领教学,教师结合学科前沿提出问题,根据问题以主题报告的形式论述相关命题,同时以问题引领学习,学生通过研究教师提出的问题,抓住主题建立研究思路,对于课程的学习有更深刻的理解。

二者结合的过程中,问题的设计必须依托软件文化教学大纲,紧扣交叉学科前沿,让学 生有自己的思维空间,这样才能让学生有拓展自己思维的动力。同时,问题的深度和广度要 和课程主题的设计相匹配。主题报告的讲授需要对问题起到引领作用,让学生在听课的时候 产生共鸣,进一步激发学生的学习兴趣。

目前,课程组以软件形成和发展的过程为主线,将“软件文化概论”划分为人类计算发 展的历史、计算机发展的历程、软件发展的历程、软件分类、软件应用领域、软件未来发展趋势等主题展开论述。例如,在讲授人类计算的历史时,课程组从工业背景、学术背景、应用背景、经济环境等角度全面分析了早期计算工具发展的社会大环境。每一部分不是简单分析历史,而是通过梳理早期计算工具的演化历程,针对经典案例,采用历史对比的方法形成东西方文化差异性研究,拓宽本科生认识问题的能力。通过中美原子弹制作过程中使用的计算工具的差异,引出“计算机发展的历程和软件发展的历程”这一主题。在讲授计算机发展的历程和软件发展的历程时,课程组提出了“目前在计算机领域,是什么引领了这个时代,会给我们带来什么思考”这一问题。在主题报告中,利用视频、图片等形式,课程组通过对不同节点的梳理引导学生探究问题:(1)时间节点,代表这个时代的特征是如何推动技术发展的。(2)计算机体系结构节点,冯 · 诺依曼结构的形成和发展。(3)运算速度节点,从电子管计算机到超级计算机的运算速度几何速度增长。(4)应用领域节点,是由哪一领域推动,与其他领域怎么样相辅相成。在分析节点的过程中,既从事件的视角分析,又从人物的视角分析,引导学生学会在科研过程中建立自己的文化生态环境。

软件分类是软件文化的重要基础知识,是根据国内外众多分类标准而形成的硬性知识。 相比计算机和软件的发展历程、软件未来发展趋势等主题,看似枯燥,缺乏探究的空间,而 课程组在主题讲授过程中,扣住“横看成岭侧成峰”的探究问题,引导学生分别从计算机硬件、 操作系统、编程语言、编程工具、软件应用等五个视角进行比较。这样以比较的方式,让学生感受分类的过程,并在分类过程中不拘泥现有知识框架,通过分析论证的方式验证已有的分类标准。既对已经讲授过的计算机和软件发展的历程进行了回顾,又对即将讲授的软件应用领域进行了展望。通过这种教学方法成功地将这一段看似简单枯燥的内容变成承上启下的关键主题。

讲解软件应用领域和软件未来发展趋势时,通过大量案例分析的形式展示了软件发展对人们思维方式的影响(如自动化工具、系统分析工具、时间管理工具),软件发展对人们生活方式的影响(如共享单车、移动支付),软件发展对未来创新的引领(如航空航天、国防军事、智慧医疗、科学探索)。在主题设计过程中,把软件文化作为多学科联系的纽带,以“云计算、大数据、物联网、人工智能”等新技术前沿为基础,鼓励学生从信息科学、生命科学、人文科学多角度探究软件应用反映出来的开发者、用户群体的文化特征,使学生能够在此基础上理解时代的文化特征对社会变革的推动作用。

这种开创性的教学方式对教师的理论深度和广度有更高的要求,同时要求教师对科技前 沿发展有深刻的思考。没有深厚的理论功底和广阔的知识储备,在分析问题的时候就容易捉 襟见肘,陷入固化的思维模式,不仅难以和学生深入交流,更无法促进学生主观能动性的发 挥,调动学生思考的热情。近几年来,结合“软件文化概论”课程反馈,课程组先后编著了《软件文化基础》《Software Culture》等多部著作并在国内外著名出版社出版,为课程教学打下了扎实的理论基础。对前沿科技发展没有敏锐的嗅觉会使得课堂变成历史的回顾,不能够跟上软件发展的脚步,会造成学生实际接触的内容和课程内容脱节。当然,学生也无法再像以前一样,安于课本知识的学习,问题的导向使得他们必须升华课本知识,从主题报告中汲取营养,学会分析问题、解决问题,提升自己的研究能力。

三、采用项目导向式教学法

课本上的知识都是固定的,更新的速度很难跟上发展的速度。学生有能力自学课本知识, 但是如何把课本知识与工程实践相结合,才是关键所在。虽然“融合式”教学法已经可以让 学生学会解决问题,但是不把学习场景放到项目中就无法营造真实的科研氛围,也很难培养 学生在科研过程中的组织、交流和表现能力。作为软件工程领域基础课程,“软件文化概论” 课程更需要逐步培养学生的自主探索能力和科学研究能力。因此教师应将自己的研究成果和 工程项目融入教学环节,以研究课题与学生交流,使得课程高效运转。

课程组教师参与完成了多个国家“973”课题、“863”项目、国家自然科学基金项目、博士点基金项目。项目具有很强的理论性和专业性,对于学生在专业领域的学习具有前瞻性的 指导意义。但是复杂的工程项目会让学生望而却步,无从下手,甚至难以理解。这就要求教师具有丰富的工程经验和项目背景,可以将大型工程项目根据学生的基础和需求进行合理拆分。拆分后的项目“目标精细化,任务具体化,内容重点化”,可以和课堂教学中引入的问题相呼应。

同样因为授课群体层次差异大,拆分后的多个项目需形成难度梯度,适应不同层次水平 的学生选择。比如在软件应用领域的讲授时,课程组对自己研发的推荐系统平台进行了深入 分析,将平台拆分成了“数据分析子项目”“数据建模子项目”“推荐算法子项目”“金融分析子项目”“文化研究子项目”。其中,较为基础的“数据分析子项目”面向刚刚入门的计算机大类学生;“数据建模子项目”和“推荐算法子项目”面向学有余力、有一定计算机编程基础的计算机大类学生;“金融分析子项目”面向经济类和管理类的学生;“文化研究子项目”针对人文社科类学生设计。不同层次,不同背景的学生都能从应用的角度结合软件文化主题进行研究。不同小组之间不同学科的同学也可以通过交流碰撞出思维的火花,获得多样化能力的提升。

在软件未来发展趋势研究中,课程组分析了自己的预研项目“智能交通”的研究内容和 研究重点,引导学生采集分析交通数据。参与课程的同学实地到学校附近的交通路口采集车 流量数据,记录红绿灯时间,通过提前自学图论的知识,规划交通信号灯。

除此之外,对于学生根据个人兴趣选择的项目,教师和助教都会进行帮助和指导。部分 本科生选择通过自主研发一个游戏来体会软件文化的内涵,感受研发团队的文化对软件发展 带来的影响,以及对用户群体的影响。有的团队通过游戏開发实现了自己对于英雄的梦想以 及对爱情的思考;有的团队通过游戏开发对未来人工智能进行畅想并阐述了自己的价值观; 有的团队通过开发了第一人称射击游戏,实现了从游戏玩家到游戏开发者的转变。

四、未来展望

“软件文化概论”课程已经开设了6年,课题组尝试了从不同的视角阐述这门课的教学思路,取得了一些成绩,很多学生也通过这门课程的学习具备了科学研究能力。立足于国内的教学实践,课程组已建立了软件文化课程教学体系。依托该教学体系,课程组已将软件文化基础知识、发展历程、重要研究成果的里程碑融会贯通,以教材和著作形式先后由高等教育出版社出版《软件文化基础》;Springer出版社出版英文版Fundamentals of Software Culture,是国际上首部软件文化英文著作,全球发行,产生了广泛的影响。

目前,“软件文化概论”课程已经作为软件工程和计算机科学与技术学科的文化核心课程之一,同时也作为电子商务专业文化基础课程之一,在清华大学教学中使用并在全国高等院校中推广。该课程将在世界新兴起的“工程文化教育”领域和教育部建设的“金课”领域产生重要的影响,从未来发展上看,该门课程也具有现实意义和深远的历史意义。

[责任编辑:周 杨]

推荐访问:教学法 实践 课程 研究 文化