开篇:润墨网以专业的文秘视角,为您筛选了一篇以学科竞赛驱动程序设计类课程教学改革研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:计算机学科竞赛与程序设计类课程所涉及的知识点密切相关。针对目前程序设计类课程教学中存在的问题,结合学科竞赛特点,整合了程序设计语言、数据结构、算法设计与分析几门课程的教学内容,对教学方法和考核方式进行改革,并在教学过程中加以实践,取得了良好效果。
关键词:学科竞赛;程序设计课程;教学改革
中图分类号:G433
文献标识码:A 文章编号:1672-7800(2015)005-0180-02
作者简介:徐胜舟(1982-),男,湖北孝感人,博士,中南民族大学计算机科学与工程学院讲师,研究方向为模式识别。
0 引言
随着计算机技术的飞速发展,IT行业乃至整个社会对计算机专业学生的实践能力、分析解决实际问题能力、沟通交流能力、团队合作精神等要求不断提高。程序设计类课程作为计算机专业基础课,在学生能力培养方面起着至关重要的作用。
目前,程序设计类课程教学多以语法讲解为主,通过简单的实例进行验证,教学重点几乎都偏向理论教学,忽视了对学生应用能力的培养。学生在学习过程中,很少有项目锻炼机会,更谈不上得到高强度计算思维的训练了。程序设计课程的实验内容,也多是对理论学习内容的验证,这样的教学模式难以培养出高层次的计算机专业人才。
计算机学科竞赛,如ACM/ICPC(国际大学生程序设计竞赛)、全国软件专业人才设计与开发大赛、全国信息技术应用水平大赛、机器人足球比赛等,竞赛题目大多依托于实际问题,涉猎内容广,且大多数项目要求学生组团参加。学生在参与这些竞赛过程中,能够得到分析解决实际问题能力、领导能力、团队协作能力等全方位的锻炼。为此,通过组织学生参加学科竞赛等相关活动,对程序设计类课程进行改革,取得了较好成效。
1 学科竞赛优点
1.1 培养学习兴趣与学习能力
学科竞赛和平时的学习和考试不同,它不仅题目难度大,而且涉猎的知识范围广,要求参赛学生从各种渠道获取相关资料,并对已获取的知识进行整合、分析与建模,利用这些知识解决竞赛中遇到的问题。
很多竞赛题目都是以英语作为文种给出,参考资料也只用英语表述。在参加竞赛的过程中,学生的英语水平能得到较大提高。而良好的英文写作和阅读能力是计算机学院学生就业或进一步深造的必备条件。
1.2 培养团队协作意识与心理素质
国际大学生程序设计竞赛(ACM/ICPC)规定每支参赛队伍由3名在校大学生组成,规定在5个小时内,共用一台电脑,求解8道以上复杂的编程问题,评判采用严密的联机测评系统与严格的测试数据,由计算机自动评判[1]。全国信息技术应用水平大赛为团体赛,要求学生按照要求组团完成作品。这些竞赛场面宏大,竞争激烈,要求学生有良好的心理素质,合理分工,密切合作,才有可能取得好的成绩。而心理素质和团队协调合作能力,都是在平时的学习和训练过程中培养出来的。
1.3 提高教师教学水平
竞赛的辅导和平时的教学差异很大。竞赛要求对知识的理解更为透彻,对知识的应用更加灵活。通过对知识的不断梳理和应用,教师可以把竞赛中的各种案例应用到平时的教学中,也可以把一些好的思想和理念传授给学生,促进了教师教学水平的提高。
2 学科竞赛驱动教学改革内容
课程群是为完善同一施教对象的认知结构, 而将本专业或跨专业培养方案中若干门在知识、方法、问题等方面有逻辑联系的课程加以整合而成的系列课程[2]。程序设计语言、数据结构、算法分析与设计这几门课程是计算机学科的核心课程,也是与学科竞赛联系最为紧密的几门课程。因此,将这3门课程进行整合,建立灵活的管理机制和高效的教学模式。
2.1 课程内容整合
程序设计主要采用C语言教学,包括基本语法规则、数据类型和各种运算符、三种基本结构、常用函数和指针等。数据结构课程主要内容包括线性表、栈、队列、字符串、数组、广义表、树、二叉树、图、查找等。算法分析与设计课程主要内容包括算法效率分析、归纳法、分治法、贪心法、动态规划、回溯法、分支限界法等。
C语言教学如果单纯讲语法会比较枯燥,容易引起学生反感,难于理解和掌握。因此,可将部分数据结构内容穿插在C语言的教学过程中。如将数据结构中的数组、排序和查找放在C语言程序设计中讲授,并把相应的案例放在C语言指针这一章中,以加深印象,促进理解。在数据结构教学中,也穿插了算法设计与分析的相关知识,如在讲授Huffman树和图论中的最小生成树时,将贪心算法融入其中;在讲述图论中的最短路径时,介绍动态规划算法[3]。在算法设计与分析课程中,要求对所有算法涉及到的数据结构都进行详细分析,而且绝大多数要求用C语言来实现,通过这种方式巩固所学知识。
2.2 教学方法改革
在学习《程序设计语言》时学生还没有入门,因此该课程主要采用课堂讲授为主、学生上机练习为辅的方式。数据结构课程教学,要求学生更多地参与课堂讨论,讨论的表现直接计入平时成绩。《算法设计与分析》课程教学,学生已有了一定的积累,因此对其中的部分内容,要求自行准备、上台讲解,教师进行点评。
在教学过程中,主要采取案例式教学方式,为了与竞赛结合更紧密,可将每门课程的练习题描述成程序设计竞赛的形式,按照背景描述、输入、输出、测试数据几个部分提供给学生。一方面增强趣味性,另一方面创造一种与实际应用紧密结合的环境,以训练选择数据结构和算法的能力。
为了配合实验教学和竞赛训练,我们引入了程序设计在线评测系统,教师通过系统布置任务,学生通过评测系统提交作业,系统对提交的程序代码实时反馈。系统显示的排名能激发学生的竞争心理,督促学生在上机时不做与学习无关的事情,提高学习效率。此外,在线评测系统将教师从繁重的实验报告批改任务中解放出来,能从系统反馈中很清晰地看到学生的薄弱环节,可以有针对性地调整教学重难点。
2.3 考核方式改革
考试作为课程教学的一个重要环节,对学生的学习具有明显的导向作用[3]。这3门课程原来的考核方式是平时分占30%,期末卷面成绩占70%。这样的考核方式偏重学生的记忆能力,忽视了平时的学习过程,很难锻炼学生的实践能力,更难有效提高学生的创新能力。为此,对课程考核进行了改革,评分标准如下:课堂考核10%、上机考核50%、期末闭卷考试40%。
课堂考核主要考查学生的学习积极性,包括出勤、提问回答、讨论发言是否准备充分等。上机考核主要考查学生完成实验的情况,包括课内上机实验和课外在竞赛平台上答题和完成测试的情况。期末闭卷考试主要考查学生对基础知识掌握的情况,包括对常用数据结构和算法的理解,侧重学生分析问题的能力。
3 竞赛驱动的教学改革保障措施
3.1 竞赛指导团队建设
学科竞赛题目的设置不同于一般的考试,涉及的知识面非常广,单靠一个教师的力量很难做好竞赛的辅导工作。因此,我们将具有丰富教学经验、扎实专业功底、吃苦耐劳且具有奉献精神的教师吸收到指导教师队伍中来,组建一支业务过硬的指导教师团队。
教学上,小组成员首先根据各类竞赛辅导的需要,集体讨论相关课程的大纲,然后分工合作,按照自己擅长的领域进行课程相关资料的准备,再集体讨论课程的讲授方法和讲授内容。
在竞赛辅导上,小组成员根据各类程序设计竞赛的特点,制定相关的培训目标和计划,对知识点进行有效分类,分清主次和重难点,有针对性地制定教学计划,将竞赛的辅导融入到常规教学过程中。在课后,利用程序设计竞赛平台组织学生进行训练,要求学生将解题思路写出来,并为其他小组成员进行讲解,讲解完后教师进行梳理,分析涉及到的知识点,充实到教学资源库中。
3.2 学生竞赛队伍培养
学科竞赛毕竟不同于平时考试,对学生各方面素质的要求都很高。建立和培养竞赛队伍要做到:①在平时的教学过程中,注意观察,选出好的苗子,以成绩优异或在竞赛中获奖的学生为基础,成立程序设计兴趣小组;②通过宣传竞赛,吸纳一些对程序设计感兴趣的学生,鼓励他们参加学院的竞赛,通过学院竞赛选拔学生进入队伍。对进入队伍的学生,采用“老带新”的方式,要求老队员分享参赛经验与竞赛资源,通过指导上机的方式帮助新队员熟悉竞赛平台。这种方式不仅能加快新队员的融入速度,对老队员的沟通协调能力也是很好的锻炼[4];③通过多样化的激励机制培养学生的竞赛兴趣。如对竞赛活动中取得优异成绩的学生,不仅颁发相应的证书和奖金,还给予相应的创新学分奖励,与学校的评优评先挂钩。另外,对取得优异成绩的学生,通过各种渠道进行宣传,形成榜样作用。
4 结语
以学科竞赛为依托的程序设计类课程群建设改革,将竞赛案例引入到课堂教学,注重培养学生分析、解决问题能力及程序设计能力,引入竞争、讨论、团队合作机制,激发了学生自主学习、研究性学习的兴趣。实践表明,该课程改革取得了较为明显的效果,参加过竞赛的学生,在考研或找工作的过程中表现更为突出,更受导师或用人单位的青睐。
参考文献:
[1] 田贤忠,刘楠,孙国道,等.ACM国际大学生程序设计竞赛学习模式探讨[J].高教与经济,2009, 22(4):46-49.
[2] 李慧仙.高校课程群三论[J]. 煤炭高等教育,2006(6):113-115.
[3] 袁辉勇.以竞赛培养模式推动程序设计系列课程的实践教学改革[J].电脑知识与技术,2012(12):8230-8231.
[4] 严权峰.依托程序设计竞赛,提升学生综合素质[J].电子技术,2014(2):51-53.