APP下载

面向算法设计与分析课程的翻转课堂教学模式研究

2016-12-24陈翔

计算机教育 2016年8期
关键词:翻转课堂教学模式

陈翔

摘要:以算法设计与分析课程为例,结合翻转课堂的教学理念,提出一种翻转课堂教学模式框架。说明具体的教学内容安排,并总结教学改革中的经验。

关键词:算法设计与分析;翻转课堂;教学模式

1 背景

算法设计与分析课程是计算机专业的核心必修课程。当前无论是计算科学还是在计算实践,算法都在其中扮演着重要角色。本课程在教学过程中重点讲授计算机应用中经常遇到的实际问题的解法,讲授设计和分析各种算法的基本原理、方法和技术,培养学生对算法时间和空间复杂度进行正确分析的能力。学好算法设计与分析这门课程,一方面有助于学生进一步巩固已经学习过的知识,例如高级程序设计语言和数据结构;另一方面也有助于学生学好一些后续专业课程,例如软件测试技术、编译原理、数据库原理及应用等,因为这些课程中的一些较难知识点均与算法密切相关。

但在实际的教学过程中,笔者发现学生在学习该门课程的时候面临很多的问题:①课程教学内容的难度较高,很多知识点的抽象层次高,需要学生具备一定的数学分析能力。在算法的实现过程中,学生编程经验较为匮乏,很多时候难以将伪代码转化为实际可运行的代码;②学生知识应用能力较弱,虽然能够理解课堂上讲授的知识,但面对新的问题时,难以将学到的知识进行灵活应用;③学生普遍存在课前不预习、课后不复习的问题,自学意识淡薄。

麦可思公司曾对2013届本科毕业生就“你认为母校的教学需要改进的地方”这一问题进行了调研,调研的最终汇总结果如图1所示。数据表明有49%的学生认为已有的教学“无法调动学生学习兴趣”,31%的学生认为“课堂让学生参与不够”。

笔者尝试将翻转课堂教学模式引入到算法设计与分析课程的教学中。翻转课堂相对于传统教学具有如下优点:①在传统教学中,教师主要是课堂的主导者和知识的传授者,而基于翻转课堂教学模式后,教师更多成为学生学习的引导者和协助者。由于引入了授课视频,教师节省了重复知识传授的时间,可以将更多的时间投入到学生作业的讲解、教学案例的设计等环节;②学生成为教学过程中的主动参与者。学生在课前阶段通过观看视频,构建了相关专业知识的基础,随后在课中阶段和课后阶段可以积极思考和讨论相关知识点的应用,这使得学习效果得到了大幅度的提升。因此翻转课堂的引入能够在一定程度上缓解传统教学中难以解决的一些问题。

2 翻转课堂教学模式在算法课程中的应用

以高等院校计算机专业权威教改期刊《计算机教育》为例,将翻转课堂、翻转教学或反转课堂设置为关键词,并在CNKI数据库搜索后,得到了相关文献数量统计结果:近3年国内教师对翻转课堂这一教学模式愈加关注,在2013年仅有2篇文献,而到2015年相关文献已经大幅度增长到35篇。

通过分析已有文献,不难看出,翻转课堂模式能够成功执行需要具备2个因素:①小班授课;②高质量的教学资源。

翻转课堂需要教师与学生之间积极互动,若学生数量太多,其互动效果很难保证,因此小班授课是成功实施翻转课堂教学的前提。目前南通大学计算机科学与技术学院专业硕士每年的招生规模为15人左右,而算法设计与分析课程又是研究生课程体系中的必修专业课程,这为笔者的教学改革实践提供了实验对象。

高质量的教学资源是成功实施翻转课堂的关键。随着慕课(MOOC)的蓬勃发展,很多优质教学资源实现了共享。在教学改革实践中,笔者充分利用了北京大学屈婉玲教授在Coursera上开设的慕课“算法设计与分析”,并以屈婉玲教授编写的教材《算法设计与分析》作为上课的指定教材。除此之外,笔者在教学过程中,如果发现有更易于学生接受的讲解方式,也会额外录制一些教学视频并用于下一轮的教学中。

在教学改革过程中,笔者总结了图2所示的基于算法课程的翻转课堂教学模式框架图。

为更好地支持翻转课堂教学,在授课开始的时候,笔者会在QQ上搭建一个课程讨论群,用以加强教师与学生之间以及学生与学生之间的交流与协作。通过讨论群,可以对学生的学习状态、答疑解惑、作业提交、师生互动等情况进行跟踪并提供辅助。

目前南通大学针对这门课程的教学安排是13周,每周安排3个课时。笔者基于翻转课堂教学模式对这门课程的具体教学内容进行了重新安排,最终如表1所示。由于课时比较少,因此在算法的基本概念介绍和递推方程的求解中并不安排翻转课堂。其中在算法的基本概念中,重点介绍计算复杂性、时间复杂度、常用函数(对数函数、指数函数、阶乘函数、取整函数等)的阶及其性质。在递推方程的求解方法中,重点讲解差消法、递归树法、迭代法以及主定理等。

