刊文精选

“三位一体”的程序设计语言类课程教学改革

来源:教育教学论坛     2019-3-8 20:38:35      点击:

崔焕庆 彭延军

摘要:针对当前程序设计语言类课程教学难以实现知识、能力、素质培养目标的问题,分析现有教学方式存在的弊端,提出“三位一体”的观点,从培养目标、教学内容、教学环节和学习过程4个角度阐述“三位一体”的含义,介绍教学案例的设计原则,提出实现全面过程监控的实践教学方案,并说明实践效果。

关键词:程序设计课程;案例驱动;合作学习;过程监控

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2018)44-0110-03

程序设计语言类课程是计算机类专业的专业基础课,是数据结构、操作系统等计算机核心课程的前导课[1]。该类课程着重使学生理解和掌握程序设计的基本知识,具备较强的程序设计能力,养成良好的编程素养,达到知识、能力、素质“三位一体”的全面发展。

近年来,将计算思维贯彻于程序设计语言类课程教学中已成为大家的共识,提出了基于计算思维的教学目标、教学内容和教学方法的改革方案[1,2]。2012年以来,大规模在线开放课程即慕课(MOOC)在全球范围内迅速普及,我国也随之开展计算机教育的“MOOC+SPOC+翻转课堂”教学模式的推广应用[3-6]。2014年,复旦大学张学新教授提出了“对分课堂”的教学模式[7],并在《C++程序设计》的教学上得到了应用[8]。这些新的教学理念和方式的核心在于将“以教师为中心”的教学模式转变为“以学生为中心”的教学模式,充分发挥学生的积极主动性,增加学生在教学过程中的参与度,在教学中取得了很好的成效,发挥了巨大作用。

虽然这类教学方式在小班制教学中有着突出的成效,但是目前很多普通高校多采用大班制,数十人甚至上百人的合班教学过程中,如何更充分地发挥先进教学理念的作用,实现知识、能力、素质的全面发展,仍是亟需解决的重要问题。

一、传统教学模式的弊端

传统的程序设计语言课程教学中,课堂教学占2/3甚至更多的学时,一般都是利用多媒体课件先介绍相关基础知识,再介绍几个基本的例题巩固一下;而上机操作仅占少量学时,通常是在课前给学生布置一定的实验任务,学生编程解决一些问题,最后提交实验报告;除此之外教师也会布置一些作业要求学生在课下完成。作为一门实践性很强的课程,这种教学模式有如下弊端。

1.理论与实践教学不连贯,知识传授与实践环节脱节。灌输式的教学模式虽然保证了知识的系统性,但是学生只是被动接受,不了解所学内容在一个完整程序中的作用,知识支离破碎;实验或作业虽然能让学生得到一定训练,但时间有限,学生只能完成很少的练习,而且无法将实验与课堂所学联系起来。

2.忽视了教学过程的有效监控,不能掌握学生的实际水平。传统教学只能通过实验报告或作业来考查学生的学习效果,不能监控学生完成实验或作业的过程,部分学生应付、抄袭、编造实验或作业;对于多合班的课,教师也不可能批改全部作业。

3.缺乏综合性和创新性的实验环节,学生团队合作意识薄弱,创新能力严重不足。虽然实验环节中通常会布置1个综合性实验,但是在2个学时内学生不可能完成,也无法保证学生在课下用心去做,而且没有形成团队。

4.忽视了学生水平参差不齐的现状,不能实现个性化学习。近年来,多合班上课比较普遍,面对70—120人左右的学生,他们的水平差距很大,容易产生两极分化。

二、“三位一体”的教学模式改革

(一)“三位一体”教学模式的含义

如图1所示,从培养目标、教学内容、教学环节和学习环节四个维度,提出了“三位一体”的教学模式。

培养目标方面,在顾丽红等所提出的融入计算思维的培养目标[2]的基础上,从知识、能力、素质三个方面进行了进一步分析,分为基本目标和强化目标,具体如表1所示。

培养目标决定了课程教学内容的取舍。应以要求学生满足表1中的“基本要求”为主,以“强化要求”为辅。为此,将教学内容分为基础知识、核心知识和拓展知识三部分。基础知识面向没有任何编程基础的学生,介绍编程的基础知识;拓展知识面向学习进度快、成绩好的学生,介绍一些常用算法和项目开发的基本知识。

