基于工程认证的“数据结构”课程教学改革实践

作者: 滑亚慧 石锋 王建

[摘 要] 数据结构课程是计算机相关专业的核心专业基础课。课程概念多,理论性较强,需要进行大量深入的实践练习帮助学生理解相关算法和概念。然而,传统的课程教学模式以教师讲授为主,实践学时严重不足;西安航空学院计算机学院“数据结构”课程教学团队经过长期的教学实践改革,基于工程认证要求,对课程大纲、课程组织形式等进行改革。在课程大纲中引入思政内容,通过在线实践教学平台的应用,对学生进行多元化考核,进行了理论实践一体化的课堂教学改革探索。

[关键词] 数据结构;工程认证;教学改革

[基金项目] 2018年度西安航空学院质量工程项目软件工程“校级一流专业建设”(18ZLGC107);2018年度西安航空学院质量工程项目数据结构SPOC隶属一流专业课程建设(18ZLGC3030)

[作者简介] 滑亚慧(1982—),女,山西临汾人,硕士,西安航空学院计算机学院讲师,主要从事数字图像处理、软件工程专业研究;石 锋(1971—),男,陕西澄城人,硕士,西安航空学院计算机学院副教授,主要从事数据结构、软件工程教学与研究;王 建(1976—),男,陕西合阳人,硕士,西安航空学院计算机学院讲师,主要从事软件工程与算法研究。

[中图分类号] G642.0 [文献标识码] A [文章编号] 1674-9324(2022)44-0000-04 [收稿日期] 2021-11-30

引言

工程教育专业认证是国际通行的工程教育质量保障制度,也是实现工程教育国际互认和工程师资格国际互认的重要基础[1]。随着我国高等教育的大众化,以及社会对高等教育质量的关注日益增强,越来越多的高校通过开展工程教育认证提高和保障教学质量,以适应国际化发展趋势。工程教育专业认证的核心理念是:以学生为中心,以成果为导向,持续改进[2]。以学生为中心要求教育目标围绕学生的培养,教学设计聚焦学生的能力培养;以成果导向的教育说明了学校定位、培养目标、毕业要求、课程体系、教学活动等教学相关资源之间由下向上,逐层支撑的过程;持续改进要求建立常态性评价机制并不断改进,持续改进的效果通过学生的表现来体现。

数据结构课程以C语言为基础,使学生从数据逻辑结构、存储结构和基本运算的算法设计三个层面掌握基本的数据组织和数据处理方法,能够从问题出发设计面向数据结构的求解算法,并能够对算法进行时间复杂度与空间复杂度分析,为后续课程如算法分析与设计、操作系统等课程学习打下基础[3]。本文根据工程教育认证要求,针对学生课程学习效果和工程能力要求,对基于毕业要求和培养目标的课程大纲修订和课堂教学改革实施情况进行探讨。

一、数据结构课程教学现状

数据结构课程是软件工程、计算机科学与技术、物联网工程、信息与计算科学等专业的重要核心课程,也是连接基础课程与专业课程之间的重要桥梁[4]。先修课程包括计算机导论、离散数学、高级语言程序设计等。虽然在课程开设之前,学生已经学习完相关基础性前期课程,但是在课程实际实施过程中仍存在诸多困难。由于课程概念多,抽象性强,部分学生基础较弱,对课程中频繁涉及的结构体、指针等基本数据类型的理解和应用不够深入,导致学生在学习数据结构课程时存在一定的困难。

数据结构课程主要研究数据的存储、组织和处理,正确地设计算法以及如何对算法进行分析和评价[5]。通过该课程的学习,使学生能够针对实际问题,分析数据之间的关系,设计合理的存储结构和算法,为后续课程学习打下良好的基础。作为一门非常重要的专业必修核心课程,其教学效果对后续课程的学习及最终毕业目标的达成有重要影响;因此,针对当前数据结构课程存在的问题,对课程的教学设置和实施策略进行改革尤为重要。

(一)理论教学为主,实践学时不足

