ACM平台在C程序设计教学中的应用

刘宇欣周秋霞

摘要:C语言程序设计课程是计算机专业的入门课程之一,程序设计类课程的强实践性要求学生动手编程,勤加练习。ACM在线测试平台有着自动化判题、便于统计分析数据等优点,为学生的自主学习提供了一个园地。不仅如此,ACM平台还可以很好地应用于C程序设计教学的多个环节来辅助教学。通过对ACM平台模块介绍展示其功能,并以实验课、作业、考试为例体现ACM平台辅助教学的途径及优势。实践证明,使用ACM平台辅助教学确实可以提高学生的学习积极性,并取得良好的教学成果。

关键词:C程序设计;ACM平台;判题系统;教学辅助

中图分类号:G642文獻标志码:A文章编号:006-8228(208)03-66-03

AppltfACMpltfrCprrth

LuYux,ZhuQux

(ShlfIfrtEr,LNrlUvrsty,Zh,Gud524048,Ch)

Abstrt:ThCluprrdsurssfthtrdutryurssthputrspltyThstrprtltyfthursrqursthstudtstprrdxrsdltlyACMltstpltfrhsthdvtsfuttudt,sttstldtdsItprvdsrdfrstudts'utuslrAdthACMpltfrbppldtysfCprrthThspprtrdusthACMpltfrdulstdsplytsfuts,dtxprtlurss,sstsdxtssxplstshthysddvtsfACMpltfrddthPrthsprvdthtthusfACMpltfrtssstthrllyprvstudts'lrttv,dbtdthfft

Kyrds:Cprr;ACMpltfr;udsyst;thssst

0引言

ACM国际大学生程序设计竞赛,简称ACM竞赛,由国际计算机界历史悠久、颇具权威性的组织—美国计算机ACM学会主办,是世界上公认的规模最大水平最高的国际大学生程序设计竞赛,素来被冠以“程序设计的奥林匹克”之称[],旨在使大学生运用计算机来展示分析问题和解决问题的能力。

C语言程序设计是计算机专业的入门课程之一,是数据结构、算法分析与设计等课程的基础,重在培养学生学习掌握解决问题的思路和方法,并使用计算机编写程序,即利用计算机解题的能力[2-3]。这与ACM大赛的宗旨是一致的。同时,C程序设计也是一门实践性很强的课程。既要掌握概念,更要求学生动手编程、上机调试运行[4]。鉴于ACM在线测试平台的实用性和自动判题的优势,岭南师范学院计算机系从205级开始,逐步采用ACM平台,实现C语言程序设计课程的在线练习、作业与考试。

ACM平台介绍

在Lux系统服务器上搭建了在线判题系统[5],使用作为C语言的编译器。ACM平台基于B/S结构,只要通过校园局域网输入网址即可访问该平台。页面如图所示。

图ACM平台页面图

ACM平台有六大常用功能模块。

⑴讨论模块:作为学生的自主学习园地,设置讨论专栏便于学习交流。

⑵问题模块:题库,录入了本校所使用的C程序设计教材[6]中所有例题与课后习题,以及一些ACM竞赛题、其他课程的练习题等。

⑶状态模块:记录所有用户每次运行的状态,如:用户ID、问题编号、运行结果、内存耗时、代码长度、提交时间等。

⑷排名模块:对所有用户按照答题正确数从多至少排序,并显示名次、用户ID、昵称、正确数、提交次数与正确率。

⑸竞赛与作业模块:用作竞赛、作业与考试的发布。一次竞赛、作业或考试可以设置若干道题,并设置开始与结束时间,如图2所示(为206-207学年第一学期的C语言期末考试)。

图2竞赛与作业模块页面图

⑹管理模块:该模块只有管理员账号登录可见,主要功能有:题目的增删改查(一个题目包括题目的描述、输入输出描述、样例输入/输出与测试用例等内容)、竞赛作业的增删改查;重置普通用户的密码;题库的导入导出等等。如图3所示。

图3管理模块页面图

为了方便管理,本平台关闭了注册功能,所有学生账号统一由数据库导入,用户ID为学生学号,昵称为学生姓名,不可修改。这极大方便了任课教师查看学生完成作业情况、统计考试结果等等。

2ACM平台辅助C语言教学的途径

在C程序设计的教学过程中,能够使用到ACM平台的地方有很多。

⑴上机实验

在实验课上,可以使用ACM平台辅助实验教学。通过提交运行后的判题结果可以看出程序是否正确,省去了设计测试用例来测试程序的过程。这种竞赛机制平台的运用增加了课堂学习的趣味性。

学生上机练习时,使用该平台自动判题,可以帮助学生判断程序的正误。一般情况下,学生在学习C程序设计时还未学过软件测试类课程,缺乏设计测试用例的意识,往往一次运行得到正确结果就认为程序是正确的,这极有可能产生误导。例如某次编程中,有学生将“f(&t;b&p;&p;;&t;)”写成“f(&t;b,&t;)”,在一次运行后答案是正确的,该学生误认为可以用逗号代替逻辑与运算符,而这显然是错误的。如果在ACM平台提交该程序,肯定会得到“答案错误”的运行结果提示,这就可以帮助学生发现程序中存在的错误。

