APP下载

云计算平台下“算法与数据结构”过程化实践教学改革

2019-07-30

中国轻工教育 2019年3期
关键词:上机数据结构代码

杨 雄

(福州大学至诚学院,福建 350002)

“算法与数据结构”课程是计算机学科一门理论和实践结合非常紧密的核心课程[1],其课程内容与后续专业课程的关联如图1所示。本课程采用课堂教学与上机实践1∶1的课时分配模式,理论教学环节注重为学生打下坚实的理论基础,学生需要掌握数据结构的基本概念和抽象数据的组织方法,实践环节着眼于培养学生的实践能力,使学生能够分析具体案例中数据元素的逻辑结构,设计高效灵活的存储结构,实现基于该数据结构的操作算法。

图1 “算法与数据结构”课程地位

要真正掌握数据结构知识并能根据解决实际应用场景中的问题,仅仅依靠课堂听讲和课后练习是完全不够的,还必须完成与课堂教学同步的上机实验。学生通过实验完成数据结构中的一些典型案例,既可以更好理解、消化和掌握课堂教学内容,又能够运用计算思维分析和解决计算机领域的相关工程问题[2]。由于本课程的实践环节是学生验证、掌握和应用理论知识的重要手段,也对学生后续专业知识的学习具有深远的影响,因此对本课程实践环节的改革研究具有非常重要的意义[3]。结合我校当前实验教学平台和多年 “算法与数据结构”课程的教学经验,本文将云计算平台应用到“算法与数据结构”实践环节中,为探索“算法与数据结构”实践教学改革提供思路。

一、“算法和数据结构”课程实践环节的现状和主要问题

1.实践教学与理论教学脱节严重

由于“算法与数据结构”课程各知识点的独立性和抽象性都比较强[4],如果教师在教学过程中仅仅注重理论知识的讲授,而忽略对学生兴趣的培养和理论与实际应用的结合,会导致学习过程枯燥,造成教学效果不理想。面对繁杂的知识点,学生在上机实践时可能无法将相应知识点和实际问题联系起来构建算法框架和编写可执行程序,在实验过程中不知如何开始编写程序,经历几次实验后可能会逐渐产生畏难情绪,甚至存在部分学生对该课程失去兴趣[5]。

2.编程语言基础薄弱,解决问题信心不足

“算法与数据结构”课程的上机实验选用传统的C语言和VC++6.0作为实验平台。《C语言程序设计》作为该门课程的先修课程安排在大一上学期学习,本课程一般安排在大二上学期或大二下学期。学生对C语言中一些语法问题理解的不透彻,如:指针调用、内存动态分配和翻译函数、函数的指针参数传递等,加上课程教学中采用伪代码或类C语言作为数据结构和算法的描述语言,而具体的实践环节一般要求学生在2个学时内能够独立完成完整程序的开发,包括核心代码、头文件和测试程序的开发和调试工作,但教材上仅提供算法的主要实现,并未给出完整的示例程序,导致对于语法基础较差学生无法补全程序的其它部分。

部分学生上机前未按要求做预习准备,对整个实践环节的投入和重视不够,在实验过程中只有算法思路而没有实际可运行的程序代码,反而是把重心放在语法错误的调试上,而不是通过实践来理解算法的核心思想。甚至在第一次实验时存在一半的学生耗费大量时间熟悉开发工具,即使该开发工具已经在C语言程序设计课程的学习中使用过。在实验过程中,还发现部分学生直接通过互联网搜索代码或通过手机拍照他人已完成代码,致使学生的上机实践变成为完成目标的“打字练习”而已[6]。

对于实验指导老师来讲,每次实践课的2学时都需要花费大部分时间用于帮助学生调试解决与数据结构本身无关的语法错误。每学期能够在实验课指定限时内独立完成代码编写的学生大约只有15%,而其他学生则无法顺利完成,更达不到加强对理论知识理解的目标。对于学生而言,无法在集体上机过程中充分利用教师的指导时间,造成集体上机甚至不如课后自行完成实验氛围的现象,在心理上很容易产生惰性和消极态度,这也是存在实验程序和报告抄袭现象的原因之一。而部分态度认真的学生,在课后继续实验,但是因为不能和任课教师实时互动,导致遇到困难无法及时解决。

这些存在的问题不仅对学生自主编程的积极性造成很大的影响,无法理解算法的精髓,体会不到数据结构的实际应用价值,背离了实践教学环节的初衷。

