公务员期刊网 论文中心 正文

计算机专业程序设计类课程群建设

计算机专业程序设计类课程群建设

摘要:学科竞赛是培养和提升计算机专业学生实践编程能力和创新能力的重要途径之一。结合相关学科竞赛,构建计算机相关专业程序设计类课程群,分析知识的关联性和层次性,优化课程群的整体结构,搭建在线训练平台,并合理引入一些竞赛题作为教学实例和课后习题,提高学生的学习兴趣,取得了良好的教学效果。

关键词:学科竞赛;程序设计;课程群;教学改革;课程体系

1引言

学科竞赛是培养和提升大学生综合能力的重要手段之一,也是促进教育教学改革的重要途径[1]。对于计算机等工科专业而言,参与学科竞赛有助于提高学生的工程实践能力和创新创业能力,对学生深造和就业具有积极的作用,为此,学科竞赛也越来越受到高校师生的关注和重视,学科竞赛的参与面及参赛成绩也成为评估高校本科教学水平和质量的一个重要指标[2]。学科竞赛对于促进教学改革和专业建设也具有重要意义,将学科竞赛与课程建设相结合,优化和完善现有课程体系,有助于提升人才培养质量。

2结合学科竞赛的课程群建设

课程群是由多门彼此独立但又关系密切的课程所组成的一个集合,是为实现某一培养目标由多门性质和内容相关或相近的子课程构成的一个课程体系[3]。结合学科竞赛,对计算机等相关专业的程序设计类课程进行合理的优化和改革,分析知识点的关联性和层次性,构建程序设计类课程群,推动教育教学改革[4]。湖南中医药大学目前有三个计算机信息类专业,分别是计算机科学与技术、信息管理与信息系统、医学信息工程,基于这三个专业的培养方案,选取部分核心课程,构建“程序设计类课程群”,核心课程包括《C语言程序设计》《面向对象技术(Java)》《数据结构》和《算法分析与设计》,我们主要参加的程序设计类相关学科竞赛包括中国高校计算机大赛-团体程序设计天梯赛、蓝桥杯全国软件和信息技术专业人才大赛、CCPC中国大学生程序设计竞赛、ACM-ICPC国际大学生程序设计竞赛亚洲区域赛、全国中医药院校大学生程序设计竞赛、湖南省大学生计算机程序设计竞赛(程序设计类)等[5]。程序设计类学科竞赛涉及多门程序设计类课程所教授的内容,例如编程语言基础知识、字符串的输入和处理、常用数据结构、经典算法、数论、图论等知识,很多知识都融合在《C语言程序设计》《面向对象技术(Java)》《数据结构》和《算法分析与设计》等课程中。通过构建程序设计类课程群,对每门课程中每个教学单元的教学内容和教学目标进行剖析,从课程群的角度出发,分析知识的关联性和层次性,避免部分内容在多门课程中重复讲授,注意课程内容的衔接和难度的递进关系。《C语言程序设计》和《面向对象技术(Java)》要求学生打好编程基础、复习一些简单的数学知识、训练逻辑思维能力,《数据结构》要求学生掌握常用的数据结构和相关算法并利用这些数据结构解决实际问题,《算法分析与设计》要求学生掌握分治算法、贪心算法、动态规划、回溯法和分支限界法等常用算法并学会灵活使用这些算法解决实际问题。这些课程的教学内容全部是目前程序设计类学科竞赛的核心命题范围,大部分的赛题均围绕这些知识点来命题。当然,也有部分赛题涉及《高等数学》《数值分析》《组合数学》《数论》《计算几何》等课程的内容。因此,结合相关程序设计类学科竞赛来促进和检验教学效果,以学促赛,以赛助学,专业课程学习和学科竞赛相辅相成,相得益彰。为了更好地结合学科竞赛开展课程教学工作和课程群建设,我们参照目前ACM大学生程序设计竞赛的训练和比赛模式,参考学科竞赛模式和兄弟院校的成功经验,搭建了湖南中医药大学OJ(OnlineJudge,在线判题平台),申请了校级二级域名,学生可以在学校机房或其他地点利用该平台做编程实验和练习。目前该平台已有《C语言程序设计》练习题200多道,这些题目也可以作为《面向对象技术(Ja⁃va)》的练习题。此外,目前平台还有《数据结构》练习题近100道,《算法分析与设计》练习题50多道,练习题库还在不断建设和完善中。通过引入OJ系统,该系统自动对学生提交的代码进行在线判断,自动提示所写程序是否正确。学生在该系统上以学号和真实姓名注册,任课教师可以随时跟踪和了解学生的做题情况。由于OJ平台自带自动判题功能,无需人工批改,可极大降低教师的工作量,而且教师可以通过功能了解学生的代码重复率,了解学生是否存在抄袭作业的现象。在后续我们还将对已有OJ系统进行进一步完善和扩展,可以分析学生对各个知识点的掌握情况并提供智能推荐功能,为学生自动推荐练习题,完善学生的知识结构体系。除了使用我们自己搭建的OJ系统外,在《数据结构》课程教学中还使用了南阳理工学院的OJ,在《算法分析与设计》课程教学中还使用了国内知名度最大的两个OJ系统,分别是北京大学的POJ和杭州电子科技大学HDU[6]。目前很多企业的招聘笔试和高校的研究生复试也采用类似OJ系统在线做题和判题,因此,在OJ系统上做题可以让学生提前为后续求职和深造的在线笔试热身。此外,我们结合课程知识点选取部分赛题作为课程练习题和考试题。通过分析历届湖南省大学生计算机程序设计竞赛(程序设计类)、全国中医药院校大学生程序设计竞赛、蓝桥杯全国软件和信息技术专业人才大赛等竞赛的真题,选取一部分难度合适的题目作为日常教学的案例或者练习题。以湖南省大学生计算机程序设计竞赛为例,在讲授《C语言程序设计》的“C语言表达式和控制流程”时要求学生完成第六届竞赛A题“汽水瓶”和B题“弟弟的作业”、第七届竞赛B题“报数游戏”、第八届竞赛A题“三家人”、第九届竞赛J题“搞笑版费马大定理”、第十一届竞赛B题“大还是小?”和J题“又一道简单题”等赛题,这些题目难度较小,在程序设计竞赛中属于简答题,部分赛题既考查了学生的编程基础又考查了学生的思维能力,是非常好的编程基础训练题;在讲授“字符和字符串处理”时要求学生完成第六届竞赛C题“数字整除”、第七届竞赛A题“一二三”、第八届竞赛B题“机器人的指令”、第十届竞赛C题“酷酷的单词”和第十一届竞赛H题“聊天止于呵呵”等赛题;在讲授“数组”时要求学生完成第九届竞赛C题“字符识别?”。在《数据结构》课程中讲授最短路径Floyd算法时引入第六届竞赛的G题“RepairingaRoad”,讲授最短路径Dijkstra算法时,引入第十一届竞赛的E题“简单的图论问题?”详细讲解Dijkstra算法的应用,结合第八届竞赛F题“Kingdoms”讲解最小生成树算法。程序设计竞赛中其中一个重要的命题领域是计算机算法的掌握与运用,因此,在《算法分析与设计》课程中可以将历届竞赛中部分相关赛题作为课堂讲解实例或课后练习题,例如结合第七届竞赛F题“打怪升级”和第八届竞赛J题“病毒”等赛题讲解动态规划算法,结合第八届竞赛H题“TinCutterII”和第十届竞赛K题“Kicktheball!”等讲解搜索算法中的回溯法,结合第十届竞赛I题“残缺的棋盘”等讲解搜索算法中的分支限界法。大部分赛题都基于一些具体问题命制,题目质量较高,是非常好的教学实例和课后习题。在程序设计类课程的教学过程中引入这些竞赛真题,让学生了解竞赛的形式和命题风格,有助于竞赛的准备,同时也可以更好地为教师的教学工作服务。课程群的建设和优化还有助于更好地组建学科竞赛指导教师团队,相关课程的任课教师可以从不同角度对参赛学生及团队进行指导。在程序设计类学科竞赛的赛题中,既包含一些简单的字符串处理和基础数学题,也会有一些考查栈、队列、二叉树、图等的数据结构题,还会有一些考查分治算法、动态规划、贪心算法、回溯法和分支限界法等经典算法的赛题。因此,对于程序设计类竞赛而言,在平时的集训和赛前辅导中,承担《C语言程序设计》《数据结构》《算法分析与设计》等课程教学任务的教师可以各自负责部分所擅长内容的竞赛辅导工作,充分利用当前已有的OJ系统,指导学生参加学科竞赛并取得好成绩,实现以竞赛促进教学,通过教学反哺竞赛的目的。