在随后的分治法、动态规划法、贪心法和回溯法这4个单元中,则安排翻转课堂,具体来说:

1)分治法单元。

该单元介绍分治法的设计与分析,一般来说该策略首先将原始问题划分为规模更小的子问题,随后递归或迭代求解每个子问题,最后将子问题的解综合得到原问题的解。

在课前阶段,让学生借助2个经典问题(二分搜索和归并排序)来掌握分治法的设计与分析过程。

在课中阶段,通过依次分析芯片测试、快速排序、选第k小元素等问题来加强学生对知识点的理解和应用。

在分治法单元的最后一周,安排一次团队答辩。安排2个团队分别对提高分治法效率的2种途径(即减少子问题的数量和在分治法执行之前进行必要的预处理操作),结合具体问题进行讲解。

2)动态规划法单元。

该单元介绍动态规划法的设计与分析。动态规划法的求解过程是一个多阶段决策过程,每一步处理一个子问题,可用于求解组合优化问题。

在课前阶段,让学生借助矩阵链相乘问题来掌握其中的目标函数设置、子问题边界的确定、递推方程的设定和最优子结构性质的证明等。

在课中阶段,进一步通过最长公共子序列问题、投资问题、最大子段和等问题来加强学生对知识点的理解和应用。

在动态规划法单元的最后一周,安排一次团队答辩。针对2个具体问题,对基于动态规划法的求解方案进行讲解。

3)贪心法单元。

该单元介绍贪心法的设计与分析。贪心法在对问题求解时,总是做出在当前看来是最好的选择。

在课前阶段,首先借助活动选择问题,让学生了解贪心算法的设计过程。随后借助该问题,进一步让学生掌握按步骤归纳的证明技巧。最后借助另一个经典问题(装载问题),让学生掌握按规模归纳的证明技巧。

在课中阶段,进一步通过最小生成树的Prime算法和哈夫曼算法来加强学生对知识点的理解和应用。

在贪心法单元的最后一周,安排一次团队答辩。要求2个团队分别讲解最小生成树的另一个经典算法Kruskal算法以及单源最短路径Dijkstra算法等。

4)回溯法单元。

该单元首先介绍回溯法的设计与分析。回溯法是在搜索尝试过程中寻找问题的解,当发现已不满足求解约束条件时,就回溯返回,尝试别的路径。随后介绍分支限界法,该方法通过引入代价函数,对传统的回溯法进行了改进。

针对回溯法,在课前阶段,通过3个经典的问题(n皇后问题、0-1背包问题和旅行商问题),让学生掌握搜索空间的3种表示(n叉树、子集树和排列树),并掌握常见的搜索策略(例如深度优先、广度优先等)。随后在课中阶段,通过图的着色等问题来加深学生对知识点的理解和应用。

针对分支限界法,在课前阶段,通过背包问题让学生了解分支限界法,掌握代价函数和界的概念、设定方法和搜索策略。随后在课中阶段:通过最大团问题、旅行商问题、园排列问题等来加深学生对知识点的理解和应用。

由于教学时间的限制,在该单元的实际教学过程中,并未安排团队答辩环节。

在实施上述翻转课堂教学模式的过程中,总结了如下经验:

(1)课前阶段的主要目的是让学生完成知识的初步学习。教师需要针对本周的教学知识点指定学生需要预先学习的教材章节、教学课件和教学视频,同时为一些学有余力的学生指定扩展阅读资料。对于发布的教学视频来说,要求每一段视频的时间要控制在10~20分钟,并且仅仅是围绕一个知识点或者一个具体问题来进行讲解。

(2)课前阶段要求学生借助自己熟悉的高级编程语言(C++、Java或者C≠≠),对视频中重点分析的1-2个经典问题进行编程实现,并提交实验报告。要求学生在实验报告中记录下自己在学习过程和编码过程中遇到的问题和解决方法。

(3)课中阶段的主要目的是让学生完成知识的深化和内化。教师首先会针对课前阶段布置的预先学习内容进行串讲,重点分析这些算法设计与分析背后的核心思想。随后对学生提出的疑问进行现场解答。最后通过引人新的问题,借助课堂讨论方式,来提高学生对课前阶段所学知识的理解和应用。

