普通本科程序设计课程的泛在学习应用研究

2018-01-31 07:49郑秋生王文奇刘凤华夏敏捷
计算机教育 2018年1期
关键词:程序设计编程竞赛

郑秋生,王 璐,王文奇,刘凤华,夏敏捷

(中原工学院 计算机学院,河南 郑州 450007)

0 引 言

程序设计课程是计算机专业的核心基础课程,对学生专业学习发展和就业都具有极为重要的意义,因此其教学质量非常关键,关于教学模式和教学方法的研究和探讨也一直吸引着各级教学人员的极大关注。总体而言,各种教学模式主要围绕两类:以培养计算思维为导向或者以培养应用实践能力为导向。具体教学方法上,可以划分为案例分析法、演示教学法、任务驱动教学法以及最近出现的慕课(MOOC)翻转教学法等[1]。这些方法各有特点,对提高学生学习兴趣和教学质量都起到了重要的作用。各种方法也都有一些共通的地方,主要目的还是提高学习兴趣,力争让课堂更有趣、更贴近实践(有用)。但大部分方法未对学生层次进行更为精细的划分:哪些学生适合兴趣引导?哪些学生适合严格督促?

普通本科院校学生的高考成绩较一般,学习习惯、理解问题的能力以及精英意识与强校学生相比有一定的不足。通常可以将学生划分为三大类:一类是能力较强、主动性较好的学生;一类是能力一般、学习愿望较强、需要帮助和推动的学生;一类是自我控制能力很弱、容易受干扰而在学习上投入极少的学生。笔者经常思考的问题是:如何让能力强的学生更能发挥?如何推动第二类向第一类靠近?如何降低第三类学生的比例,让更多的学生对程序设计感兴趣?

泛在学习模式不仅强调个体享受无时无处不在的学习服务,更强调个体学习的差异和情境,为网络学习空间的创新应用提供了良好的视角与契机[2]。另外,由于程序设计课程普遍压缩学时,课内实践有限,更适用泛在教学模式。笔者针对普通本科院校学生特点,吸取了多种有益的泛在教学经验[3-4],明确提出以兴趣和压迫作为不同学生的教学模式,打破学习的时空局限,提高训练量和力度,通过随时的更紧密的教学关系,为第二、三类学生提供更多帮助和鼓励。这是泛在学习模式的实际应用,也体现出了其核心优势。

1 以编程训练为中心的泛在学习模式

普通本科院校学生更关注就业,因此对程序设计课程大多数抱有较高的学习愿望,但学习能力和习惯有一定差异。因此,笔者根据学生的实际情况,以加强编程训练为目标,以兴趣+逼迫作为驱动,以多种互联网手段作为辅助,为学生打造了跨越时空界限的丰富的泛在教学模式,见图1。

1.1 打破时空界限,随时随地进行编程训练

程序设计课程从根本上说是实践型课程,只有尽可能多的训练才能提高编程水平,而正常课时有限,甚至有一定压缩,教师只能增加课外上机时间,但也存在实验室不可用或者辅导时间有限等各种问题。

图1 以编程训练为中心,综合兴趣与逼迫的泛在学习模式框架

ACM/ICPC竞赛采用的在线判题系统(学生提交代码后,系统自动运行并给出争取与否的即时判决),为学生随时随地进行代码训练提供了很好的解决方案。很多高等院校都采用这种方式进行C语言等程序设计课程的改革,并且取得了非常好的效果[5]。

只要有课余时间,学生就可以在宿舍、图书馆甚至家里进行代码练习。笔者从2008年参加河南省大学生程序设计竞赛开始,在ACM/ICPC竞赛及网站建设方面积累了较多的经验。因此,笔者采用在线判题系统作为泛在训练的手段。

1.2 既重视兴趣培养,也兼顾部分能力一般学生的逼迫式学习

ACM/ICPC竞赛形式比较适合能力较强的学生,能够充分调动学生的积极性,培养钻研的学习习惯和兴趣,但对于部分能力一般的学生而言,题目稍微有点难度就会造成畏难情绪,多次出错后会逐渐失去训练的动力和兴趣。另外,由于训练可以不在教师管理范围内,学生容易产生惰性甚至放弃。

鉴于此类情况,笔者将C语言课程以及C++课程都改成了ACM/ICPC竞赛形式上机考试,即所有题目设计为程序实现题,利用在线判题系统支持代码提交及即时判决,从而逼迫有畏难情绪的学生通过请教、讨论等方式多做题,客观上增加了学生的训练力度。

1.3 随时随地进行阅读和学习

慕课(MOOC)教学是近几年教学改革的重点,笔者也建立了自己的慕课课程,将各章知识点碎片化,将多种调试方法做成视频发布和监督学习。此外,通过慕课系统发布和搜集作业,监督学生学习进度,采用翻转课堂的方法做了3~4期的示范教学。

1.4 利用互联网工具保持教学紧密联系

为了给学生学习和训练提供更多的帮助,笔者建立了程序设计讨论的QQ群,邀请ACM/ICPC竞赛训练队的学生作为助手,负责随时解答学生关于ACM竞赛类型题目以及语言本身的各种问题。通过这些方式,教师与学生的联系已不仅仅是专门的课堂或课后答疑时间,而是随时随地交流和讨论。

2 程序设计课程的泛在学习模式实践

2.1 在线判题系统(OJ, Online Judge)

训练系统基于NUAA的开源系统构建,题目设计主要为教材课后习题,并部分参考了杭州电子科技大学OJ和郑州轻工业学院OJ的简单题目,适合跟随教学进度进行训练,部分题目列表见图2。