3实施效果

通过学科竞赛促进计算机专业程序设计类课程建设取得了一系列成果,《C语言程序设计》《面向对象技术(Java)》、《数据结构》和《算法分析与设计》等课程教学质量和学生整体成绩有所提升,学生的教学评价满意度同时也得到提升。近三年来,湖南中医药大学学生参加中国高校计算机大赛-团体程序设计天梯赛、蓝桥杯全国软件和信息技术专业人才大赛、CCPC中国大学生程序设计竞赛、ACM-ICPC国际大学生程序设计竞赛亚洲区域赛、全国中医药院校大学生程序设计竞赛、湖南省大学生计算机程序设计竞赛(程序设计类)等学科竞赛取得了一系列突破,多次获得省部级及部级奖项。例如,湖南中医药大学代表队在2018年“中国高校计算机大赛-团体程序设计天梯赛”全国总决赛中获得三等奖和湖南省二等奖;2018年获中国大学生程序设计竞赛女生专场银奖一项和中国大学生程序设计竞赛全国邀请赛(湖南)铜奖两项;近三年来有40多人次获得蓝桥杯全国软件和信息技术专业人才大赛湖南赛区C++和Java软件开发大学组三等奖及以上,多名同学获得湖南赛区一等奖并晋级全国总决赛,在全国总决赛中获得二等奖和三等奖多项;近三年在湖南省大学生计算机程序设计竞赛中获得三等奖及以上10多项,获得全国中医药院校大学生程序设计竞赛一等奖和二等奖共7项。学生的编程能力和动手实践能力有明显增强,在参赛学生中,多名学生保送或者考取哈尔滨工业大学、中南大学、湖南大学等知名高校硕士研究生,部分学生就职于百度、腾讯等知名企业,人才培养质量得以显著提升。

