数字资源共建共享下程序设计课程教改研究

2018-11-26 09:32张沫
电脑知识与技术 2018年22期
关键词:教学改革

张沫

摘要:數字化教学资源共建共享是促进高等教育改革与教学质量提升的有效手段。ACM在线编程测试平台,是对数字化教学资源共建共享战略的有效运用之一。该文针对程序设计类课程教学中存在的问题,给出了基于ACM平台的程序设计类课程理论和实践教学方法,在实际教学中收到了较好的教学效果。

关键词:数字化教学资源共建共享;ACM;教学改革;程序设计课程

分类号:TP312 文献标识码:A 文章编号:1009-3044(2018)21-0081-02

Abstract: The construction and sharing of digital teaching resources is an effective way to promote the reform and teaching quality of higher education. ACM online programming evaluation platform is one of the effective applications of digital teaching resources construction and sharing strategy.In view of the problems in the teaching of program design course, this paper gives the theory and practice teaching method of program design class based on ACM platform, and has received better teaching effect in practical teaching.

Key words: digitalized teaching resources construction and sharing; ACM; teaching reform; programming course

1引言

高等院校开设的程序设计类课程一般包括 C语言、 Java程序设计、 C++等,这些课程旨在培养学生的逻辑思维能力和程序设计能力,为后续专业课程的学习奠定基础。以 C程序设计为例,该课程具有运算符丰富、数据结构丰富、语法限制不太严格、程序设计自由度大等特点, 正是由于C语言的这些特点,加之该课程一般是在大一开设,学生没有编程基础,很多学生“谈 C色变”,导致教学效果不佳。因此如何提高教学质量是编程类课程面临的严峻问题。

2 传统教学存在不足,教与学“左冲右突”

2.1学生被“填鸭”,学而不佳

编程类课程因开课课时有限,理论内容较多,导致教师不得不把课堂大部分时间放在理论宣讲上,留给学生实践的时间很少,而学生课后没有主动学习的热情,“灌输式”、“填鸭式”的教学使得学生偏离“主动”学习的主题。

另外,传统的教学在学生完成实验内容的前提下,学生没有进一步深入探索的平台,最终会影响整体教学质量。

2.2教学手段单一,“碾压式教学”使得学生疲于应付

在以往的教学过程中,学生存在“前期热情如火,后期学习乏力”的状况,原因之一是编程类课程较抽象,消磨了学生持之以恒的韧性,另一个原因在于教师, C语言等编程类课程的教学内容过于侧重基本原理和基础应用,课堂上教师一味的“碾压式教学”,忽略了学生理论知识基础差的特点。在实践教学中,教师教学方法单一,只是套搬一些经典传统的实例来进行讲解和验证,使得不少学生在学完课程后,仍然不能“独立行走”,不能独立编写代码,或者“寄生”于教师所给代码,直接复制粘贴运行,根本看不明白、写不出一段自己的程序,与实际应用脱轨,从而致使学生不爱听课,遇到不明白的地方就主动放弃,达不到理想的教学效果。

2.3实践教学环节松软,流于形式

编程类课程因总课时有限而导致实践学时很少,以笔者所在学校为例,2017年级课程一共 72学时,其中基础理论 36 学时,实验上机 36 学时。 在有限的时间里,学生实践以“教师为中心”。另外,学生的学习不够“主动”,被动性接受知识的习惯使得学生无法从互联网上搜集到优秀的学习资源,需要教师在实验课程中给予引导,但教师精力有限,往往无法在课堂解决所有学生的问题。由于缺乏交流平台,师生和生生之间很难形成良好的沟通交流机制,导致实践效果不理想。

2.4考试机制不合理,仅仅“为考而考”

传统教学只是从平时出勤、课堂作业、实验报告、期末考卷等方面考核学生学习效果,而期末卷面考试则往往以客观题为主,不能把编程能力作为考核的手段,这将导致期末考试不能体现学生的编程能力和解决问题的能力。这种考核方法过多的关注“形成性评价”,忽略了“实验课程的期末考试应该通过实验操作来衡量”这一标准。

3 数字化优质教学资源共建共享环境下编程类课程教改探索

数字化教学资源是指经过数字化处理,可以在计算机或网络上运用的教学资源。数字化教学资源是教育信息化的产物,是推动教育教学改革、构建新的教学模式的基本前提,包括网络课程、声像资料、电子教案、数字化素材库、网络在线学习平台等。 为了提高计算机专业学生编程能力而开发的ACM在线测试平台,则是对数字化教学资源共建共享战略的有效运用之一。该平台是一个在线练习和竞赛平台,主要功能可分为用户管理、题库管理、在线提交、在线比赛及在线排名、在线讨论等。 具有以下特点:

1)题目涉及面广,对学生要求高。

ACM平台题目涵盖包含排序、查找、递归、分治等的基本算法、图算法、数据结构、搜索算法、动态规划、数学问题、计算几何学及综合类算法题目,算法涉及面广;从难易程度上分为水题(简单题)、中难题和高难题,师生可根据每道题后标注的成功率来判断题目的难易程度,在教学中利用该特点,可实现分类分层教学。

2)磨练学生的创新和团队协作能力。

该赛事采用三名在校生组队的形式,共用一台电脑,题目全英文,在五个小时内使用 C、 C++或 Java中的一种编写程序,提倡创新和团队协作,鼓励学生在构建全新的软件程序时尽情发挥创意,帮助学生检验自己在强压力下的工作能力。

3)磨练学生的抗高压能力。

