APP下载

基于在线开放课程+OJ的程序设计类课程教学模式探索与实践

2020-05-16陈卓艳仇丽青

软件 2020年4期
关键词:程序设计编程程序

陈卓艳,仇丽青

(山东科技大学 计算机科学与工程学院,山东 青岛 266590)

0 引言

程序设计类课程是计算机类专业的专业基础课,是数据结构、操作系统等计算机核心课程的前导课[1]。程序设计能力是高校理工科学生,特别是计算机类专业学生所应具备的基本能力,尤其是当今超级计算、大数据和云计算风起云涌的时代,对于高校学生程序设计能力的培养提出了更高层次的要求。

然而,目前程序设计类课程教学存在的主要问题是[2]。

传统教学模式存在“重知识、轻技能,重语法、轻思维”的弊端,课程之间无法达到无缝衔接。

学生对于程序设计的理解水平、应用能力是千差万别的,单一的教学模式无法适应众多学生的需求。

学生无法及时获得学习效果反馈,缺乏在编程中的自我判断能力。

传统的教学中,师生的互动交流较少。一方面不能很好的发挥学生的主观能动性;同时,教师对学生的学习情况掌握不足。因此,学习的效果大打折扣。

2015年4月,教育部下文就“关于加强高等学校在线开发课程建设应用与管理”,提出了若干任务。2018年1月15日,教育部召开新闻发布会,推出了首批490门“国家精品在线开放课程”。在线开放课程,可以为教师开展线上线下混合式教学,为学生进行自主学习提供支持服务。在线开放课程,对促进课程教学改革与创新,提升教学质量,降低教育成本,促进教育公平起到重要作用[3]。

除了在线开放课程以外,针对程序设计类课程的程序编程实践的需求,教学团队自主研发了程序在线评测系统SDUSTOJ,该系统可对用户提交的程序源代码进行自动、实时的在线评判并给出错误提示,包括对程序输出结果、格式、运行时间、占用内存资源等的判别[4]。

在线开放课程对于专业教学团队建设、学生学习方式转变、课程教学模式改革、考核评价方式改革、优质教育资源共享等方面有着积极的促进作用;而将OJ系统引入到程序设计类课程教学中,可以构建“课内实验—课外作业—综合实践—科技竞赛”多层次的实践教学链[5],大大提高学生的实践能力。

实践证明,在线开放课程和OJ系统相结合,能有效促进程序设计课程的教学质量。

1 教学模式设计

教学团队开展在线开放课程和 OJ相结合的混合式教学模式[6],其教学模式如图1所示。

图1 在线开放课程+OJ混合式教学模式Fig.1 Mixed teaching mode based on online open course + OJ

1.1 网络平台

网络平台是在线开放课程的重要支撑,其包含的教学资源有:课程简介、教学大纲、教学日历、电子课件、电子教案、课程视频、课后作业和学习讨论等。在课程的预习环节、导入环节和巩固环节,学生利用电子课件、课程视频、学习讨论等资源完成课程学习,而教师则可通过课后作业、在线讨论、学习评价等手段,了解学生的学习情况,并对课程进行完善。

1.2 教学活动

教学活动采取“线上+线下”的混合式教学新模式,该模式已成为教育教学发展的基本趋势。所谓“线上”教学,是指教师利用网络教学平台发布教学资源,给学生提供课件、教学视频、练习题等,学生充分利用课外时间完成知识的学习,该阶段应当在课前完成;而“线下”教学,则是教师通过各种教学手段完成知识的内化,由传统课堂的教材内容的讲解转变为教学重点、难点的深度解析,进行课堂引导和互动,将以老师为主体的传统课堂变成以学生为主体的高效课堂。老师由原来的“主演”转变角色为“导演”,学生则转变角色为课堂的主人。角色的转变,将大大激发学生的学习积极性,突出学生的主人翁意识。

1.3 教学评价

传统的程序设计类课程考核,更注重期末考试结果,存在期末一考定成绩的片面性,无法对课程展开全面的评价。团队改革课程考核方式,采取“过程考核+期末考核”和“课堂考核+课下考核”相结合的方式,建立以注重学习过程为主的全面、科学的评价体系。为此,将平时成绩和期末成绩的比例,由原来的30%和70%调整为40%和60%,目的是强调过程考核。

过程考核采取“线上+线下”考核相结合的方式,线上考核主要包括:实验,作业,讨论参与频次和质量等;线下考核主要包括:出勤,课堂活动等。期末考核采用学院统考,机试形式,全部采用编程题,秉承“共性+个性”理念,同一学院的所有专业统一题目,不同学院的根据学生特点可作答“个性”题目。

2 课程实践教学方法