综合分析上述问题,在“算法与数据结构”课程的实践过程中,如何减轻学生对编程语法问题的恐惧,将更多的精力集中在核心代码的独立编写和测试,提高实践环节效率,顺序完成实验报告达成实验目标,是目前本课程实践环节改革所面临最大困难。

二、云计算实验教学平台

1.云计算实验教学平台的优点

随着《教育信息化十年发展规划(2011—2020年)》和“互联网+”计划的提出,教育信息化受到前所未有的重视。云计算技术作为一种新型的虚拟化、高扩展性的计算模型,为高校的信息化建设和教育改革提供了思路。目前,很大部分高校依然采用每台物理机单独使用资源的计算机实验室建设模式,各种教学软件和编译软件都安装在同一台物理机上,同一软件版本的更新升级维护和不同软件在同一运行环境中的潜在冲突和软件臃肿造成单台物理机性能的下降,导致软硬件采购成本高、设备管理维护投入高等问题。通过云计算技术构建的计算机实验教学平台[7],使用户能够通过互联网根据自身需要获得所需的软硬件资源,不仅降低了实验室软硬件的采购和维护成本,提高了资源利用率,而且也为学校的实践教学模式的改革提供支持。基于云计算技术构建的计算机实验教学平台架构如图2所示,它与传统独享资源的模式相比,有如下优点。

图2 基于云计算技术构建的实验教学平台架构

一是教师可以随时随地通过PC机和浏览器登录云实验平台,开展教学实践;学生上机实践时进可直接通过云终端快速登录已经配置实验环境的虚拟机。

二是云平台利用虚拟化技术可以为不同的课程创建和部署不同的操作系统镜像,提高资源利用率,不再需要为特定专业或领域设立单独的专业实验室。

三是当实验环境需要更新或升级软件时,只需对资源池中的系统模板镜像操作即可,不再需要为客户端单独安装所需的实验环境,其维护工作也几乎为零,降低了客户端的维护和管理成本,有效减少了实验室管理和维护的工作量。

2.云计算实验教学平台的实践过程

在准备阶段,教师通过复制系统基础镜像的方式快速创建虚拟机镜像模板,根据实际需要配置虚拟机的硬件参数,充分合理利用设备资源,在虚拟机模板系统中安装实验开发环境VC++6.0和实验报告撰写工具所需要的辅助软件,并根据实验指导书创建对应的项目目录和项目工程文件,每个项目工程的初始内容必须包含头文件、含有大量注释的需要实现的核心代码文件和含有测试代码的main函数主文件。教师还可以根据实验需要,在对应的项目工程文件中提供与该实验相关联的教学课件和实践操作微课视频文件等,供学生在遇到问题时指导学生分析和解决问题。

在课内实施阶段,教师上课时选择学生实验的虚拟机镜像,学生通过云终端可以快速远程连接至已创建好的操作系统镜像,根据当次实验要求打开指定项目工程,在项目文件内完成核心代码的编写工作。若遇到突出情况,学生也可以快速还原开发环境至初始状态。在教师端通过云教室软件可以方便的管理所有终端,统一查看学生所登录虚拟机系统中的操作镜像,实时获取学生的实验进度,如图3所示。

图3 云教室教师端管理软件

如学生遇到问题无法解决,可通过云教室软件“举手”或留言,教师端可以及时发现学生“举手”或留言,在软件中点击学生机镜像图标可快速登录该学生的虚拟机帮助学生分析、定位和解决问题。远程协助模式分成观察和控制,可根据不同实际场景来选择使用。

学生在上机实践环节过程中无需花费时间在与核心代码无关的工作上,如环境配置、头文件编写和引用,而是专注于核心代码的编写和调试,极大提升了实践环节的效率,能够快速达成实验目标。教师在实验过程中也可以方便快捷获悉学生的实际完成情况,并可通过禁网或禁USB等手段,在一定程度上可以杜绝简单代码拷贝的现象。

在验收阶段,云教室系统在服务器上提供了作业存储空间,学生在虚拟机完成代码编写和实验报告撰写工作后,通过云教室软件方便将代码和报告上传至该空间,教师通过检查作业空间中的学生代码和实验报告给出实验成绩,并释放虚拟机资源。

三、“算法与数据结构”实践教学应用案例

