结合OJ的C语言程序设计的多层次个性化教学方法及实践

2021-12-24 07:13刘利赵义霞
电脑知识与技术 2021年29期
关键词:个性化教学C语言程序设计

刘利 赵义霞

摘要:针对传统C语言程序设计教学难以及时区分所有学生的学习层次,提出了一种通过OJ平台及时区分学生层次,进行个性化教学的方法。文中详细描述了多层次个性化教学方法,分享了该方法涉及的题目集。最后通过对比不同教学对象,展示了所提出教学方法在教学中确实能提高学生的编程能力。

关键词:C语言;在线判题系统;程序设计;个性化教学

中图分类号:TP311  文献标识码:A

文章编号:1009-3044(2021)29-0189-03

Multi-level Individualized Teaching Methods and Practice Combined with OJ for C Language Programming LIU Li, ZHAO Yi-xia

(Huizhou University School of Computer Science and Engineering, Huizhou 516007, China)

Abstract: It is difficult to distinguish the levels of all students in traditional C language programming teaching, and teach them with different method for different levels of students. To solve this problem, this paper put forward a method of multi-level personalized teaching method which combined with OJ platform. This paper described the multi-level personalized teaching method in detail, and shared the problems set involved in this method. Finally, this paper showed that the proposed method can improve students' programming ability by comparing different teaching ects.

Keywords: C Language; OJ platform; programming; personalized teaching

1引言

在当前互联网教学资源丰富,以学生为主体进行教学的大背景下,如何有效地利用线上丰富的教学资源,并结合线下课堂教学激发学生自主创新学习,最终实现个性化教学就显得尤为重要[1]。程序设计能力是高等学校计算机类专业学生必须具备的重要能力之一[2]。为了培养学生的程序设计能力,高校在设置专业培养方案时都会设置一系列课程,包括《C語言程序设计》《面向对象程序设计》《Java程序设计》等语言类课程以及数据结构、算法分析与设计等课程。这些课程教学均以培养和提升学生的程序设计能力为目标[3]。因此本文以《C语言程序设计》为例,探讨如何结合丰富的网络资源,实现个性化教学。后续其他以提升学生程序设计能力为目标的课程,都可以参考该方法。

2传统教学方法存在问题

传统《C语言程序设计》课程的教学多数采用课堂理论教学,课后布置作业或者实验内容。实验内容和课后练习基本以实验报告或者程序源代码的形式提交,由于每次作业或者实验都是在提交给教师批阅完之后才会对作业或者实验进行讲解,因此学生在完成实验过程中无法确定自己所完成实验是否正确,无法获得实时的评判反馈。此外,由于教师只能完成有限的作业或者实验的批阅和检查工作,因此无法给学生布置大量的课后练习或者实验。因此学生课后完全靠自觉去进一步训练提升自己的程序设计能力。由于缺乏更高一级的目标,学生在自主学习过程大都会出现迷茫,不清楚自己需要学到什么程度,会为学生自主学习带来困难,导致学生学习过程缺乏主动性。这些问题都导致在教和学的过程,无法实现因材施教的个性化教学。

为解决这些问题,本文作者在近年的教学中引入在线判题平台,辅助完成程序设计课程的课后练习和实验。在线判题平台可以实时反馈学生提交程序是否正确,同时可以实时看到自己做题情况的排名,且学生可以结合自身情况选择题目。教师可以选择不同难易程度的题布置给学生,并能实时查看学生做题情况。借助在线判题平台,教师可以通过平台上学生的做题情况,实时获取学生学习状况,并给予及时的指导,此外相对于学生在线判题平台类似一名实时在线教师,学生可以结合自己学习状况做题,从而达到教师与学生双方个性化教/学的目的。

3结合OJ平台的多层次个性化教学

Online Judge 系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。结合各OJ平台的特点,本文选用了 NEUQ、PTA]、vjudge来辅助《C 语言程序设计》教学。

3.1结合OJ平台教学方法

NEUQ、PTA 和vjudge三个平台各自具有不同的特点。其中NEUQ包含有C语言的基础题,以及谭浩强所编著的《C语言程序设计》课后习题,是本文作者选择该平台作为C语言程序设计辅助教学的重要原因。PTA平台主要针对教学,含有多门课程的题目,且题型丰富,其中C语言程序设计的题目尤为丰富。该平台判题反馈中可以看到通过了多少测试点,可以部分得分,比较合适初级接触编程的同学。教师用户可以在该PTA 建立班级用户组,并为用户组指定题目集,每个题目集下可以看到学做题情况,排名等,更适合于教学。vjudge是一个集合了多个OJ的平台,该平台通过爬取获得其他OJ台的题目,因此可以在vjudge提交多个OJ平台题目。教学过程可以利用该平台建立用户组,从多个OJ平台挑选适合教学的题目,用户组中的学生提交题目后按照ACM判题机制进行排名,和PTA一样有利于激发学生自主学习。据三个平台的特点,本文将其应用于不同教学阶段,具体如表1所示。

教学过程主要在PTA上发布课后练习和实验,同时选用 NEUQ平台上教材的课后习题作为实验或者课后练习。vjudge上的题大部分比较综合,所以主要应用于后期,进一步提升一些学习能力强的学生的编程能力。

3.2教学OJ平台题目集

本文作者经过多年教学经验,总结了各阶段教学平台的题目集。PTA平台题目集的分享码如表2所示,用户可以直接用表中分享码在PTA建立题目集。

NEUQ平台主要用于谭浩强教材的课后系统布置给学生,题目编号位于1036-1086。该平台编号为1002-1015,以及       1028-1034也是一些C基础的题目,同样可用于教学。此外在“竞赛&作業”栏目下的“新手编程入门百题斩”的内容可供学生课外自主学习。