4结语

以学科竞赛促进课程群建设,以课程群促进学科竞赛的开展,相辅相成,相互促进,取得了良好的效果。通过学科竞赛,对《C语言程序设计》《面向对象技术(Java)》《数据结构》和《算法分析与设计》等课程的教学目标、教学内容、重难点等进行重新梳理,构建更为科学合理的程序设计类课程群,并在课程教学过程中引入竞赛所采用的OJ在线判题平台,提高学生的学习兴趣,教师可以更好地跟踪和监控学生的学习和练习情况。在教学过程中结合历届相关赛事的真题作为讲解实例和课后练习,让学生可以了解竞赛的形式和内容。结合学科竞赛推进计算机专业程序设计类课程群建设,可以更好地优化现有课程体系,增强学生的动手实践能力和问题解决能力,有助于提升教学效果和人才培养质量。在今后的工作中,将进一步完善现有的赛题库和练习题库,优化和完善现有OJ在线判题平台的功能,增加习题推荐和学生知识结构分析评估等模块,完善现有的教学大纲和培养方案,更好地发挥学科竞赛在人才培养中的作用,促进新工科建设。

参考文献:

[1]王晓勇,俞松坤.以学科竞赛引领创新人才培养[J].中国大学教学,2007(12):59-60.

[2]赵春鱼,吴英策,魏志渊,等.高校学科竞赛:现状、问题与治理优化——基于2012-2016年本科院校学科竞赛评估的数据分析[J].中国高教研究,2018(2):69-74.

[3]龙春阳.课程群建设:高校课程教学改革的路径选择[J].现代教育科学,2010(3):139-141.

[4]韩郁葱,宗瑜,陈家俊.应用型本科计算机专业课程群建设研究[J].合肥学院学报(综合版),2012,22(4):57-59.

[5]刘伟,丁长松,黄辛迪.基于学科竞赛的计算机类课程实践教学改革探索与研究[J].时代教育,2017,(4):63-65.

[6]刘伟,丁长松.“算法分析与设计”课程教学改革与实践[J].工业和信息化教育,2017(3):62-65.

作者:刘伟 黄辛迪 单位:湖南中医药大学 信息科学与工程学院