以课程实践环节中的典型实验 “实现单链表的各种基本运算的算法”为例,该实验要求学生在掌握线性表的链式存储结构的基础上,使用C语言实现单链表的各种基本操作。该实验作为链式存储结构相关的首个实验,对学生的逻辑思维和C语言中指针的运用都有较高的要求,学生尚无法顺利完成整个代码文件的编写,甚至出现一部分学生因无法完成实验而出现退缩现象。因此该实验侧重于要求学生能够在掌握理论知识的前提下参考课本已给出的伪代码来实现单链表的各个基本操作,并以给定的测试数据和已经编写好的主函数来验证其操作实现是否正确。

在准备阶段,教师在虚拟机模板中新建项目工程文件以及准备好含有框架的代码文件,包括相关宏定义、结构体定义、单链表的各个基础操作的函数头定义和主函数实现代码,但要求学生实现函数主体代码的编写和测试。代码模板如图4所示。

图4 实验二的代码模板

同时,教师设计上机任务步骤,将各个基本运算的实现以任务步骤的形式分解。以单链表的插入操作为例,将插入操作的代码实现分解为三个关键步骤:查找第i-1个结点、生成一个新结点和将新结点插入到链表中,在任务中也给出函数体的辅助代码和注释用于提示学生,但隐藏了函数体的核心代码,其设计界面如图5所示。代码隐藏范围及是否隐藏代码可根据不同的实验独立设置。

图5 教师端任务设计界面

学生在上机时首先通过浏览器连接虚拟机后,在虚拟机操作系统中可快速打开实验二的工程文件,接着按照分解后的实验步骤针对性得完成代码编写。如果某实验任务设置了代码隐藏,那在在学生端的浏览器窗口中其函数体的关键代码以*号的方式隐藏,如图6所示。通过这种方式能够让学生在实验过程中将精力集中于该实验相关代码的编写和测试上,在初始时通过阅读代码模板和编写核心代码能够让学生对于该课程上机环节所要完成的内容有了初步的认识,从而具备按照给定的数据结构完成简单程序的能力,建立起独立完成实验的信心。随着教学的深入和实验难度的加大,以实际提示的方式替代固定的实验步骤,从而锻炼学生运用数据结构来解决实际问题的能力,在大大提升上机实验效率的同时,循序渐进提高学生的编码能力,达到了该课程实践环节的教学目标。

将云教室的解决方案引入到“算法与数据结构”课程实践环节,在一定程度上可以缓解或解决目前所存在的一些问题,也取得了一些良好的效果。

第一,学生在机房的实践环节中可以集中精力于与本课程相关的代码编写上,提升了在实验课指定限时内独立完成代码的学生比例至70%左右。随着实验的不断深入,学生对各种数据结构知识的理解水平不断提高,通过知识的不断整合提升解决问题的能力、培养创新思维和提高实验自主性,最终达到了通过实验环节加强对本课程理论知识理解的目标。

图6 学生端上机实践界面

第二,为每位学生在服务器创建独立的虚拟实验空间,一定程度上避免了由于物理机故障造成实验中断和代码数据的丢失。若出现局部断电或断网的情况,待故障恢复后学生只需要通过云终端连接至虚拟机就可以快速继续完成之前的实验,有效减少了实验室管理和维护的工作量。因为学生的实验过程是在各自的虚拟机操作系统中开展的,所以各自的实验操作是相互独立、互不干扰。

第三,教师在实践环节过程中不仅能够将更多的精力集中在指导学生与课程相关的核心代码的开发和问题解决上,还能够实时掌握学生的实验进度,加大对实验过程的监控力度,提升实践环节的参与度,在达到提升教学质量目标的同时也在一定程度上减少了实验代码和实验报告抄袭现象的发生。

四、结论

在教育信息技术飞速发展的背景下,云计算技术在教育教学领域得到了广泛的应用。本文针对“算法和数据结构”实践环节存在的问题,提出将云计算技术的云教室解决方案应用 到实践教学环节中,使学生能够在实践过程中集中精力分析和解决核心问题,在获得成就感的同时逐步提升代码编写能力,通过实践教学达到巩固和加强学生对理论知识的理解和掌握的目的。

猜你喜欢

上机数据结构代码
周金应
数据结构线上线下混合教学模式探讨
标准化护理程序对体外膜肺氧合术患者上机各阶段用时的影响
为什么会有“数据结构”?
上机数控“可疑”的高毛利率
创世代码
创世代码
创世代码
创世代码
高职高专数据结构教学改革探讨