1. 引言
算法设计与分析是计算机、大数据、人工智能等专业研究生的专业基础课,课程通过系统讲解各种常用算法的基本原理、实现方法和性能分析,培养学生算法设计和分析能力,为后续专业课的学习、科研和工作打下基础。
传统课程教学仅涵盖算法的数学基础和分治、贪心、动态规划、回溯、分支限界等经典算法的设计和分析,在介绍这些算法策略时,引用的也大都是传统问题。近年来,大数据、云计算、人工智能、“互联网+”等新领域、新问题、新的应用层出不穷,许多问题求解都离不开问题的建模和算法的设计与分析,课程对于这些新问题的算法设计与分析很少涉及,无法紧密对接,导致学生不能理解课程存在的必要性,学习兴趣不高,影响后续课程学习和开展科学研究。同时,学生的本科专业背景不同,基础不同,对于前序课程数据结构和编程语言的知识、技能掌握程度不同,有些学生有缺漏,另一些学生在本科阶段学习过该门课程。因此,课程教学亟需与时俱进和因材施教。
此外,新工科背景和立德树人的人才培养需求下,需要培养学生除了知识、技能之外的各种综合能力和素质,包括提出问题、分析问题及解决问题的能力,创新求真精神,团队合作、终身学习意识和能力等。这就需要改变传统的以教师为主体、教师讲授为主的教学模式,近年来新的教学理念和教学模式逐步融入到算法设计与分析的教学改革中,主要有对分课堂 [1]、线上线下混合 [2]、学生表达时间(Student Talk Time, STT)教学模式 [3]、以赛励教 [4] 等,这些教学改革方法都是从课程教学的某个方面实施改革,取得了一定的成效,但是不够全面。
本文利用创新理论和方法TRIZ中的九屏幕法,对算法设计与分析的教学内容、教学模式、教学方法、教学资源等各个方面进行分析和设计,以提升学习的效果,并为学生开展课题研究做好准备,以满足计算机快速发展的新形势下计算机类专业硕士研究生的培养需要。
2. 创新理论和方法TRIZ简介
TRIZ (The Theory of Inventive Problem Solving),研究人类进行发明创造、解决技术难题过程中遵循的科学原理和法则,是1946年由苏联发明家根里奇·阿奇舒勒通过对大量的高水平发明专利进行分析和提炼后形成的关于如何发明创造的方法论。TRIZ被认为是最全面、系统地论述发明和实现技术创新的新理论,被欧美等国的专家认为是“超级发明术” [5]。
TRIZ理论体系包含技术系统进化法则、创新思维方法(最终理想解、九屏幕法、小人法、金鱼法、STC算子)、资源分析法、因果分析法、技术矛盾与发明原理、物理矛盾与分离原理、物场分析与标准解等 [6]。九屏幕法是TRIZ提供的一种系统思维工具,按照时间和系统层次两个维度对问题情境进行系统地思考,强调系统地、动态地、联系地看待事物。
3. 教学设计和实施
把算法设计与分析课程教学当作一个技术系统,按照TRIZ九屏幕法,对课程进行分析,如图1所示。在系统维度上,算法设计与分析的子系统是各种算法、实例、教师和学生等,超系统是课程教学所处的环境,如计算机领域、专业教育、实验平台、网络等等。再加上时间维度,可以把课程教学的从原来的一个维度拓展到系统的过去未来、子系统的过去未来和超系统的过去未来九个维度。以下在教学内容、教学模式和方法、教学资源三个方面,在九屏幕法所拓展到的九个维度上进行分析,提出创新设计。

Figure 1. Analyzing the course using the nine screen method
图1. 利用九屏幕法分析课程
3.1. 教学内容
针对教学内容陈旧与新技术较难对接的问题,对课程的教学内容进行拓展。这部分主要涉及到课程的子系统算法和实例,算法的过去即经典算法和实例,以及超系统计算机领域的部分实例例如排序问题等,已经包含在传统教学中了,需要拓展和补充的是经典算法的新实例和新算法,以及计算机领域的新问题、新算法和实例。此外,专业教育也是课程的超系统,对于专业人才培养的能力培养、综合素养培养,也要纳入到教学内容中,因此在教学内容中也要融入能力培养和课程思政等内容。
3.2. 教学模式和教学环节
如图2所示,教师和学生是课程教学的子系统,传统的以教师讲授为主的教学模式,只发挥了教师的作用,弱化了学生在教学中的作用,因此学习效果并不好。把该教学模式进行创新式改革的方法就是充分发挥学生的作用,同时为了提高学生提出问题、分析问题和解决问题的能力,把学生转化为教学活动的主体,把传统的以教师讲授为主的教学模式转变为更适合研究生的以学生主体教师主导的教学模式。