在教学环节上,课前准备根据学生学习进展来确定需要介绍的知识及深度、广度,教学环节应以案例式教学为主,通过对分课堂、翻转课堂等教学方式充分让学生参与到教学中。课后反思是对教学过程中的经验教训进行总结,为下堂课做好准备。

从学生角度来看学习环节,需要充分利用MOOC满足课前预习的需要,尤其是需要记忆、背诵的知识点,课堂教学中便可节省出大量时间供学生讨论。课后复习环节主要利用程序在线评判系统不断强化所学知识。

(二)教学案例的设计原则

大合班教学中,课堂教学占很大比重,教学案例设计尤为重要,主要原则有:

1.案例要实现所学知识的“所见即所得”。课前根据授课目标、授课内容及学生学习情况,精心构造能涵盖所有知识点且难度適中的案例。以介绍int类型的表示范围为例,定义整型变量d并赋值为0xffffffff,然后输出d和d+1的值,可直观上理解其范围。

2.案例要能使学生现场体会所学知识的用途。利用素数判定、排序、查找等经典问题,启发学生思考、讨论。要求学生现场编程,及时发现学生程序的错误并加以讲解,使学生有更深入的认识。

3.案例要能使学生更直观地理解基本概念。对于难以理解的知识点,采用易于理解接受的例子进行比喻介绍,使学生产生直观认识。

4.案例要总结出知识点能解决问题的种类。对常见问题进行总结分析,有利于让学生理解所学知识能够解决问题的种类,当遇到同类问题时,可以迅速想起解决方法。

5.案例应具有真实性。案例要有较强的实际价值,最好能模拟真实应用环境;要融知识点于案例中,使学生能从案例中体会所学知识的用途。

6.案例应具有一定的启发性。案例要能启发学生思考,要有一定难度,引导学生发现解决问题的方法。案例还要能引起学生兴趣,学会举一反三。

7.案例要有一定的连贯性。案例要循序渐进,由易到难,注重前后知识点的联系和衔接。

传统教学模式过分强调了理论和原理,忽视了实践与应用,案例驱动教学模式则恰恰相反,所以单一的教学模式不适合程序设计基础课程教学,必须将两者进行有机结合。在介绍各个知识点时,采用案例驱动模式,可使学生立即体会到所学知识的用途。在介绍完一个较为完整的内容之后,可采用传统教学模式总结已讲授内容,介绍原理性、概念性内容,让学生将所学知识连贯起来。

(三)多管齊下的实践教学模式

程序设计是实践性很强的课程,为强化程序设计的实践教学环节改革效果,全面提高学生能力,实践教学环节必须多管齐下。

1.加强课程实验环节的过程监控。基础实验环节,可开发一套实验教学平台,使教师能够实时监控学生实验过程和结果,及时发现问题并予以指导,统计分析实验效果和存在问题;使学生可在线获得实验步骤和目标并提交程序,由系统对程序自动评判并即时反馈结果,通过相似度检测来避免学生抄袭。在课程设计环节,通过技术准备、项目理解、项目实施与监控、总结汇报四个阶段,锻炼学生综合运用所学知识解决实际问题的能力。

2.强调实践教学的合作性学习。在实践教学中,以学生为中心,采取边讲边练、自主学习、合作研讨的形式,营造竞争、合作、提高的学习氛围,调动学生学习的积极主动性,培养学生竞争意识。可根据不同学生的个体差异,组建设计小组,鼓励学生通过个人思考、组内讨论或与教师交流解决所遇到的问题,并共享问题及其解决方法,促进全体同学共同进步。

3.注重创新性的实践教学。“基础实验+课程设计”的实践教学只能使学生掌握所学知识并能加以灵活、综合运用,还必须注重培养学生的创新精神。一方面,利用节假日定期对学生进行辅导、培训,引导和鼓励学生参加各类程序设计或软件开发大赛;另一方面,建立学生参与教师科研项目和企业项目的激励机制,鼓励和引导学生参与实际科研项目。

三、教学改革的实践与成效

自2007年以来,我们在大量调研的基础上,进行了程序设计基础的大力改革和实践,取得了一些成果。