图2 在线判题系统的题目列表

系统除了自动判题,还包含排名、统计等很多功能。特别是排名,对提高学生兴趣起到了很大的作用,也出现了很多学生刷题直至凌晨的情况,见图3。当然为了学生健康,笔者还是对学生进行了劝导。

2.2 慕课MOOC

MOOC教学系统是学校与超星公司合作开发的,包含教学视频、作业、考试、讨论等诸多内容。C++课程的MOOC系统首页及学习情况统计见图4、图5。MOOC系统主要用于课前课后的预习和复习以及翻转课堂(数组部分),在学生自主和随时随地学习方面起到了重要作用,也对课后训练起到了很好的支撑作用。

图3 在线判题系统的用户排名及投送情况

图4 MOOC系统的首页

图5 MOOC系统中学生登录学习的情况统计

2.3 交流群

为及时跟踪学生学习情况,及时听取反馈和回答问题,保证课后随时随地交流,笔者为15级、16级学生建立了C/C++学习训练的QQ群。

不仅教师和学生可以交流,群中加入了校ACM竞赛训练队员以及部分高年级学长,在学生学习训练过程中提供了强有力的辅助。一旦经过初期的适应,同级学生之间的交流讨论更加频繁和紧密,其效果远远超出了单一的教师答疑。

2.4 强迫措施(机试)

部分学生自我控制力较弱,易受游戏、手机、网络电影电视的影响。因此,只能通过不断强化考试压力,逼迫其转向学习。

考试形式采用了ACM竞赛同样的系统,即必须投题准确无误才可得分,从而逼迫学生不得不练习。此外,为保证考试安全,笔者修改了开源ACM竞赛代码,加入了IP检查、重复代码检测、生成多套试题、百分制分数及考试结果导出等,使开放的ACM竞赛平台能够适用于考试要求。图6是计算机学院15级学生考试后的统计分析结果。

图6 机考结果的成绩分布及分析

2.5 激励措施(竞赛)

为提高学生编程兴趣、活跃学习气氛,中原工学院每年针对全校各专业举办程序设计竞赛。此外,还组织参加河南省大学生程序设计大赛、ACM/ICPC区域赛以及蓝桥杯、CCF、CSP等,在带动学习兴趣、鼓励编程方面起到了明确的推动作用。

3 教学效果检验

3.1 评价量表及分析

程序设计类课程通常给人的印象是难学、枯燥,为此很多教学方法采用应用驱动、案例分析等,目的都是为了提高学习兴趣。因此,笔者在设计检验指标时,着重考虑了学习兴趣的影响,兼顾后续影响因素。其中,在设置学习兴趣评价时,参考了王晓东[6]和邓锐[7]的兴趣量表,从课堂学习情绪、注意力、参与度、思维活跃度、课外交往能力5个方面[8],选择了10个条目(由于条目内容完全来自上述2篇文献,这里不再赘述。)。此外,在后续影响方面编制了4个条目以及2个调查问题(未列入统计)。所有条目采用李克特5点量表进行评价。采取抽样调查的形式,在计科、网络、软件3个专业,每专业抽30人,均匀分布于期末考试不同的成绩范围,见表1。

表1 教学效果评价量表之后续影响评价

评价统计结果中总得分超过50的人数达到73人,占到总样本的81%左右,表明绝大多数学生在兴趣和实际能力方面都达到了较好的效果,收获了继续编程的信心。

3.2 参加各类竞赛项目

2015—2016学年一年级学生共参加校程序设计竞赛、河南省程序设计竞赛、ICPC区域赛以及CCF计算机软件能力认证等合计60多人次,获得省赛三等奖和ICPC区域赛现场赛资格(1队)。此外,参加校内各项目组进行开发训练的学生达到50%以上。

4 结 语

为提高学生对程序设计类课程的兴趣和实践能力,笔者展示了应用泛在式学习模式进行在线训练、MOOC学习、讨论群等方面的实践。考虑到学生类型的因素,通过机考、竞赛等进一步增强学生的学习动力。实践结果表明,该策略组合有效提高了学生的兴趣,促进了广泛的编程训练。当然,该策略也存在诸如学生时间有限,如何分配时间进行各项目学习的问题。这些都将在今后的实践中继续完善。

[1]丁海燕. 高级语言程序设计课程教学方法的分类与探讨[J].云南农业大学学报, 2015, 9(5): 93-97.

[2]杨玉宝, 吴利红. 泛在学习视角下网络学习空间的创新应用模式[J].中国电化教育, 2016(7): 29-35.

[3]王宏, 王萍. 基于泛在学习环境的主题探究学习案例设计与实践[J].中国电化教育, 2016(10): 126-132.

[4]林晓凡. 一种提升学生21世纪技能的路径:基于混合式移动学习活动的实证研究[J]. 中国电化教育, 2016(11): 39-44.

[5]吴舜歆, 梁宝兰. OnlineJudge在C++程序设计课程实践教学中的应用[J].高教学刊, 2016(9): 164-167.

[6]王晓东. 算法与数据结构学习兴趣影响因素分析[J]. 计算机教育, 2010(12): 73-76.

[7]邓锐. 计算机专业学生学习兴趣量表设计与分析[J]. 现代计算机, 2008(2): 117-119.

[8]牛亏环. 学习兴趣研究进展分析[J]. 教育学术月刊, 2014(10): 33-36.

猜你喜欢
程序设计编程竞赛
2020丝绸之路数学竞赛
医学专业“Python程序设计”课程教学改革总结与思考
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
创新思维竞赛(3)
高职高专院校C语言程序设计教学改革探索