任静静
(信息工程大学洛阳校区,洛阳 471003)
2010年,《九校联盟(C9)计算机基础教学发展战略联合声明》中提出计算机基础教学是培养大学生综合素质和创新能力不可或缺的重要环节,是培养复合型创新人才的重要组成部分[1]。在计算机基础课程中,《程序设计基础》是一门通识必修课程,在培养学生逻辑思维、计算思维、信息处理能力方面起着重要作用。本文从分析《程序设计基础》课程教学现状入手,总结存在的问题,提出在教学内容、教学模式及课程考核方面改革的具体措施,构建出以程序设计比赛为导向的多模式程序设计基础教学体系。
(1)教学内容
在教学内容方面存在的问题:①过多强调所学程序设计语言的语法规则,弱化了算法分析和编程实现能力的培养,使学生误以为一门开发语言和开发环境就是计算机编程,对该课程有一种“狭义工具论”的认识,不能很好地体会在算法分析和编程实现过程中所体现出来的“计算思维”和解决问题能力的锻炼;②因为C语言入门简单,不需要学习除了语言本身之外的框架控件等知识,使该课程更多的关注到算法分析和编程实现,所以各大高校在该课程中选择C语言的居多。我院在前几年教学中也选择C语言,但学生学习效果不是很好,通过深入调研分析,C语言编写的没有图形交互界面的实验程序不能提高学生的兴趣点,实验不能很好地起到加深理解理论知识的作用。
(2)教学模式
近几年教研室一直在进行该课程教学模式研究,虽然已经从最传统的单一满堂灌填鸭式教学改进到“理论+实践”教学模式,但教师的理论讲授还是直接进行纯粹的知识传授,以教材为中心,教师仍然处于主体地位,在实践环节也是简单给出命题,且命题多为纯粹的数学类问题,枯燥乏味不能激发学生的兴趣。
(3)教学考核
目前课程的教学考核方法为:总成绩=笔试成绩+上机成绩+平时成绩,由于该课程的授课对象人数多,平时成绩主观成分比较多,期末实训内容的上机考核不能很好地考核学生解决问题的能力,而笔试内容不能很好地体现出学生对实际操作的掌握程度,这几部分成绩多为结果性成绩,不能很好地体现学生的过程性成绩,使得最后的总成绩不能很好地体现出教学效果。
(4)学生现状
《程序设计基础》属于通识课程,大班教学,学生人数较多,计算机基础不尽相同,学习能力和逻辑思维能力参差不齐。两极分化较为严重,同一套学习模式,部分学生“吃不饱”,无所事事;部分学生却“吃不完”,班级大,又无法得到教师的即时、详细指点。课堂效率大打折扣,因为学不会,课下也就不愿学,连锁反应导致教学效果变差。
(5)教学学时
我院每门计算机类通识必修课程为32学时,鉴于程序设计基础课程涉及到的内容比较多,32学时不能很好地满足该课程的学时需求。
《程序设计基础》应以培养学生信息处理、计算思维能力的原则出发,制定一套满足不同学生需求的课程教学体系。选择合适的教学内容,采用多样化的教学模式,增强实践教学的效果,依程序设计比赛为导向,构建出一种多模式《程序设计基础》教学体系。
选择合适的程序设计语言对教学效果起到至关重要的作用,但是也不能让学生认为学习一种程序设计语言就是计算机编程。在教学实施过程中,可以以一种程序设计语言为主,拓展到多种程序设计语言,让学生体会不同语言之间的优缺点。针对本院开展C程序设计语言教学的效果来看,学生对具有图形交换界面的程序设计语言更感兴趣。通过调研分析,我院选择Visual Basic作为该课程教学中主要的程序设计语言,该语言容易上手,结合控件的使用能更好地帮助学生理解程序的执行过程。在教学实施中,分析设计算法,以Visual Basic为例进行编程,最后拓展到其他一两种主流编程语言,让学生体会不同的开发语言和工具实现同一算法的异同,从而体现出程序设计基础课程的核心是培养编程来解决实际问题和计算思维能力,而不是仅仅拘泥于某种语言,这样也更好地满足学生不同编程基础的需求。
不管哪一种程序设计语言都有比较枯涩难懂严格的概念和语法要求,在入门教学中都不要急于让学生掌握这些概念和语法,让学生会误以为学习该课程就是掌握语法规则,而是从认知学理论的规律出发,给学生展示一些编好的有趣的实例,如交通红绿灯、计算器、翻牌游戏等,让学生体会编程在实际应用中的作用,激发学生的兴趣点。
(1)案例驱动教学模式
在教学过程中应突出实践能力,案例教学是当前教学改革环境下的一种新型的教学模式,将零散的知识点综合到案例中,使学生通过解决案例中的问题从而掌握所学知识。案例选取应贴近实际需求,实施步骤为“分析案例-设计算法-编程实现”,在编程实现步骤中引出所学程序设计语言的相关知识点,最终达到训练学生逻辑思维和编程的能力的目的。
案例驱动教学有助于激发学生兴趣,还可以培养自学能力。对于Visual Basic语言中的比较抽象枯燥的数据类型、变量、常量知识点,不要按部就班以教材为中心照本宣科进行讲解,可以贯穿在多个案例中,且不一定在一次课中学习,应进行分散化学习,且多种数据类型不一定每个都系统学习,可以以常用的数据类型(例如数据型和字符型数据)为例,其他的数据类型让学生自学。
案例教学对教师提出更高的要求,不是将知识点简单堆叠讲授,而是应该对该门课程有很好的整体把握,能对知识点进行深入的关联、分析和设计,将多个知识点融合到相应的案例中。
(2)基于建构主义的问题解决教学模式
建构主义教学改革的基本思路是:基于问题解决来建构知识,通过问题解决来学习[2]。该教学模式应用到该课程中的实施步骤为“提出问题或任务-引导学生思考探索(小组讨论、师生讨论)-实践体验-解决问题”。
教师提出的问题应是一系列的、进阶式的,具有让学生讨论的价值,在利用程序设计语言实现算法时,如果学生出现运行方面的错误,让学生自行发现并解决错误,或者指导学生通过调试查找错误,而不是简单地给学生指出错误,提高学生的成就感,加深对出错语法的认识,增强学生的课堂参与度,通过程序调试巩固知识重建过程。
(3)翻转课堂教学模式
由于学时有限,引入翻转课堂教学模式,部分教学内容可以在课外完成,更大程度地利用课堂时间展开讨论、互动、探究式教学,充分发挥学生的主体性作用,更好的完成知识构建。例如教师可以把下次课的内容放在网络平台上让学生自学,内容的形式多样化,课件、Flash动画、微视、知识思维导图等,并设置相关的任务和问题,学生可以在课下提前查阅资料思考,将难点内容及时的反馈给教师,以便更好地在课堂上有侧重点的答疑和讨论,学生课下还可以反复学习,如果在课下学习过程中仍有问题,可以在网络平台上再展开讨论,教师还可以在网络平台上放置课下任务,以巩固学习效果。
在实施过程中需要一个合适的网络支撑平台,可以选择开源的网络课程平台Moodle[3]。
翻转课堂教学模式颠覆了传统课堂“教师讲-学生听-学生练”模式,使学生真正参与到课堂中来,成为课堂教学活动推动的主导者,使课堂充满讨论、碰撞和探究,很大程度上提高学生的学习积极性。
多种教学模式之间不是孤立的,相互促进、相互融合,在一次教学活动中涉及到理论教学和实践教学,要精心进行课程设计,选取多样化的教学模式。
《程序设计基础》课程实践性非常强,学生算法分析和编程实现能力的知识构建在实践中完成,所以要求有一套完备的实验库开展实践教学。针对学生学习能力和基础的不同,可将实验库分为必修实验项目和选作实验项目,满足不同学生的需求[4]。
实验项目应按照章节进行设置,且内容和课堂教学案例内容相一致,覆盖教学大纲的知识点,设置相应的问题引导,帮助学生分析问题。
根据本课程使用的案例驱动及问题解决教学模式,实验项目之间应具有连续性,问题是一系列、进阶式的。例如在表达式、一维数组、动态一维数组、二维数组知识点中,将“求三个学生的一门课程的平均成绩”延伸为“求100个学生的一门课程的平均成绩”,再进阶为“求N个学生的一门课程的平均成绩”,最后拓展到“求N个学生M门课程的平均成绩”。其中后面两个实验项目可以设为选作实验,还可以在前面四个实验基础上加上窗体和控件知识点上升为“班级成绩管理系统”。
依托第二课堂的程序设计比赛,比赛题目由各小组成员搜索材料讨论自拟,题目所需知识涵盖但又不仅局限于课堂知识点,且能解决实际问题。
以Visual Basic程序设计语言为教学内容后,学生进行课程设计的题目越来越多样化,题目难度有所提高,设计的软件实用性比较强,例如Q我音乐盒、翻牌游戏、中日文化差异交流、俄语听力练习、算术练习本、计算器等。软件设计和实现涵盖了算法分析和编程实现。在编程实现的过程中不仅深入的掌握了程序设计语言中最基本内容——数据类型、程序控制结构、数组、文件等,还自学了很多Visual Basic中很多控件的应用。
因此,程序设计比赛不仅培养学生的解决问题的能力,还培养学生的自学能力、责任感、团队意识、思维创新和争先创优的竞争意识。
针对目前考核评价中的缺点,结合课程考核与教学模式的关系,改进该课程的考核方式。结合教学模式,总成绩=笔试成绩+课堂实践成绩+程序设计比赛成绩,考核内容的命题遵循考核改革思路。
笔试内容考核由于各方面的限制,纸笔测验还一时难为其他的评价手段完全代替。虽然形式一时难以改变,但是考查的目标应该与前面提到的教学模式的评价目标是一致的,这就需要笔试考题的命题需要从考核学生的能力的角度出发,而不仅仅是独立的知识点。
课堂实践内容考核主要体现学生问题解决的能力,同时包括学习能力、团队协作能力、表达能力等综合素质。
程序设计比赛考核根据课程设计的难易程度确定等级分数,通过学生在课程设计过程中的作用和能力考核学生对知识的运用和解决问题的能力,通过课程设计的报告或论文来考核学生归纳和总结能力。
考核方式的多样化促使学习方式广泛化,并能建立更完整可靠的评价体系,改革前后的考核方式及标准对如表1所示。
表1 改革前后考核方式对比
笔者所在的《程序设计基础》课程团队经过多年的教学改革实践,形成一套完备的教学体系,在科研和教学方面取得一定的成果。出版配套教材《程序设计基础教程》(VB版)——21世纪大学计算机基础课程教材和实验指导书。本文的研究成果应用到教学中,学生对该课程的积极性及编程能力有很大提高,普遍认同案例驱动、问题解决、翻转课堂及程序设计比赛的教学模式和过程,激发了学生的创造性,培养了学生的创新能力。