1.构建了丰富的案例库,并开发了实践教学平台。从两个渠道开发了程序设计教学案例库。一是优秀教师的最佳实践教学经验总结。教师在多年的教学过程中积累了大量案例,这些案例是教师和学生教与学的结晶,具有真实性、典型性和启发性。二是来自教师科研或企业实际项目。从教师承担的科研项目或企业项目中汲取实际项目案例,经过分析、裁剪和凝练,形成实践教学案例。经过多年努力,已积累基础实验案例近千个,综合案例10余个。同时,参考国内外知名竞赛模式,开发了程序设计实践交互式教学平台,有效促进了实践教学环节的过程监控,大大提高了实践教学的教学质量。

2.学生学习的积极主动性得到极大提高。实践教学中,学生主动加班加点,有的学生甚至在深夜提交程序。学生合作沟通意识和协作能力得到了大大增强,在团队合作中学会了自我约束,学会了倾听、协调甚至妥协,学会了帮助别人与被人帮助。通过不断地练习,学生完成一个题目的提交次数从平均8次以上降到2次,真正实现了个人能力的迅速提升。

3.学生的创新能力得到充分锻炼。学生参与教师科研项目和各项学科专业竞赛的积极性大大提高。近年来,在ACM程序设计竞赛中获得亚洲赛区银牌5枚、铜牌7枚,山东赛区金牌6枚、银牌12枚;在全国软件专业人才设计与开发大赛获得一等奖4人次、二等奖22人次,并3次荣获团体优胜奖;在齐鲁软件设计大赛中获得特等奖提名奖1次、一等奖2次、二等奖4次。《山东科大报》在2010年和2011年连续两年对学生参与程序设计和软件竞赛的情况进行了报道。

四、结语

程序设计基础作为计算机及相关专业重要的专业基础课程和入门课程,对于培养学生学习计算机课程的兴趣,尤其是利用程序解决实际问题的能力具有重要作用,但传统的教学模式存在诸多不足,必须进行理论和实践教学的改革。本文总结笔者所在的程序设计教学团队多年的教学改革经验,从培养目标、教学内容、教学环节和学习环节四个方面提出了“三位一体”的教学模式,通过构建丰富的案例库、开发程序设计实践教学平台、建立学生参与竞赛或项目的机制等手段,培养学生的编程能力、团队合作能力、沟通能力,达到知识、能力、素质的全面发展。多年的实践证明,这一教学模式取得了良好效果。

参考文献:

[1]赵卫东,冯超男,张丽.基于计算思维的程序设计语言类课程教学改革[J].计算机教育,2016,(12):28-30.

[2]顾丽红,丁淑妍.计算思维驱动的C语言程序设计课程教学实践[J].计算机教育,2015,(20):92-95.

[3]徐晓飞,傅育熙,李廉,等.关于我国计算机教育MOOC发展的思考[J].中国大学教学,2015,(11):2-6.

[4]陈晋音,俞山青,国红,等.程序设计课程群的创客式课堂教学模式探究[J].计算机教育,2017,(1):80-83.

[5]厉兰洁,廖雪花,谭良,等.基于SPOC的C语言程序设计课程教学改革研究[J].计算机教育,2016,(1):74-76.

[6]吴海珍,杨鼎强,孟爱国.基于微信公众号的C程序设计翻转课堂教学实践[J].计算机教育,2017,(5):92-95.

[7]王芳,王瑞金,冯莉媚,等.高校对分课堂(PAD)教学模式实践[J].教育教学论坛,2017,(11):148-149.

[8]徐英,谷雨.对分课堂在提升《C++程序设计》课程教学效果的实践与思考[J].教育教学论坛,2017,(1):213-214.

Abstract:The traditional teaching model cannot accomplish the full-development of knowledge,ability,and quality. This paper analyzes the drawbacks of existing teaching method to propose the viewpoint of "Three-In-One",and describes its meaning from teaching objectives,contents and processes. It also introduces the design principles of teaching cases,and presents the scheme of comprehensive monitoring in practical teaching. Finally,the effects are given.

Key words:programming language courses;case-driven;cooperative learn;process monitor


本文版权归教育教学论坛杂志社及本文作者所有,未经同意,不得转载! ——《教育教学论坛》查稿电话:0311-85178286