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

2018-05-02 03:25刘宇欣周秋霞
计算机时代 2018年3期
关键词:C程序设计

刘宇欣 周秋霞

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

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

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

Application of ACM platform in C programming teaching

Liu Yuxin, Zhou Qiuxia

(School of Information Engineering, Linnan Normal University, Zhanjiang, Guangdong 524048, China)

Abstract: The C language program design course is one of the introductory courses in the computer specialty. The strong practicality of the course requires the students to program and exercise diligently. ACM online test platform has the advantages of automatic judgment, statistical data and so on. It provides a garden for students' autonomous learning. And the ACM platform can be applied to many links of C programming teaching. This paper introduces the ACM platform modules to display its functions, and taking experimental courses, assignments and examinations as examples to show the ways and advantages of ACM platform aided teaching. Practice has proved that the use of ACM platform to assist teaching can really improve students' learning initiative, and obtain good teaching effect.

Key words: C programming; ACM platform; judge system; teaching assistance

0 引言

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

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

1 ACM平台介绍

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

图1 ACM平台页面图

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

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

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

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

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

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

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

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

图3 管理模块页面图

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

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

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

⑴ 上机实验

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

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

⑵ 提交作业

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

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

图4 某次作业完成情况

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

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

⑶ 在线考试

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

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

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

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

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

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

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

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

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

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

4 结束语

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

参考文献(References):

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

科学与技术,2011.9(S1):300-302

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

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

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

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

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

培养[J].計算机教育,2010.24:16-18

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

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

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

猜你喜欢
C程序设计
基于团队模式C程序设计课程翻转课堂的研究
“互联网+课堂”下的《C程序设计》教学改革之探索
以培养计算思维为核心的C语言实践教学设计
C程序设计趣味教学初探
C程序设计课堂趣味性教学初探
《程序设计语言》课程过程化考核总结与探讨
信息管理专业C程序设计课程教学方法探索
接轨全国等级考试,探讨高校C语言课程教学改革
论中职生C程序设计学习兴趣的培养
C程序设计课程教学探讨