vjudge主要在教学后期,讲完循环或者数组后,针对一些学习能力较强的学生布置题目。表3是教学过程所建立的题目集,其中基础训练主要选自HDU。

3.3多层次个性化教学流程

本文提出的多层次个性化教学方法的教学流程如图1所示。第1周在PTA发布表2的练习题目集。实验内容则是结合实验进度发布表2的实验题目集和布置 NEUQ上的题目等内容。实验内容分必做题和选做题,这些题目可以是OJ平台的(表3的PTA实验题目集),也可以是教师原创性题目。总体以 OJ平台为主,因为OJ平台可以实时判题。教师原创性的题目可以是一些有趣的作品类题目,目的是弥补OJ平台输入输出过于简单,没有考虑到实际使用程序的用户体验。必做题是要求所有学生完成,而选做题则是由学生选做,但是会加分,以此激发学生做题积极性。本文作者在超星平台共享了实验的具体内容,感兴趣的读者可以通过文献[6]链接中的教学资源中获取。在教学进度讲完循环或数组,或者已有学生完成PTA所有练习题目集时,可以在vjudge发布表3的内容。

3.4学生的层次划分及个性化教学

本文接下来的描述通过A、B、C来标注学生层次,A对应学习及编程能力强的学生,B对应中等,C对应较弱的学生。教学第 1周在PTA发布表2所分享的练习题目集供学生课后练习后,可以通过题目集的做题情况发现学习比教学进度快的学生(A),这些学生能自主学习课程。结合教学进度发布实验内容后,会发现每次都能完成实验所有题目的学生(A);必做题无法独立完成的学生(C);完成必做题的学生(B);还有一部分完成必做题后,能完成部分选做题的学生,这些学生可以根据情况划分为(B或A)。在vjudge发布表3的内容后,主要由学生选做,可以逐个邀请A级别的学生去做vjudge的题目。

对于A、B、C三个层次的学生,教学过程采用不同方法,教师的主动性放在A和C。对于A和C要主动联系引导他们。A 层次学生,对于这些学生重点给他们提供更多的练习题目,同时注意引导他们优化自己程序,当vjudge题目发布后要主动邀请他们去做题。C类的学生是属于学得不好的学生,要主动联系他们,分析原因,根据不同原因采用不同方法,逐渐引导他们成为B。对于B类学生,以他们主动为主,这些学生教师不用主动联系引导他们,但是他们大部分会比较主动问问题,所以对于这类学生教师要做到及时回答他们在完成练习和实验中的问题。

4教学实践及效果分析

本文提出的教学方法,是在教学过程不断实践总结而出,接下来给出最近一学期的采用不同方法的教学效果对比。下面将教学对象分为①、②、③三组,分别对应1个班级的学生,年级共有11个班级,这里3个班级(组)分别选自采用不同方法的教学组。其中①组是利用了三个OJ平台资源,且使用了本文的教学方法;②组主要使用前NEUQ 和PTA两个OJ平台,使用的题目集和A组基本一致,②组的所有题目集是按照教学进度发布;③组主要使用PTA平台,并没有采用统一的题目集。本文对比了学生参加年级新生赛的成绩和期末考试成绩,新生赛是在讲完数组,离期末4周左右举行,2次测评都是采用 PTA 平台。

从表4可以看出,①组的成绩高于②组,②组成绩高于③组。由此可见本文提出的教学方法确实可以及时发现A类学生,同时由于给予了他们自主学习平台,加上教师及时引导,所以在新生赛时①组进入前30的最多,此外由于能针对不同学生采用不用方法引导,新生赛和期末考试的平均分①组也是最高。②组的学生只是按进度发布任务,没有为A类学生提供足够的学习平台,此外也不能及时区分ABC三类学生进行个性化引导,因此新生赛和期末考试平均成绩都弱于①组。③组学生的教师只是利用PTA平台,自主选题布置给学生,可能在题量和难易程度方面缺乏经验,因此③组学生表现最差。

5总结

本文是作者在多年利用OJ平台进行教学的基础上,以C语言程序设计教学为例,总结的一种多层次个性化教学方法,且给出了具体教学时需要用到的具体题目集。该方法可以供一些初次进行C语言程序设计教学教师使用,也可以给经验更富的教师提供教学参考。通过教学实践表明本文的方法可以进一步提升学生的编程能力。如果在后续的教学中,包括其他语言的程序设计、数据结构、算法类课程继续结合OJ进行个性化教学,能更好地提升学生的程序设计能力。

参考文献:

[1]李薇,申小玲,王磊,等.敏捷式教学的探索与实践[J].计算机教育, 2019(9):129-133.

[2]任浩,叶常春,肖政.任务驱动教学法在程序设计课程中的实践与分析[J].计算机工程与科学,2019,41(S1):109-113.

[3]张寒冰.C语言程序设计智能化教学改革分析[J].电脑知识与技术,2021,17(2):91-92+96.

[4]周翔, 刘晓强. 敏捷式教学在课程中的研究与实践[J].信息系统工程, 2013,11(11):145-145.

[5]石文兵, 张顺香, 孙克雷,等. C语言程序设计智能化教学改革[J].通化师范学院学报, 2020,41(4):113-117.

【通联编辑:王力】

猜你喜欢
个性化教学C语言程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
高中体育特长生培养策略研究
浅谈儿童音乐教育方法
创新高中语文教学模式,实施才情个性化教学
网络环境下的商务英语课程资源库的建设研究
PLC梯形图程序设计技巧及应用
论子函数在C语言数据格式输出中的应用