李金芝 谢江安 杨 倩 彭 娟
(1.重庆工程学院 重庆巴南 400056;2.重庆邮电大学 重庆南岸 400065)
数据结构与算法课程是计算机学科的一门核心基础课,不仅在整个课程体系中起到承上启下的作用,而且也是研究生入学考试、公司招聘笔试的常考科目。课程主要介绍如何合理地组织、存储和处理数据,以及如何正确地设计算法并对算法性能进行分析和评价。本课程相关理论知识仍然是诸多前沿研究领域的重要基础,同时,这些理论知识也面临着大数据时代提出的诸多新问题与新挑战[1]。为满足社会的用人需求,教师在教学工作中需要兼顾基础知识与学科前沿、理论与实践并重。从应用型本科高校的人才培养理念出发[2],结合我校的实际情况,本文开展“以学为中心”的数据结构与算法教学改革的探讨。
数据结构与算法课程中的算法多由C 语言来描述,而C 程序设计课程一般也作为本课程的先导课程开设。但学生刚刚开始接触程序设计语言,使用不够熟练。尤其是本课程中经常使用的多重循环、指针和结构体等知识更是C 语言的难点。先导课程学习不扎实,给本课程的教学埋下了隐患。
数据结构与算法是一门理论与实践并重的课程,要求学生要能够使用所学知识分析、解决问题。我校数据结构与算法课程共设64 课时,分为理论(48 课时)+实践(16 课时)。由于课上时间有限,部分实践任务需要学生课后完成。但是部分基础薄弱和自制力较差的同学很难自主完成,这就导致理论课中的算法变成“纸上谈兵”。学生无法做到知行合一,就会逐渐对课程失去兴趣。
以教为中心的授课方式,弱化了学生的主体地位[3],影响学生学习的主动性和积极性。在教法上,一般使用晦涩难懂的抽象数据类型讲解原理,学生难以理解,更无法与具体应用联系起来。在内容上,教材中基础数据结构和算法知识未与前沿技术相结合,所教知识与社会实际需求脱节。
“以学为中心”的教育理念最初由教育家JohnDewey 和JeanPiaget 等人提出,倡导学生是课堂的主体,教师是课堂的主导[4]。在课堂上,教师作为引导者,引导学生通过积极自主探索、小组协作等方式建立旧识与新知之间的联系,并应用新知解决问题、实现创新。
数据结构与算法课程的内容分为概论、结构、算法三大模块,细化为10 个子模块(概论、线性表、栈和队列、串、多维数组和广义表、树和二叉树、图、查找、内部排序)。为解决本课程现存问题,实现培养学生分析问题、解决问题能力的目标,同时锻炼学生的动手能力和团队协作能力,我们尝试从“旧识、应用、新知、实践”四个方面对教学内容进行重组。图1 以本课程第3 章第1 节教学内容为例,详解了教学内容改革思路。
图1 第3.1 节教学内容改革思路
旧识:为解决学生先导课程学习不扎实问题,适当复习本课程需要使用到的先导课程知识。帮助学生建立起先导课程与本课程的内在联系,为学生学好本课程奠定基础。
应用:为激发学生学习兴趣,将抽象的理论知识形象化,从学生日常接触的应用或者当前热点应用出发,教师提出疑问,引发学生思考。
新知:为解决疑问,引导学生进行小组合作探究。不用局限于教材,允许学生通过网络、视频、论坛等各种渠道收集资料寻找解决方案。通过归纳总结内化原理,最终回归教材。
实践:尊重学生个体差异,设计阶梯式的实践目标。为基础薄弱的同学建立自信,也为基础扎实的同学提供拓展空间,让不同层次的学生都能有所收获。
传统的数据结构与算法课堂的大量的时间被理论内容占用,学生实践时间少,并且采用“教师讲、学生听”的教学模式,学生处于被动学习状态。为突破传统课堂在时间和空间上的限制,提高课堂教学的效率,同时,促使学生根据自身情况利用碎片化时间主动学习,本课程尝试使用线上线下相结合的教学模式(如图2 所示)。
图2 线上线下相结合教学模式
1.线下教学
课前,教师在对教学内容和学情分析的基础上,设置合理的教学目标。课上按照“以学为中心”的教学理念,首先,选取恰当的方式创设情境,引起学生的兴趣。其次,提出问题,鼓励学生合作探究,让学生充分参与课堂。再次,教师在学生自主探究的过程中加以引导,随机抽取小组分享解决问题的思路和途径。最后,学生进行反思,教师对本次课程进行总结。课后,教师根据多元考核评价结果和教学反思完善教学设计。
2.线上教学
线上教学借助雨课堂、网络教学平台等信息技术手段开展。课前通过雨课堂发布学习清单,为学生提供清晰的学习路径;同时,发布小组任务,以任务为驱动督促学生完成课前学习。课上通过雨课堂进行考勤、随机点名和随堂测试。利用雨课堂的“弹幕”和“不懂”功能,提高学生的参与度和积极性,加强师生互动。课后通过雨课堂推送PPT、拓展任务和问卷调查,帮助学生总结和复习。
针对我校实际学情,团队开发了数据结构与算法在线开放课程,以微视频的方式呈现课程的重要知识点,并配套单元测试和章节测试。微视频发布在网络教学平台,为学生预习和复习提供了良好的支持。网络教学平台也提供了讨论区,供师生、生生之间开展线上讨论和答疑,将教学延伸至课外。
传统的课程考核方式过分关注静态的、可量化的学习成果,忽略过程性评价,不利于学生全面发展[5]。为解决课程考查内容不全面的问题,笔者尝试改革考核方式(如表1 所示)。
表1 课程考核指标明细
课堂互动:课堂上通过雨课堂开展抢答、随堂测验、签到等活动,并将雨课堂中记录的出勤和测验数据作为平时成绩。以此来检验学生对授课内容的掌握程度,督促学生查缺补漏,帮助教师及时掌握教学目标达成程度。
小组协作:按照“组内异质,组间同质”[6]的原则将3~5人分为一组,模拟企业考核制度,实施组内自评、组间互评和教师测评的方式考核小组协作成绩,以增强学生的责任意识和团队合作能力。
实验:本课程设计6 次实验,在考核时不仅关注学生的实验结果,更关注学生实验过程。以小组协作方式完成实验,并采取翻转课堂的方式,随机抽取小组及小组成员讲解实验原理、实验中遇到的问题及解决方案。通过实验过程+实验结果+翻转课堂的方式综合评价实验成绩。
期末考试:试卷包含选择、判断、简答、应用和算法设计5 种题型。以选择、判断和简答题考核学生对本课程基本概念的掌握情况、以应用题考查学生对常用算法的应用情况,以算法设计题考查学生灵活运用所学知识解决问题的能力。
采取“课堂互动+小组协作+实验+期末考试”的考核方式,既能对学生的表现进行更全面的评价,又能在教学过程中及时了解学情。教师基于学情适时调整教学策略,积极引导和激励学生,师生共同进步,才能真正实现教学相长。
从“以教为中心”向“以学为中心”的转变是我国高校教育发展的必然趋势,为建立适合不同层次和不同专业特点的“以学为中心”的教学新模式,教师必须经过不断的内化和自我探索。本文针对我校数据结构与算法课程在教学中出现的问题,从教学内容、教学方法和课程考核三个方面提出改革思路,充分尊重学生主体地位和个体差异,取得较好的教学效果,可为数据结构与算法教学提供参考。