(4)课后阶段则为每一个单元设计一些课程实践项目,让学生以团队(每个团队的成员限定为2-3人)的方式进行完成。笔者在上课刚开始的时候会要求学生在2周内完成团队的组建,并预先选好自己需要完成的实践项目。在完成实践项目后,需要提交实践报告,内容包括问题分析、解决方案的细节和性能分析等,并要求编码实现,并对其中的核心代码进行说明。除此之外,在每个单元的最后团队答辩阶段,需要完成现场答辩。在答辩过程中,教师应充分发挥引导者和组织者的作用,避免学生在学习交流过程中出现冲突和讨论方向产生偏差;同时答辩团队需要在答辩前一天将答辩幻灯片发送到教师邮箱,让老师能够对答辩内容预先有一个大致的了解。最后对团队答辩时间和讨论时间进行限制,对一些性质的证明建议答辩时借助板书方式进行现场证明,要求每个团队必须至少问一个问题。

(5)对于教师来讲,在每一单元完成后,都需要及时进行教学总结、优化教学方案和优化教学资源等。例如:基于团队的答辩表现,将一些特别难或者特别容易的课程实践项目从教学资源库中移除掉,同时注重从程序竞赛、教材和科研中搜集优秀的课程实践项目并补充到教学资源库中。

(6)翻转课堂可以将考核过程更多贯穿于整个学习阶段。其特色是增加了平时的考核次数,让学生在平时也能感受到学习的压力,以此提高学生的学习主动性,确保翻转课堂能够取得良好的教学效果。在该模式中,日常考核的内容包括课前阶段的实验报告、课中阶段学生的课堂表现,以及团队答辩阶段的实践报告和现场答辩表现等。

3 翻转课堂教学模式实施效果

为了充分了解上述翻转课堂教学的实施效果,笔者在教学完成后,对2015级专硕的14名学生进行了调查,结果表明:

(1)翻转课堂需要学生投入更多的时间。为了完成课前阶段的算法实现和团队答辩阶段的实践项目,需要学生查阅大量的资料和花费大量的时间来完成代码的编写和调试。

(2)翻转课堂能够激发学生的学习激情。以讨论为主的教学方式,以及新颖有趣的课程实践项目,可以极大地激发学生的学习兴趣和热情。

(3)翻转课堂能够培养学生的研究和创新能力。在传统的填鸭式教学方式中,学生仅通过阅读教材,很难在学习的过程中发现问题,而在翻转课堂教学中,学生为了完成课前阶段的算法实现和团队答辩阶段的实践项目,必须去上网查找资料,和同学进行讨论,这样就逐渐培养了学生的研究和创新能力。

(4)翻转课堂可以培养学生的交流、合作和表达能力。团队答辩阶段中,为了完成实践项目,需要学生组建团队、分配职能、协作完成、提交项目实践报告和答辩幻灯片,并最终完成现场答辩。该阶段为学生提供了一个很好的机会和途径,强化了学生的参与意识,对于培养学生的交流、合作和表达能力起到了积极的作用。

4 结语

算法设计与分析课程是计算机专业体系中的一门重要课程。笔者在之前的教学改革中,发现学生之间水平参差不齐是教学过程中面临的最大问题,即学生之间在基础知识、智力水平、兴趣爱好、学习动机和学习方法上存在较大的差异,因此提出了一系列教学改革措施来缓解上述问题,主要包括突出学习重要性、优化教学内容、引导学生自主学习、建设算法题库、成立程序竞赛协会、组织习题研讨课和采用板书为主的教学手段等。在这次教学改革中,进一步引入翻转课堂教学模式,可以认为是对之前教学改革的一种纵向拓展,实践结果也证实了这种新颖的教学模式可以有效提高学生的学习主动性和学习兴趣。

为进一步提高翻转课堂的教学效果,今后可以从以下几个角度去尝试:①在翻转课堂的实践过程中,还可以结合地方院校学生的特点,注重自身教学资源(包括教学视频、教学课件、课程实践项目等)的积累和建设;②可以考虑加强自身网络教学平台的建设。虽然存在一些比较成熟的慕课平台(例如Coursera、学堂在线、爱课程等),但通过自身网络教学平台的建设,可以更加灵活地搜集学生的学习行为数据,不仅可以支持翻转课堂教学模式,还可以为随后的SPOC(small private online course)模式提供支持。该模式可以根据学生入学基础的差异以及学生专业的差异,对教学过程进行差异化。除此之外,自身网络教学平台的运行也可以为今后的教育大数据挖掘研究提供原始的数据积累。

(见习编辑:张勋)

猜你喜欢

翻转课堂教学模式
群文阅读教学模式探讨
“思”以贯之“学、练、赛、评”教学模式的实践探索
创新线上英语教学模式的思考
高中英语“读写学思”教学模式探索与实践
“认知-迁移”教学模式在高年级阅读教学中的应用
基于翻转课堂的高职英语口语教学研究
翻转课堂在高职公共英语教学中的应用现状分析及改善建议
翻转课堂在小学数学教学中的应用
翻转模式在“液压与气动”教学中的应用研究
翻转课堂在英语语法教学中的运用研究