该平台均对每道题目的运行时间和内存消耗有很高要求,用以考验学生的算法优越性;设置大量的程序测试用例,用以检验学生考虑问题的全面性;对程序的返回输出结果的格式要求极高,用以考验学生编写代码的严谨性;对一道题目的总提交次数采用罚时的方法,每多提交一次,运行总时间上加若干分钟的方式,用以考验学生解决问题的速度和能力。这样的考核机制对学生的抗压能力有很高的要求,长时间在该模式下教学,能够提高学生理解和解决问题的速度。

4)采用在线评测系统,追求高质量程序。

该系统提供了大量练习和竞赛题目,对每道题目设置大量的测试用例。学生在线提交程序代码,系统将从程序的正确性、程序运行总时间、内存耗费等各方面检测程序代码, 并在结果页面上给出程序测评结果,学生可根据测评结果进行相应修改。这样的评价机制考验学生的分析问题能力、综合利用知识点的能力,算法优化能力、内存使用和控制能力。

4 ACM竞赛模式在程序设计课程中的教学实践研究

笔者从2009年开始作为领队带领学生参加浙江省ACM竞赛,2010年开始尝试将ACM竞赛模式运用到C和Java课程的教学中。

4.1基于ACM的理论式教学

1)任务驱动

针对某些理论教学内容,在ACM平台上选择对应的2-3道简单题目,让学生去编程,这样可以用实践编程来强化对理论内容的理解。

2)翻转课堂

针对某些较难的知识点,例如指针,可以提前写好代码,在课堂开始时让学生理解并在 ACM平台上测试,而后再强调理论内容的重难点,从而实现“翻转课堂”。

4.2基于ACM的实践教学

理论教学完成之后,针对理论讲解选出若干题目,让学生在 ACM平台上去實践,学生提交程序后, ACM平台会给出判断结果,学生可以根据结果来判断程序的正确与否,省去学生自己设计测试用例来测试程序的过程。一般情况下,学生在学习 C程序设计时还未学过软件测试类课程,没有设计测试用例的经验,往往认为程序正确的运行一次就判断该程序是正确的。例如某次编程中,某学生将“if(x[y x[z)”写成“if(x[y,x[z)”, 运行一次的答案是正确的, 该学生误认为“逻辑与运算符 ”可以用“逗号”代替, 而这显然是错误的。如果在ACM平台提交该程序, 肯定会得到 “WrongAnswer” 答案错误的运行结果提示, 这就可以帮助学生发现程序中存在的错误。

4.3基于ACM的课程教学优势分析

1)分组教学和协作式学习:在编程类课程的日常教学中,借助 ACM测试平台,采用三人一组,指定一名同学作为组长,负责小组内其他两名成员的互助学习,该种形式的教学既提高了学生团队协作能力,又实现了分组教学,有利于学生职业素养的培养。

2)分级分层教学: 在 ACM在线平台上,容易题和较难题会有明确的区分,例如杭电 ACM平台,11页之前是英文题,11页之后是中文题,学生学习起来能有一个循序渐进的过程,有利于学生的学习;学生的基础和能力层次也有所不同,在实际教学中,对不同的学生给予不同难度的题目,从而实现分级分层教学。

3)即时实践,解放教师: ACM平台有海量题目,可以提供给学生随时在线做题,题目完成进行提交,测试平台会给出是否成功的反馈,能有一个立竿见影的效果,还提供 discuss讨论区,各路大神对题目进行针对性探讨,这个学习过程不需要任课教师的参与,从而解放了教师。

4)激发学生兴趣,提高学生学习热情

近几年的教改实践表明,采用 ACM平台辅助编程类课程教学后,学生的学习积极性有了显著提高,大部分学生有了超前学习、额外做一些编程题的意识。例如,在本学期的 C语言课程教学中,对“选择结构”这一章节的编程作业笔者共布置10道题目,但三个班的116名学生中70%的学生做了20道题以上,做题量最高的同学甚至达到了40题。而在之后的各章节的教学中,学生的学习兴趣越来越浓,他们不再局限于书本上或教师给的例题和习题,而是尝试做一些平台上难度较高的题目,这对激发学生学习兴趣、培养学生编程能力,以及学习后续课程都是十分有利的。

5 结束语

多年实践结果表明, 采用ACM平台辅助编程类课程进行教学, 既能在一定程度上解放教师,又能激发学生学习热情,引导学生自主学习。因此,我们将更深入地推广运用该平台, 使其能更好地提高编程类课程的教学效果。

参考文献:

[1] 刘宇欣,周秋霞.ACM平台在C程序设计教学中的应用[J].计算机时代,2018(3):66-69.

[2] 田仲富,刘楠,李桂英.高校优质数字化教学资源共建共享有效策略研究[J].科教文汇,2018(1).

[3] 李环.基于ACM竞赛的程序设计类课程教学改革研究[J].计算机教育,2016(3).

[4] 徐新爱.基于学科竞赛的《C语言程序设计》课程教学改革研究[J].西南师范大学学报(自然科学版),2015(9).

[5] 林金珠,侃天伟.基于ACM-ICPC竞赛的C语言课程教学实践[J].安庆师范大学学报(自然科学版),2017,23(1).

[6] 戴丽萍,宋艳,张风彦,崔莹.《C语言程序设计》课程教学与实践[J].当代教育实践与教学研究,2016:1-3.

[7] 王晓娜,刘素转.C语言程序设计课程教学改革研究与实践[J].课程教育研究,2018(1).

[8] 王兴国.基于互联网+的数字化网络教学资源共享应用研究[J].科技经济导刊,2017(4).

【通联编辑:王力】

猜你喜欢
教学改革
完全学分制下选课管理的思考与实践
金工实习教育对工科院校创客教育影响分析
新形势下小学语文教学方法研究