Figure 2. Student centered and teacher led group teaching mode
图2. 学生主体教师主导的分组教学模式
在新的教学模式中,教学过程包括教师讲授、课堂分组讨论、课外分组学习讨论、学生课堂讲授、学生课外拓展五个环节。
1) 教师讲授。教师讲授算法涉及基本的概念和原理,并讲授一个实例,和提出问题。
2) 课堂分组讨论。学生以小组为单位对算法进行练习,并讨论如何解决教师提出的问题。
3) 课外分组学习讨论。在教师讲授了算法和一个实例的基础上,学习相关的其他实例。
4) 学生课堂讲授。学生以小组为单位分享课后讨论的算法实例。
5) 学生课外拓展。学生在一个学期的时间内,在课堂学习的基础上,针对自己的科研方向和兴趣进行课外拓展,学期末在课堂上进行分享。
该模式比传统的教师讲授为主、或单纯学生报告的教学模式更适合课程的特点和研究生培养的特点。这种教学模式对于培养学生提出问题、分析问题和解决问题的能力有重要的作用,其中分组学习的形式可以培养学生的团队合作意识和能力;学生课堂讲授可以锻炼学生的表达能力;课外拓展是在课外由学生自行提出课题、自行研究然后再课堂汇报的形式,可以锻炼学生的时间管理能力、自学能力等。
3.3. 教学资源库
对教学内容的拓展和学生主体的教学模式,都需要有丰富的教学资源来支撑,按照九屏幕法分析的结果,在九个维度中挖掘教学资源,构建教学资源库,以最小代价获得理想解。
1) 在算法设计与分析的超系统计算机领域的过去中挖掘资源,收集与算法相关的图灵奖获得者及涉及的算法;
2) 在课程教学的子系统学生方面挖掘资源,收集学生课堂讨论及课外拓展中的算法及应用实例;
3) 在课程教学的子系统教师方面挖掘资源,收集教师科研中涉及的算法;
4) 在课程教学的超系统学院建设的教学实训平台中挖掘资源,收集算法和综合应用实例;
5) 在算法设计与分析的超系统网络中挖掘资源,收集刷题网站https://leetcode-cn.com/中的算法;
6) 在算法设计与分析的超系统学科竞赛中挖掘资源,收集学科竞赛中的算法;
7) 在算法设计与分析的超系统全国课程教学中挖掘资源,收集其他高校教师及教材中使用的算法及应用实例。
按照上述方法收集到了的算法及实例包括经典算法实例45个,经典算法编程题450个;新算法实例10个;数据挖掘和机器学习算法,用python实现的11个算法实验,R语言等实现的21个算法实验,JAVA实现的18个实例;大数据综合分析实例4个;计算机相关领域应用实例4个;科研算法3个,详见表1。
把算法库作为课程资源,有机融合到课程教学的各个环节,如表2所示。这样,每个教学环节都有至少两种以上的算法库和实例,可以丰富学生对算法应用的认知、提升学生的学习兴趣,有助于提升学生的算法设计能力和算法应用能力,同时缩小传统算法课和实际科研中算法研究和应用的差距。

Table 2. Application of algorithm library in teaching
表2. 算法库在教学环节中的使用
4. 教学应用
该教改项目的成果在2020年至2021年第二学期的计算机学院研究生的专业基础课“算法设计与分析”中使用。讲授的班级学生是非全日制学生,这些学生的本科专业都不是计算机专业,而目前从事的工作都在计算机行业,这就造成了学生具有几个特点:
1) 计算机基础较弱,对于这门课程的基础科“数据结构”掌握得并不好,编程有一定的经验,但是算法能力较弱;
2) 学生从事的都是计算机行业当前发展最有前景的应用领域,例如:智慧港口、智慧水务、无人驾驶、智慧医疗等,有算法应用场景;
3) 学生较全日制学生来说比较愿意表达,愿意和教师以及同学进行互动,学生的学习愿望较强。
针对学生的这些特点,我们把算法库中的算法和实例融入到教学中,取得了较好的教学效果:
1) 通过算法库中的刷题网站的编程题目,提升学生对于“数据结构”等基础课程知识的掌握,对于经典算法及实例的掌握,增强学生的编程能力和算法基础能力。
2) 使用教师科研中的算法实例和分析,讲授算法分析方法,使学生明白了所学课程和将来他们的科研的关系。
3) 组织学生结合他们的工作和将来的研究方向做课外拓展,并在课上分享,效果非常好,学生们在课上就互相讨论起来,有很好的生生互动。
5. 结论
利用创新理论和方法TRIZ提出的算法设计与分析课程的创新教学设计,从教学内容、教学模式、教学资源算法库等几个方面进行了拓展和改革,使得算法设计与分析的课程教学与时俱进、因材施教,激发了学生的学习兴趣和热情,同时把课程的学习和将来的课题研究做了及时的对接。学生主体教师主导的分组教学模式显著提升了学生的提出问题、分析问题和解决问题的能力,团队合作、终身学习意识和能力,科学求真的素养,符合计算机技术快速发展的新形势下对计算机类研究生人才培养的需要。利用TRIZ九屏幕法进行课程教学改革的思路和框架也可以应用于其他课程的创新设计。