赵 芸,徐 兴
(浙江科技学院 a.信息与电子工程学院;b.机械与能源工程学院,杭州 310023)
算法与数据结构是电子信息工程、计算机科学与技术及相关专业的专业基础课,是培养算法与编程能力的重要课程。随着国家对重点学科、“双一流”学科建设的加强,各级院校对课程改革的力度也逐渐加大,这些改革的迫切需求尤其体现在工科类学校和工科类专业建设中。教育部及各类院校纷纷提出改革教学模式的新思路,其中翻转课堂和基于成果的教学(outcome based education,OBE)模式尤其受到各类高校的重视。将翻转课堂和OBE模式引入传统的算法与数据结构课程教学,重新设计课程内容和教学方式,加强学生对课程大纲要求的知识点的理解,能真正提升学生的编程能力和问题解决能力。因此,本文针对电子信息工程专业开设的算法与数据结构课程进行讨论。
针对电子信息工程专业的算法与数据结构课程是培养学生程序设计能力的核心课程。电子信息工程专业大多数课程面向硬件开发能力的培养,因此对程序设计能力培养的课程数量明显少于计算机科学与技术专业,这使得算法与数据结构课程承担了算法与程序设计能力的培养任务。课程的目的是介绍各种常用数据结构的逻辑结构和物理结构,探讨其在计算机中的主要存储表示及算法实现,并对算法的效率进行分析,以全面提升学生的分析和解决实际问题的能力。该课程的主要培养指标点体现在:掌握从事电子信息工程所需的电工电子、计算机类专业基础知识,能解决电子信息领域的建模、推理和计算;能运用算法与数据结构的基本原理对复杂电子信息工程问题进行提炼、定义、建模、分析和评价,学会分析数据结构的特性,选用合适的数据结构存储电子信息工程实践中遇到的各类数据,并选择合适的运算方法;具有系统需求分析能力及程序设计与实现能力,能够综合运用自然科学和工程科学的基本原理和技术手段来完成电子信息系统的规划与设计;具有时间观念和效率意识,能够针对学习任务自觉开展预习、复习和总结。
传统的算法与数据结构课程内容主要包括:熟练掌握典型数据结构类型,如线性表、栈、队列、数组、广义表、树、图等;熟练掌握迭代、递归等算法;熟练掌握算法的设计和分析方法。算法与数据结构的课程设置体现出较强的理论性,为了应对课程的评价指标,学生将较多精力用于对相关概念和原理的记忆与理解。这样做可以使学生在考试中取得较高的分数,却导致学生的动手能力得不到足够的锻炼,尤其是对编程能力训练相对薄弱的电子信息工程专业学生。存在的问题大致归纳如下:1)先修课基础欠扎实,本课程实践环节又对学生的程序设计能力有较高的要求。电子信息工程专业学生除了学习程序设计类课程外,还需学习电工类、电子类等硬件类课程。学习面广、精力分散使得他们在学习算法与数据结构课程之前,往往很难形成扎实的程序设计类课程基础,致使他们的代码编写质量普遍不理想[1]。2)课程知识面广,有较强的抽象性和理论性,易造成学生一知半解。算法与数据结构课程提及大约251个名词概念、138个算法与函数[2]。除去可以降低标准不作要求的内容,仍有大部分的概念和算法需要学生熟记并能灵活应用。因此,学生需要花费大量的时间记忆和反复练习才能达到课程大纲设定的要求。3)对专业理解有误使得部分学生以为只有硬件类课程才是本专业的主导课程,从而削弱对软件类课程的重视程度。事实上,算法与数据结构课程是一门公认的难教难学的课程,加之学生对专业认识的误区使得他们潜意识里减少对该课程投入的精力和时间,使得课程的学习难上加难。
翻转课堂首先改变了传统课堂模式中教与学的次序,充分调动学生自主学习的积极性,形成以学生提问为导入模式的教学方法;其次改变了传统课堂模式中教师与学生的定位,教师从一味传授知识转为指导和促进学生学习,学生则由被动的知识接收者变成了自主调节节奏的主动学习者。在翻转课堂模式中,允许学生自主选择学习时间、地点,自主控制学习量和学习内容,使学习变得更主动[3-5]。
OBE由Spady等人提出,并对OBE做出如下解释:“对教育系统中的每个环节进行清晰的聚焦和组织,确定一个学习的目标,围绕这一目标使学生在完成学习过程之后能够达到预期的结果。”[6-7]OBE已成为美国、英国和加拿大等国家教育改革的主流理念[8]。
针对算法与数据结构课程,结合OBE和翻转课堂理论,在整个专业教学体系中,以学生学习效果为导向,充分体现学生自主学习与教师讲授相结合、学生为主教师为辅的教育理念,这不仅能提高学生学习的积极性,也能将抽象理论通过运用到实际生活,使学生更易理解[9-11]。将OBE和翻转课堂理论运用于算法与数据结构课程,首先应该严格确定合适的先修课程,以及能充分体现知识延续性的后继课程。尤其对于电子信息工程专业学生,如何在软件及硬件两类课程中都充分运用算法与数据结构课程的知识点以提高学习效率是该专业教师及学生最关心的问题。从整体上对算法与数据结构课程进行基于OBE和翻转课堂理论的教学改革是一件工作量大且牵涉面广的工作,在设计和实行的过程中可以参考海外高层次院校的课程设置。
在OBE教学模式中,常用的教学手段包括自主学习、学生知识讲授、小组讨论、指导建模等,用以实现教学合理有序、逐层递进的OBE结果。而以翻转课堂理论为基础的教学改革案例中,课前自学视频、针对性练习,课中少量快速测评、解决问题、促进知识内化、总结反馈是常用的教学手段。针对算法与数据结构课程的特点和电子信息工程专业的特点,笔者设计了基于翻转课堂和OBE模式的新的教学模式,如图1所示。
图1 基于翻转课堂和OBE模式的算法与数据结构课程教学模型
具体实施过程如下:
1)将每节课分为课前、课中、课后3个阶段。课前,结合课前讲义完成课前练习,掌握知识点的由来及历史发展概况;课中,学生简单讲解对知识点的理解并提出问题,教师对学生进行简单测评,并将知识点应用于身边的例子,完成知识点从抽象(概念)到通俗(生活实例)再到抽象(程序语言描述)的转化,帮助学生实现知识的内化;课后,学生自主学习,对尚未理解的问题先进行小组讨论,然后由教师给出正确的解释。
以折半查找为例,在学生初步掌握折半查找特点后,选择10名学生以学号为升序站成一队,学号作为每个学生的关键字,教师随机指定一个目标关键字,最终目标是通过折半查找定位拥有目标关键字的学生。另请3名学生作为低(low)、高(high)和中(middle)标志位,在10名学生中进行折半查找。通过这样的方式让学生亲身体验折半查找的过程,从而对算法有直观的认识。笔者在课堂中尝试了该方法,参与演示的10名学生均认为对该算法有了比较深入的了解,在其余观看的学生中,有80%的学生认为进行演示后对该算法有了更深入的了解。
图2 折半查找算法的程序框架
对程序的理解过程是对事物的通俗规律抽象总结的过程,往往使学生感到最为困惑。教师可以采取框架式程序导入的方法,将程序按功能划块,以降低理解的难度。仍以折半查找为例,可将函数头和结构体完整地写出,并配以注释,让学生以填空式写出折半查找的函数体和主函数中的调用语句,如图2中的第9行部分及第12行部分为程序空缺,待学生编程填空。
2)将课程内容与实际应用相结合,使学生能深切感受到这门课与实际生活乃至未来职业生涯可能产生的密切关系,激发学生的学习兴趣,因此以一个实际的系统案例导入是较好的方式。以普里姆算法为例,可以让学生模拟校园导游系统为来访客人提供最短路径查询服务,如图3所示。这是一个与校园生活紧密相关的典型案例。学生通过分析,学会如何抽象出问题的本质与核心,建立解决问题的思路。类似地,让学生理解生活中的案例均可以用程序思维和方法来描述和解决。假设图3中的每个顶点表示校园内的一幢教学楼,每条边表示步行到达所需的时间(即交通代价),试规划一条能够通过每幢楼的最佳路径。此类案例可以较好地完成从抽象到通俗再到抽象的演化,大大提高了学生学习的兴趣和动力。
图3 普里姆算法的校园路径优化案例
3)以中国计算机学会计算机软件能力认证(China Computer Federation Certified Software Professional,CCFCSP)作为评测标准,展开成果驱动的算法与数据结构课程教学实践。在讲解每一章节之前,先选取章节对应的CCFCSP认证考题,使学生通过读题了解相关章节知识点可以解决怎样的问题,并尝试提出解决问题的方法。在此过程中教师可以采取“头脑风暴”的方式让学生提出解决方案,并总结其中基于现有知识无法解决的环节。在讲解完该章节知识后,让学生再去思考前面提出的CCFCSP认证考题,自我测试本章节知识的掌握程度。在知识点讲解完成后可以再进行一次“头脑风暴”,选择有多种实现方案的CCFCSP认证考题,让学生根据本章内容迅速分析该题所涉及的知识点,提出不同的解题方案,并进一步分析算法的效率,对算法提出改进。该OBE教学模式可以让学生看见阶段性学习成果,提高学生对相关知识点的反应速度,有效调动学生学习的积极性。
本文提出了一种基于翻转课堂和OBE教学模式的算法与数据结构教学模型,该模型可以针对电子信息工程专业的本科生,弥补其基础不够扎实、积极性不足的情况。在对同年级同专业的两批学生分别采用传统教学方法与教学改革方法后,发现采用教学改革方法的学生考试平均分提高了3.3分,上机实践完成率提高了10%。该教学模型虽然需要教师和学生投入更多的时间和精力,但学生的学习积极性得到了充分的调动,教学效果显著。在将来进一步的教学改革工作中,可以将重点放在电子信息工程专业软件类课程整体的翻转课堂和OBE模式的引入,以取得更好的教学效果。