APP下载

《数据结构与算法》实训教学方案的改进与实践

2018-03-21张一倩

数字通信世界 2018年11期
关键词:梯次数据结构编程

张一倩

(济南职业学院,济南 250000)

1 实训教学方案改进的必要性

《数据结构与算法》作为高职软件技术专业的职业基础课,具有一定的理论性与实践性,采用课堂教学与上机实训1:1的课时分配模式。其中的实训课程是学生对课堂所学知识的综合运用,与课堂听讲、课后练习、自学总结相辅相成,构成一个完整的课程教学体系。要真正掌握数据结构的知识并能根据实际情况应用知识解决问题,只依靠课堂听讲、课后练习不够,还需要完成与课堂教学同步的上机实验,动手设计实施有效的测试,才能培养全面、灵活的算法设计思想和较高的编程能力,为今后从事软件开发打下基础。当今的行业、企业需要具有较强动手能力、能解决实际问题、有创造能力的新型技能型人才,这也是实训教学的最终目的。

笔者在校任职期间,除了担任《数据结构与算法》课程及实训任课教师外,还多次指导了大学生数学建模竞赛。在教学、比赛过程中深刻体会到,许多理工科大学生综合运用所需知识,分析、解决问题的能力,与现代社会的要求还相距较远。

很多同学能够凭借对程序设计的兴趣,自觉学习数据结构相关知识;但也有为数不少的学生在学习过程中未能建立丝毫的兴趣。这一现状,无疑与实训内容设计有密切的关系。原有实训教学过程单一,学生只需按照要求照抄教材上的例程,就可以看到实训结果,可供学生发挥的空间小,不能充分激发学生的主动性与创造性。

分析上述问题,原因是缺乏对实训教学的内容和过程进行深入研究和设计。通过梯次配置不同难度的任务,持续激发学生学习的积极性,从而获得较好的实训教学效果。

2 实训教学方案改进的实施

针对原有实训教学环节中存在的不足,对实训的内容进行充实和提高。但如果仅提高实训难度,学生很难在短时间内全部接受。因此还应梯次配置的任务,使学生保持学习的积极性,从而获得最佳的实训教学效果。

2.1 充实实训内容

针对原有实训内容单一,实训过程缺乏创造性的缺点,对实训内容进行了充实,所做的工作有:

首先,设计、探索、实施了“问题驱动”的实训教学模式,将课程分为基本概念、线性结构、树形结构、图形结构、查找技术、排序技术六大模块,针对每个模块设计一个有趣的实际问题,从常识性思考出发,让学生明白这些数据结构为什么存在,可以解决什么问题。实训题目围绕该实际问题展开。第二,围绕主要知识点,设计了10个上机实验题目,给出了实验目标、源代码、测试用例,让学生在做中学,在学中做,从实际应用的角度更好的理解知识点。第三,采用“分阶段设计、实施、调整”的研究方法。首先由课程负责人提出“课程各模块知识点分布图”,之后与软件教研室主任、课程组成员讨论、研究、确定具体方案;依据方案实施、修改、完善;课程负责人对项目各开发步骤的完成情况进行汇总,形成《数据结构与算法实训任务书》。

2.2 梯次配置任务

如果仅一味增加实训内容,提高实训难度,在有限的实训时间内,大多数同学将难以学习和接受,反而容易挫伤他们学习的自信心和积极性。因此必须对实训内容进行合理的规划,根据难度高低分解为不同的任务。通过梯次配置的任务,吸引学生在“任务挑战-尝试解决-编程实践-取得进展”的循环中,不断保持学习的积极性,从而获得较好的实训教学效果。

3 实训教学实例

实例1 线性表的应用

3.1 基本任务

统计是我们在日常数据处理中经常碰到的问题,大到国家经济指标的统计,小到家庭的日常收支的统计。对于这类问题,涉及的数据对象是线性表。顺序表是线性表的顺序存储形式,其基本操作有插入、删除、查找等。该实训项目中,将实现顺序表的插入和删除算法。要求学生首先分析项目涉及到的顺序表的初始化、插入、删除、输出等基本操作;并分析出各函数之间的调用关系:主函数main调用 Init_Seqlist、Insert_Seqlist、Delete_Seqlist、Display_Seqlist, 进 而利用C语言实现以上算法。

3.2 进阶任务

某餐厅前台客服人员接听客户订餐电话后,需填写订餐记录单,包括姓名、人数、用餐时间,要求分析客户电话订餐的各种情况,并编程模拟前台客服人员对“客户电话订餐”的管理过程。该实训项目中,要求学生首先应考虑的是,如何存储客服接听电话的纸质记录单,以及选择何种数据结构才更加贴近实际情况、更加方便程序控制。学生认识到这是一个小型管理系统后,应明确该系统的基本功能,并依据功能模块设计系统菜单,进而利用基本任务中已实现的线性表的基本操作,实现整个订餐系统的功能。

将实训内容划分为基本任务和进阶任务,任务之间前后承接,难度递增。通过梯次配置各个任务,不断地吸引学生认真学习相关的命令,通过编程实践解决问题。教师能够很好的把握实训进度。学生在前一个任务取得进展后,可以获得学习的快乐,但随即又面临后续任务的挑战。

经过上述各任务的实践,学生可以由浅入深地逐步掌握线性表的基本操作,并在实践中多次练习编程技巧。经过两学时的实训,大多数同学都能够独立设计算法并编程,掌握了线性表的基本使用方法。

实例2 二分查找算法的应用

解决实际问题中,查找与排序技术对程序的运行效率有明显影响,是重要的数据处理功能。如何高效地对数据进行查找、排序,是各种软件系统中的重要问题。本实训项目要求完成以下功能:

任务1 输入一个无序的查找序列,自选直接插入排序、选择排序、快速排序算法其一,将该无序序列调整为一个有序序列;

任务2 为调整后的有序查找序列建立查找结构,查找结构可以选择基于数组的顺序存储,也可以选择基于单链表的链式存储;

任务3 用二分查找算法,实现对某一给定值kx的查找;若查找成功,返回该元素在序列中的位置;若查找失败,给出反馈信息;

任务4 给出二分查找算法的比较次数。

原有的“二分查找”实训的内容较为单一,实现难度偏低。学生较短时间内完成实训功能后,往往自以为已经完全掌握,很快失去了继续学习的兴趣。将原有项目扩充为四个任务,对学有余力的学生,可以在原有照搬教材算法的同时增加了“原始数据的整理”、“数据存储结构的选择”、“算法效率的分析”等步骤,在这一过程中,学生对相应知识的掌握和编程能力都得到了很大的提高。

在此次实训过程中,通过补充的任务,极大地吸引了学生的注意力,始终保持了较高的积极性和学习热情;学生通过编程实践进一步加强了相关知识点的理论学习。

4 结束语

综上所述,通过扩展实训内容,可以将《数据结构与算法》课程实训与C语言程序设计等课程相结合,通过知识点的联系和对比,使学生能够更好的将多门专业课程融会贯通。通过合理划分和调整,将实训内容分解为多个任务,梯次配置,使学生可以由浅入深地开展学习和实践,学习的积极性和主动性得以充分的调动。

猜你喜欢

梯次数据结构编程
一种航空装备使用最优梯次间隔时间计算方法
数据结构线上线下混合教学模式探讨
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
工信部:编制《新能源汽车动力蓄电池梯次利用管理办法》
老年大学施行梯次教学的思考
浅论动力电池在通信基站的梯次使用
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例