首页 > 范文大全 > 正文

高级程序设计课程教学改革研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇高级程序设计课程教学改革研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:实现了一个跳棋人机博弈程序。由于跳棋的棋盘具有特殊性,引入了一种特殊的坐标系来表示跳棋棋盘,给出了一种高效的估值算法。通过几种博弈算法效果的比较,发现一种简单的节点排序算法就能达到非常高的搜索效率。

关键词:跳棋;估值函数;α-β搜索;剪枝

1概述

当前AlphaGo程序攻破了人类在棋类上的最后堡垒:围棋,再次掀起了人们对棋类博弈程序的兴趣。α-β算法及其改进是博弈程序的基础[1]。在此基础上,计算机在象棋[2]、五子棋[3]、国际象棋等棋类对弈中早已超过了人类。跳棋是一种玩法简单、老少皆宜的游戏。当前对于跳棋博弈程序的研究还不多。根据跳棋棋盘的特殊性,提出了新颖的棋盘表示方法。根据跳棋规则,发明了一种高效的估值算法。在已有搜索方法的基础上,提出了一种简单的节点排序算法,使得跳棋搜索效率与多种搜索方法组合的效率几乎相当。达到了打败人类高手的水平。

2棋盘表示

跳棋的棋盘是三角形网格,而其他棋类的棋盘都是正方形网格。这给棋盘表示带来了难度。五子棋、象棋、围棋这些正方形网格的棋类游戏,自然采用二维数组来表示棋盘,数组的行和列对应棋盘的行和列。跳棋的棋盘通常一个位置与6个位置相邻,因此,我们采用了一种新的坐标系,如图1所示。X轴和Y轴夹角为120°。在此坐标系下,跳棋的棋盘也可以用二维数组表示了。根据跳棋的规则,如果一个子的相邻位置有子,该子可以跳到相邻位置的对面,即移动2步。为了判断走棋是否合法需要判断目的位置是否有子,而目的位置可能在棋盘外面,还需要判断数组是否越界。为了计算机处理方便,在棋盘的边缘又加了两个边。这样可以将两个判断统一为判断目的位置是否有子,而不必再判断数组越界问题。当然多出来的两条边不显示在界面上。最终在坐标系下,棋盘顶部位置的坐标为(2,6),底部位置的坐标为(18,14)。摘要:为了适应信息化时代的要求,计算机编程技术的教学水平也应日渐成熟,对计算机程序设计课程改革提出了一些要求和方法。关键词:程序设计课程;改革;竞赛1概述目前在高等院校计算机相关专业中,编程语言类课程占有较大比重。这类课程的实践性很强,理论知识较为抽象。要求学生不仅学会基础知识,还要具备一定的程序设计能力。在传统的教学过程中,根据学时安排,老师往往更加注意强调程序设计语言的基础语法,上机实验内容也很局限。使得在教学过程中偏向理论部分,忽视了上机实践部分与理论知识之间的联系,降低了对实践能力的考察,很难有效地提高同学们的程序设计水平。2竞赛对于课程学习的帮助以竞赛对程序设计语言和算法的学习作为整体进行考察,能使学生对该门语言有整体的掌握和认识,ACM竞赛与程序设计类课程的教学相结合,能够提高学生的程序设计能力,是十分有意义的。在传统程序设计类课程教学中暴露出很多问题。举个例子,C语言和C++是计算机相关专业的基础课程,也是高等院校中的必修课。它们都属于高级语言,为数据结构与算法、JAVA程序设计课程打下基础。要求学生具备实践能力。但传统的教学基本把课时安排在普通教室进行理论教学。把重点侧重在基础的语法知识。老师只安排了很少的实践内容,学生课下很少动手实践,因此就造成了很多学生是为了应付考试而去死记硬背一些编程题,也一样取得了高分,这样得到了高分的学生也未必真正掌握基本程序设计能力,这样的教学很难激发学生们的学习兴趣。这样学生在毕业以后很难达到在公司工作应有的水平,学生在课上所学的知识根本达不到实战的要求。这样的情况引发了到底该注重理论还是实践的疑问。一方面,理论知识能够帮助学生更好的理解语言,但从中获取的实践经验很少。虽然学生学到了基础语法和典型的数据结构算法,却很难用到实践中去。不清楚在实践中可能遇到的问题,很难独立完成程序设计。另一方面,学生过分强调实践,经常坐在电脑面前敲代码,这样做容易忽视了基础的知识和语法,导致很多学生所写的程序错误很多。综上所述,学习高级程序设计课程需要一个良好的方法,一个高效的培养方案也直接决定着这个学校计算机类课程的教学水平。

3基于竞赛的课程教学改革

很多学生的编程经验不足,如果直接参加竞赛可能会因为有很多题做不出来而对竞赛产生恐惧,失去对竞赛的兴趣。如果将Ja-va,C++等高级程序设计语言课程选在校内的机房授课,前半节课进行基础知识讲解,后半节课进行上机实践。这样学生对该门课程能够灵活运用。学生在竞赛中展现的能力也会有飞速的提升。在每章课程结束之后进行竞赛考核,这样做目的是找到学生在编程竞赛过程中有哪些不足之处,根据每个学生出现的问题,进行具体优化和补充。逐步提高学生的个人能力。在参加竞赛前也可以组建团队,每三四个人组成一个团队,采用课程负责人制度,团队里每位同学轮流授课,积极开展课程教学活动,讨论并制定教学大纲,实验大纲,考试大纲,确定统一的教学内容和模式,备课,制定规范化的教案。这样能够促进学生之间相互监督和学习,营造高质量的教学氛围。在比赛的时候几个人去思考一道题时,可以相互研究讨论,聚集大家的思维和方法。这样能更有效地提高学生的编程思维和团队配合的能力。综上所述,适当增加竞赛,对高级程序设计课程十分有帮助。这样不但可以提高学生的编程能力还能提高基础知识水平,及时了解到自己的不足和与别人之间的差距。对毕业以后在公司开发实际项目里有很大帮助。

参考文献

[1]于世华.基于ACM竞赛模式的程序设计教学改革研究[J].呼伦贝尔学院学报,2011(2):62.

[2]穆宝良,李晋,韩雪峰.基于ACM平台的程序设计课程教学改革[J].软件工程师,2013(5):29-30.

作者:彭铖 吕冬梅 单位:吉林建筑大学 电气与计算机学院