数据结构是一门理论性很强的课程,要求学生具备一定的抽象思维能力和理解力[6]。此外,课程中涉及的知识点较多,包括顺序表和链表、栈和队列、数组和矩阵、串、树和二叉树、图等多种数据类型在不同存储结构下的基本算法和经典算法,以及各类查找与排序算法。在传统教学中,教师往往会做到面面俱到,对各种存储结构下数据的插入、删除、查找等基础算法进行详细讲解,导致教师没有足够的学时开展算法应用方面的教学,课程深度不够,重点不突出;学生对讲授的一系列算法被动接受,缺少主动思考和练习,进而导致学习态度消极,失去学习的兴趣和动力。因此,教师应更加关注教学效果,而非教学内容的完成度。在课堂中应留有一定的时间让学生进行自主思考和练习,从而激发学生的积极性就显得尤为重要。

(二)教学模式单一,课程枯燥

鉴于数据结构课程的特性,目前绝大多数高校仍采用传统的教学方式,以教师课件演示和理论讲授为主,学生的参与度不高,形式单一。学生缺乏参与感,容易影响关注力,最终导致教学效果较差。教师根据授课计划决定每节课讲授的内容,而不是根据学生的实际掌握情况,难以做到“以学生为中心,以成果为导向”的工程教育认证要求。

因此,需要更多关注学生能力的培养,以学生为中心开展教学活动。对传统单一的课堂讲授知识的教学模式进行改进,才能达到工程教育专业认证的产出导向的教育模式的要求。

(三)缺少实际工程实践培养

数据结构课程的目标是要求学生能够选择适当的数据类型解决实际生活和工程中的问题[7]。因此需要通过大量的实践练习,将理论知识转化为解决实际问题的方案和方法。大多数情况下,数据结构课程被划分为理论课和实验课。实验课时与理论课时严重不匹配,并且二者有一定的时间间隔,导致学生不能对所学知识进行及时巩固和深化理解。

实验数量以验证性实验为主,设计性实验数量严重不足,不能从真正意义上锻炼学生解决实际问题的能力,因此应增加有一定质量的设计性实验,使学生将课堂所学知识应用到具体问题的解决。从真正意义上培养学生解决复杂工程和实际工程问题的能力,完成从理论传授到能力培养转变。除一般性的课内实验之外,还需要通过综合性项目和课外实践环节为学生提供更多的实践训练。

二、基于工程认证的数据结构大纲修订

数据结构课程是软件工程、计算机科学与技术、物联网工程、信息与计算科学等专业的重要核心课程,也是连接基础课程与专业课程之间的重要桥梁[4]。先修课程包括计算机导论、离散数学、高级语言程序设计等。虽然在课程开设之前,学生已经学习完相关基础性前期课程,但是在课程实际实施过程中仍存在诸多困难。由于课程概念多,抽象性强,部分学生基础较弱,对课程中频繁涉及的结构体、指针等基本数据类型的理解和应用不够深入,导致学生在学习数据结构课程时存在一定的困难。

数据结构课程主要研究数据的存储、组织和处理,正确地设计算法以及如何对算法进行分析和评价[5]。通过该课程的学习,使学生能够针对实际问题,分析数据之间的关系,设计合理的存储结构和算法,为后续课程学习打下良好的基础。作为一门非常重要的专业必修核心课程,其教学效果对后续课程的学习及最终毕业目标的达成有重要影响;因此,针对当前数据结构课程存在的问题,对课程的教学设置和实施策略进行改革尤为重要。

(一)理论教学为主,实践学时不足

数据结构是一门理论性很强的课程,要求学生具备一定的抽象思维能力和理解力[6]。此外,课程中涉及的知识点较多,包括顺序表和链表、栈和队列、数组和矩阵、串、树和二叉树、图等多种数据类型在不同存储结构下的基本算法和经典算法,以及各类查找与排序算法。在传统教学中,教师往往会做到面面俱到,对各种存储结构下数据的插入、删除、查找等基础算法进行详细讲解,导致教师没有足够的学时开展算法应用方面的教学,课程深度不够,重点不突出;学生对讲授的一系列算法被动接受,缺少主动思考和练习,进而导致学习态度消极,失去学习的兴趣和动力。因此,教师应更加关注教学效果,而非教学内容的完成度。在课堂中应留有一定的时间让学生进行自主思考和练习,从而激发学生的积极性就显得尤为重要。