程序设计类课程的实践性非常强,因此,实践教学是其重要环节。对于程序设计类课程的实践教学方面,教学团队结合 ACM 国际大学生程序设计竞赛指导经验,以在线评测系统SDUSTOJ为平台,提出了竞教结合的实践教学方法[7]。实践证明,该方法能够大大激发学生学习编程的兴趣。其主要内容有以下三个方面。

2.1 建立多层次、个性化的程序设计实践教学培养模式

实践证明,在大众化教育的背景下,学生对于程序设计的理解水平、应用能力是千差万别的。为此,教学团队建立了“分层次、个性化”的程序设计实践教学培养模式,如图2所示。面向一年级本科生,教学团队组建了程序设计互助与提高群;面向学生中编程兴趣高、有一定动手能力的学生,组建了程序设计协会;面向高水平、高年级学生,通过选拔成立ACM集训队,培养高水平编程人才。团队将科技竞赛融入程序设计实践教学中,并依托SDUSTOJ平台,为竞赛提供全方位、多层次开放的训练模块。另外,通过举办新生挑战赛,校内月赛,ACM预选赛等多种比赛,激发兴趣、营造氛围,并选拔优秀学生进入集训队,进而参加各种程序设计竞赛。

图2 分层次程序设计实践教学培养模式Fig.2 Multi-level teaching mode of programming courses experiments

2.2 建立多层次,一贯制的实践教学链

教学团队以“理解巩固课程内容,锻炼程序设计技能,规范软件开发习惯,培养计算思维能力”为目标,在实践教学内容革新的具体实施过程中,遵循客观的教学规律,“取其精华,去其糟粕”,利用新的知识点进行更新和替换,并对实践内容进行层次划分,最终凝练为“课内实验—课外作业—综合实践—科技竞赛”的多层次的实践教学链[8]。同时,教学团队利用一个具有一定规模的软件开发案例,要求学生分别用结构化编程方法和面向对象程序设计方法分别实现,从中体会两种编程方式的异同和优缺点。该教学链如图3所示。

图3 多层次、一贯制实践教学链Fig.3 Multi-level and consistent process of experiments

2.3 自主研发程序在线评测系统,实现实践教学过程的有效管理和监控

教学团队自主研发了在线评测系统SDUSTOJ,可对提交的程序进行自动、实时评判,包括程序结果的正确性、运行时间、占用内存资源和输出格式的判别,其客观、公正和实时的评价方式,得到学生普遍认可。学生在线提交程序可得到程序状态和排名的实时反馈,这非常有利于提升学生的学习热情和激发学生的竞争心理;教师可以实时监控学生实验过程和结果,及时发现问题并予以指导,统计分析实验的效果和存在的问题,大大提高教师与学生的交互效率[9]。在线评测系统SDUSTOJ的学生排名情况和程序提交状态分别如图4和图5所示。

图4 在线评测系统-排名状态Fig.4 Online judge-standing

图5 在线评测系统-提交状态Fig.5 Online judge-status

3 教学改革效果

教学改革经过近几年的实践,计算机学院本科生程序设计实践能力和培养质量得到明显提升,程序设计类课程教学获得了学生的一致认可。自2011年程序在线评测系统首次在教学中使用以来,题目数量达到 1400余道,学生在系统中累计完成程序1336231个。从2012年~2019年,程序设计协会的参加人数从100余人上升到500余人,ACM集训队的招收人数从22人上升至65人,学生来源从计算机学院扩展到矿业、地科、电子等7个学院,在全校学生范围内形成了较大影响。团队成员指导的学生多次获得ACM国际大学生程序设计竞赛、“蓝桥杯”全国软件和信息技术专业人才大赛奖项。随着学生程序设计能力大幅度提高,在就业方面也显现出良好增长态势,越来越多的毕业生入职阿里巴巴、小米、百度等知名IT公司。

近年来,团队在程序设计课程体系、能力培养模式、教学资源、人才培养等方面取得了重要成果,应用效果显著;对于其它学校、专业开设程序设计课程和实践能力培养具有较好的借鉴和示范作用[10]。

4 结语

基于在线开放课程+OJ的教学模式是现代信息技术与网络信息技术快速发展下的一种教学改革。笔者在自身经验积累的基础上,以程序设计类课程为例,对该教学模式进行探索。实践证明,该方法对于激发学生的学习积极性,提高编程能力有较好效果[11]。

由于本文选取的是程序设计类课程,因此研究结果可能存在局限性。同时,该教学模式仍有些问题尚未解决,例如学生的自律性和主动性存在差异、两级分化现象等[12],这些不足之处还需要在后续研究和应用中进一步改善。

猜你喜欢

程序设计编程程序
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
高职高专院校C语言程序设计教学改革探索