⑵提交作业

任课教师可以通过管理模块中发布竞赛作业的功能来布置作业。只需点击”添加问题”,然后录入标题()、问题描述(D)、输入/输出描述(Iput/Output)、样例输入输出(SplIput/Output),以及测试输入输出数据(TstIput/Output);也可以直接使用题库中的问题。然后点击添加作业,录入问题标号,以及作业的开始与结束时间即可发布。

在竞赛作业模块的“Std”页面可以直接看到每位学生的作业完成情况,如提交了哪些题,哪些题结果正确,哪些题提交了但没有通过等等。图4所示为某次作业完成情况。

图4某次作业完成情况

其中,绿色标签表示判题通过(Aptd,在ACM中简称为AC);紫色标签表示判题通过且用时最少,即首次AC;红色标签表示提交了但未通过;标签中时间格式的数字(格式为“时:分:秒”)表示从作业(或竞赛、考试)开始时计时到提交且判题通过所花费的时间;标签中括号里的负数表示提交次数(例如:-2表示提交了两次但均未通过)。

这种带有竞赛性质的作业提交系统极大激发了学生的学习兴趣,通过该平台可以及时了解自己或其他同学的学习情况:点击学号或姓名可以看到该同学做了哪些题,哪些题目提交正确,哪些题目正在解决中等等(如图5)。

⑶在线考试

传统的考核方法(笔试)不利于对学生编程能力的测试,可以采用上机测试作为期末考核的一部分。利用该平台可以方便的实施上机测试,只需添加一次竞赛/作业,而且可以即时看到考试结果,不需要教师运行任何程序,所有的判题都是在线的、自动化完成的。

3ACM平台辅助C语言教学的优势

采用ACM平台来辅助C语言教学有以下优点。

⑴自动化判断程序是否正确

一般情况下,学生在学习C语言之前并未学过软件测试类课程,对于程序运行结果缺乏测试的认知与方法,而OJ平台的自动化判题功能可以很好的解决这个问题。

⑵便于了解学生的答题情况

编程类作业的检查是一个费时又费力的工作。如果提交书面作业无法知晓学生是否真正上机操作过,且语法检查(尤其是难以区分中英文标点符号)、逻辑思维检查易有疏漏;而如果提交程序又需要一个个运行、测试才能知晓程序是否正确、是否存在漏洞,且程序测试本身工作量就很大,何况是几十个、甚至几百、几千个程序。

使用ACM平台来布置作业,教师通过该平台即可看到每个学生的答题情况,如做了哪些题,哪些题正确,哪些题提交了但答案错误等;也可以看到每道题的答题情况,如提交了多少次,正确率是多少等等,此外,在竞赛作业版块还可以看到所有学生的答题情况与排名,方便及时了解学生学习情况。

⑶利于培养学生的编程兴趣

实践证明,在采用该平台辅助C语言教学后,学生学习的积极性有了很大提升,至少一半以上的学生会超前学习、额外做一些编程题。例如,在本学期教学中,某章的编程作业一共只布置了9道,但是两个班的学生(共96位同学)有75%做了0道题以上,其中有十几位学生做了20道题以上,甚至有做了近50道题的。而在之后的教学中,学生的学习情况越来越好,特别是编程入门之后,不再局限于书本上的例题或习题,开始做一些题库里有意思的竞赛题,这对开拓学生的思维,激发学习兴趣以及学习其他课程是十分有利的。

4结束语

ACM平台有着自动化判题,及时反馈答题功能,利于培养学生编程兴趣,可以在实验课、日常作业、考试等教学环节辅助C程序设计教学。实践证明,采用ACM平台辅助教学后,不仅解决了教师检查编程类作业的难题,还为学生的程序设计类课程的学习提供了引导和助力,便于学生自主学习。在未来的教学中,我们将进一步大范围地推广运用该平台,使其更好地服务于学生的编程学习和练习。

参考文献(Rfrs):

[]祝昌宇,陈广贵从ACM竞赛谈计算机实验教学改革[J]实验

科学与技术,209(S):300-302

[2]辛中琦《C语言程序设计》教学方法的尝试与探讨[J]中小企

业管理与科技(下旬刊),2076

[3]戴丽萍,宋艳,张风彦,崔莹《C语言程序设计》课程教学改革

与实践[J]当代教育实践与教学研究,206:-3

[4]杨松涛,王斌,张海燕从ACM/ICPC竞赛探讨大学生的能力

培养[J]計算机教育,20024:6-8

[5]刘楠,孙国道,田贤忠ACM在线评判系统设计与实现[J]计

算机时代,2002:34-35,38

[6]谭浩强C程序设计(第四版)[M]清华大学出版社,200

文章来源于:计算机时代

浏览次数:  更新时间:2018-05-07 10:40:59
上一篇:基于Ionic的混合移动应用的研究与实现
下一篇:卡利堡推出厨艺机器人
网友评论《ACM平台在C程序设计教学中的应用》
评论功能已关闭
相关公文