(二)教学模式单一,课程枯燥

鉴于数据结构课程的特性,目前绝大多数高校仍采用传统的教学方式,以教师课件演示和理论讲授为主,学生的参与度不高,形式单一。学生缺乏参与感,容易影响关注力,最终导致教学效果较差。教师根据授课计划决定每节课讲授的内容,而不是根据学生的实际掌握情况,难以做到“以学生为中心,以成果为导向”的工程教育认证要求。

因此,需要更多关注学生能力的培养,以学生为中心开展教学活动。对传统单一的课堂讲授知识的教学模式进行改进,才能达到工程教育专业认证的产出导向的教育模式的要求。

(三)缺少实际工程实践培养

数据结构课程的目标是要求学生能够选择适当的数据类型解决实际生活和工程中的问题[7]。因此需要通过大量的实践练习,将理论知识转化为解决实际问题的方案和方法。大多数情况下,数据结构课程被划分为理论课和实验课。实验课时与理论课时严重不匹配,并且二者有一定的时间间隔,导致学生不能对所学知识进行及时巩固和深化理解。

实验数量以验证性实验为主,设计性实验数量严重不足,不能从真正意义上锻炼学生解决实际问题的能力,因此应增加有一定质量的设计性实验,使学生将课堂所学知识应用到具体问题的解决。从真正意义上培养学生解决复杂工程和实际工程问题的能力,完成从理论传授到能力培养转变。除一般性的课内实验之外,还需要通过综合性项目和课外实践环节为学生提供更多的实践训练。

三、基于EduCoder实践教学平台的数据结构教学改革

数据结构具有理论逻辑性强、知识点庞杂、概念抽象以及实践性强等特点[5]。传统的课程教学模式单一,缺少师生互动交流,学生听课效果不理想;上机实践学时不足,学生在课下不能自觉进行实践练习,导致相应知识不能得到及时掌握和吸收。除此之外,教学内容过于繁多,部分内容难度偏大,不利于培养学生解决实际问题的应用能力。针对传统教学中存在的问题,提出“精讲多练、理实一体”的教学策略和教学方法,将教学与实践活动结合起来,建立理论学习与实践训练的衔接,对学生的学习情况进行实时管理和评估反馈。

(一)课程实施方案

教师在深入钻研教材、充分了解学生的基础上,确定课堂讲授的内容。抓住教材中的重点和难点内容,以及具有代表性的知识进行讲解。对于课堂上没有涉及的内容,通过给予学生适当的引导,在“练”“考”等环节自主学习和编程实践来完成。充分实现精讲多练、理论实践相结合的教学模式。收集、整理、制作了较丰富的教学资源,包括教学视频、习题、实训作业、实训项目等用于学生课内外的实践和练习。

在教学过程中充分利用信息化教学平台和工具:超星学习通和Educoder实践教学平台。分别用来发布理论教学内容和编程实验任务。将部分验证性实验内容,由教师带领学生在课堂完成,教师可以通过平台,监控学生实验过程,帮助学生发现程序中存在问题并进行辅导。而部分设计性实验内容,通过Educoder实践教学平台以实训作业形式发布给学生,由学生在课后自行完成。

通过这种形式的教学模式改革,使学生能够边学边练,对所学知识进行及时的强化和检验。课件、视频、习题、测试等多种形式的教学资源,借助“超星学习通”平台帮助学生开展预习、复习等自主学习。结合EduCoder实践教学平台的使用,将普通教室变成实验室,在理论教学的同时,带领学生完成实践任务。

(二)课程考核评价

考核形式多样化,围绕课程目标要求,考核形式包括过程性测评、阶段性测评和期末测评。过程性测评来源于超星学习通平台和Educoder平台对学生理论和实践作业成绩,各占比10%。阶段性测评采用在线考试形式,可实施2~3次,占比20%。期末测评包括笔试考核和实践考核:笔试考核主要考查学生理论知识掌握状况,为选择、填空、判断和简答等形式试题构成的试卷,占比35%;实践考核由3道程序设计题目组成,主要考查学生算法设计能力和编程实现能力,占比25%。

经典小说推荐

杂志订阅