C语言教学中“部分翻转课堂”教学模式探索

2017-11-20 09:07陈越洲王传立肖必武
电脑知识与技术 2017年25期
关键词:C语言程序设计计算思维翻转课堂

陈越洲+王传立+肖必武

摘要:提出了一种适合非计算机专业、大班教学环境下的C语言程序设计课程教学模式。该模式融合了“翻转课堂”和传统课堂教学的优势,化解了当前C语言程序设计课程教学重语法轻程序设计思想和方法的困境,提高了学生对课程学习的积极性和主动性,为“培养大学生计算思维能力”这一教学目标提供了有力保障。

关键词:C语言程序设计;教学改革;翻转课堂;计算思维;教学模式

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2017)25-0138-03

Abstract: A C language programming teaching model suitable for non computer majors and large class teaching environment is proposed. The model combines the "flipped classroom" and the advantages of traditional classroom teaching, to resolve the current emphasis on teaching grammar of C language program design course light program design idea and method of the difficulties, improve students' enthusiasm and initiative of learning, provide a strong guarantee for the teaching goal of cultivating college students ability of thinking computationally.

Key words:C language programming; teaching reform; flipped classroom; computational thinking; teaching model

1 概述

随着社会信息化程度的提高,计算机科学与其他学科的结合越来越紧密,计算机综合运用能力已经成为当代大学生的知识结构中的重要组成部分。我国高等院校针对非计算机专业的学生均开设了计算机程序设计类的必修课程。程序设计是以某种程序设计语言为载体进行教学,C语言以其强大的功能和广泛的应用成为高校理工科专业的首选程序设计语言。但长期以来,教师感到C语言难教,学生反映C语言难学,教和学的效果都不近人意。为了改变这种状态,很多学者充分运用各种教育学理论、教学方法和现代教学工具从不同的角度进行了教学改革的探索。本文作者基于多年的教学实践,结合教育部高等学校计算机基础课程教学指导委员会的近年来推动的教学改革,提出了一种将“翻转课堂”与传统课堂教学相结合的教学改革方案。

2 C语言程序设计的教学目标

在教育部高等学校计算机基础课程教学指导委员会的推动下,以2010 年7 月在西安交通大学举办的首届“九校联盟(C9)计算机基础课程研讨会”发表的《九校联盟(C9)计算机基础教学发展战略联合声明》为标志,我国正在展开以“计算思维能力培养”作为教学核心任务的高校计算机基础教学改革[1-3] 。何钦铭教授等人在文献[3]中对《九校联盟(C9)计算机基础教学发展战略联合声明》做了进一步的解读,指出了“对大多数非计算机专业的学生而言,学习程序设计的目的是学习计算机分析和解决问题的基本过程和思路,而不是成为程序员”,对程序设计基础课程的教学应该“突出体现使用编程解决特定问题的方式,即程序设计方法,而不是语言本身”。由此可见,C语言程序设计课程的教学目标,从大学计算机基础教育的战略高度来看是培养学生的计算思维能力,该课程的核心任务是培养学生利用计算机分析和解决问题的思路和方法,即程序设计思想和程序设计方法。

3 C语言程序设计的教学现状

目前,高校非计算机专业C语言程序设计课程的教学存在一些困境[4],教学效果不太令人满意[5],课堂教学往往等同于C语言的语法教学,没有将重心放在程序设计思想和程序设计方法的传授上。造成这种“重语法轻程序设计”的局面,原因是多方面的:

教学内容方面。C语言具有如下特点:语法简洁、灵活,没有严格的规范,书写自由度大,而且C语言能够直接对内存进行操作。这些特点决定了C语言程序简洁、高效,深受广大程序員的喜爱。但另一方面,对初学者来说掌握起来就有一定的困难,尤其是非计算机专业的大学一年级学生,他们没有相关的计算机基础知识做铺垫,涉及指针、内存操作等概念时更是感到困惑。美国教育心理学家布鲁姆认为,当学生用于学习的有效时间足够长,都能完成教学目标所要求的标准[6],由此提出了掌握式学习模式。提倡在教学中,给予学生所需要的学习时间,让大多数学生掌握所教内容,达到预期教学目标。而现实却恰恰与之相反,我们必须要在很有限的课时内完成教学任务。学生因对课程重要性认识不足,也不愿意课外在该门课程上花足够的时间。

教学管理方面。正如文献[4]所述及的那样,由于对开设大学计算机基础课程的重要性认识不足,无论是从学校层面还是从各专业学院层面都不能给予该门课程教学足够的支持,甚至质疑该课程开设的必要性,因此出现了近些年来压缩课时的现象。他们把程序设计课狭义地理解为一门可有可无的“工具课”,没有站在“培养计算思维”的高度来认识这门课程的重要性。目前C语言程序设计这门课程的教学时数基本上是按照理论和实验各32个课时来安排的,处于教学一线教师和学生深感教学时数不够,无法有效完成教学目标。有些学校教务处领导和专业学院甚至主张还要进一步压缩课时甚至于要取消开设这门课,这给C语言程序设计的教学带来更大的困境。endprint

学生方面。多数学生对该课程的学习主动性不足,缺乏学习激情。主要源于对课程的重要性认识不到位。他们普遍认为自己学的不是计算机专业,程序设计课程跟他们的专业关系不大,再加上课程学习有一定的难度,因此产生抵触、排斥心理,消极对待课程学习,学习的目的仅仅是为了获得需要的学分。对待老师布置的课后编程作业,亲自编写程序的学生不多,多数学生都是抄袭。一个七八十人的大班往往只有几个原创版本,甚至经常出现网上下载的其他语言程序提交给老师的现象。

教师方面。教师是课堂教学的主导者。如何选取恰当的教学模式和教学策略也是影响教学效果和教学目标达成的关键所在。在大班教学环境下,有些理论上看似很好的教学模式和策略,实施起来是很困难的。而且,好的教学模式和策略也需要师生之间相互配合才能得到有效的贯彻实施。作者曾经多次尝试让学生课前预习教材上的语法知识,以便课堂上达到“突出程序设计思想和方法,淡化语法细节”的目的,但事实上每次只有几个学生按要求做了预习,导致设计好的教学方案无法实施。

如上所述,C语言程序设计教学所面临的困难需要从多个方面来解决。教学管理者要提高认识,要站在“培养学生计算思维能力”的高度来认识开设C语言程序设计课程的必要性和重要性,为一线教学创造宽松的教学条件。学生也应该改变“程序设计课程跟他们的专业关系不大”的错误认识,以积极主动的姿态来对待这门课程的学习。教师也要积极想办法探索合适的教学模式和策略,精心设计教学内容和教学素材。本文下面主要从教师的角度来探讨C语言程序设计教学改革。

4 教学模式与策略选择

不同的教学模式依据的学习理论不同,现行教学模式主要表现出两大特点:传递接受和探究发现。依据这两大特点,对常用教学模式分为以教为主和以学为主的两类教学模式[7]。

从17世纪30年代夸美纽斯基提出班级授课制以来,教学活动基本确立了以教师为中心的教学结构。尽管以教为主导的教学理论成果和教学模式层出不穷,但在我国各类教学实践活动中流传最广、使用最多的教学模式当属由赫尔巴特的五段教学法衍生出来的五环节教学模式。该模式的基本过程可归纳为:激发学习动机——复习旧课——讲授新课——运用巩固——检查效果。这种教学模式以知识的传递和接受进行,在教学过程中如何实现有意义的接受确保知识的保持和迁移就显得尤其重要。显然,这种教学模式仍然是目前我国各级各类教学活动的主流,也是目前C语言程序设计教学所普遍采用的教學模式。这种教学模式我通常称其为“传统教学模式”。

以学为主的教学模式当前最具代表性的有发现式学习、探究式学习、研究型学习和以建构主义理论为指导而衍生出来的抛锚式或基于问题的教学模式、任务驱动式教学模式等。这几种教学模式的核心都是注重知识的探究过程而非知识本身,它们强调学生在探究、研究和在真实环境体验过程中通过分析、归纳、总结从而深刻理解并掌握相关的知识。以学为主的教学模式近些年来在我国高等教育的教学实践中被广泛推崇,也频频出现在各类教改文献中。

上述两种类型的教学模式,前者比较适合基础课程的教学,因为基础类课程主要是以知识的传承和迁移为主;后者更适合专业类课程的教学,专业课程更便于课题、任务的设计和体验式教学过程的展开。

随着计算机技术的发展,以网络为技术支持平台,近年来产生了一些新的教学模式,“幕课”和“翻转课堂”就是近些年国内外学者研究的热点[5][8]。

幕课(Massive Open Online Courses,MOOC)即“大规模开放在线课程”。MOOC是新近涌现出来的一种在线课程开发模式,它发端于过去的那种发布资源、学习管理系统以及将学习管理系统与更多的开放网络资源综合起来的课程开发模式。顾名思义,其主要特点是:(1)规模大,一门课程同时上课的人数可达上万人甚至十几万人;(2)教学资源丰富,教育资源包括视频、文本、音频等形式,课程的范围不仅覆盖了广泛的科技学科,比如数学、统计、计算机科学、自然科学和工程学,也包括了社会科学和人文学科;(3)开放性,尊崇创用共享(CC)协议,教师将制作好的教学资源共享在幕课平台上,教学资源突破了大学的界限,学习者以兴趣导向,凡是想学习的,都可以进来学,不分地域和国籍;(4)在线学习,学习在网上完成,不受时空限制;理论上大部分面对面的课堂教学都可以用这种形式替代,但事实上这种教学形式只能作为面对面课堂教学的一种补充,因为它对学习的主动性和自律性有极高的要求。

翻转课堂(Flipped Classroom)起源于2007 年前后美国科罗拉多州落基山林地公园高中两位化学老师的创新教学。其核心思想是:课前,学生利用教师提供的音频、视频、文字材料等教学资源进行自主学习,实现知识的传授;课上,针对课前学习内容,学生通过各种教学活动,如小组讨论、教师个性化辅导、作业练习、实验操作等,达到知识的内化。这种教学的组织形式事实上是一种以学为主的教学模式,带有浓重的个性化教学色彩。

幕课和翻转课堂的精髓是主动学习[8] 。由前面的分析可知,我国的非计算机专业大学一年级的学生恰恰缺乏的就是对C语言程序设计这门课程学习的激情和主动性。翻转课堂教学模式授课也只适合在小班开展,对于授课人数动辄在七八十上百人以上的大班是很难开展的[8]。

借助翻转课堂教学的思想,将部分教学内容让学生课前学习,实现传统教学模式与翻转课堂教学模式的结合,从而提高课堂教学的效率、促进课程教学目标达成,值得教育工作者去研究和探索。C语言程序设计这门课的教学,可以将语法知识部分布置给学生进行课前学习,并辅之以学习效果的检查措施,课堂教学中主要讲解程序设计思想和方法,既能缓解课堂教学课时少的压力,又能解决目前课堂教学沦为语法教学而忽略程序设计思想和方法的问题。本文针对C语言程序设计课程设计了一种“部分翻转课堂”的教学模式。

5 “部分翻转课堂”教学模式设计endprint

如图1所示,本教学模式主要包括教学内容的组织、教学环节设计和教学效果保障。

5.1 教学内容组织

首先对现有教学内容进行重构。根据实际情况,确定哪些内容适合学生课前自主学习,哪些内容需要课堂讲授。让学生课前自主学习的内容不能给学生增加太大的负担。比如上网在线学习需要电脑,调试程序也需要电脑和调试环境,而一年级的大学生很多都没有电脑,有些学生家里还很困难,买不起电脑。另外,课前自主学习的内容还应该具有可检测性,以方便对学习效果的检查。由于许多学生的学习主动性和自律性是缺乏的,必须要有有效方法来促进他们自主学习。

通过对课程内容的分析,C语言程序设计课程教学内容可分为基本语法和程序设计两个部分,语法部分可作为学生课前自主学习的内容,因为大学生已经具备了足够的阅读理解能力,C语言的语法绝大部分都应该能够看明白,少数语法涉及更深入的计算机工作原理和基本概念,老师在课堂上可作补充讲解。C语言语法学习素材以教材为主,目前一些通用教材上介绍的语法知识基本上能满足课堂教学的需求,少量的教师需要补充的教学素材,可通过QQ、邮件等现代通信方式发送给学生。有关程序设计思想和设计方法是需要教师在课堂上传授的,教师可通过精心设计的课堂教学素材在课堂上讲解。

5.2 教学教学环节设计

这里说的教学环节主要是指课堂教学的环节。教师在每堂课的开始对学生课前学习中存在的疑问进行解答。完成疑问解答后,马上对课前学习的效果进行检测,检测的方法是运用开发好的手机App客户端程序,学生在手机上完成一份C语言语法测试卷。由于每堂课涉及的新的语法知识并不多,测试卷中的测试题不多(按照每次测试十道选择题设计),基本上在十分钟左右就能完成。测试的目的,一方面是检查学生课前学习的效果,更重要的是督促学生切实有效的完成课前学习任务,化解学生因学习动力不足而产生的“懒学”、“怠学”现象。测试成绩作为该门课程总成绩的一部分。前面提到,让学生每人准备一台电脑来辅助教学会增加学生负担,但现在的大学生几乎每个人都有手机,充分利用他们的手机来辅助教学是切实可行的。

完成前述教学环节后,就为后面的教学扫除了语法障碍。接下来就是教师对程序设计思想和程序设计方法的传授,并辅之以适当的课堂练习,这样就能有效地达成每堂课的教学目标。

5.3 教学效果保障

学习效果除了得益于好的教学模式和教学方法,还与学生的学习动力密切相关。本教学模式主要考虑在学生学习动力不足的情况下,如何促进学习,达成教学目标。强化课程考核无疑是一种有效的方法。

目前典型的课程考核方式是“成期末考试成绩+平时成绩”,分值的分配比例一般是期末考試占70%,平时占30%。因为平时成绩的考核没有一个量化标准,老师主要是通过作业提交和到课率给学生定分数,而课外作业老师又没法监督,提交上来的作业多数是抄袭而来(抄袭网上的,抄袭同学的),一个班往往只有几个学生是真正自己动手做的。再则,期末考试的试卷语法知识占的比例很高,真正需要学生进行程序设计的题目只有20分左右,使得平时不认真学习的学生考前突击一阵子也能轻易过关。

为改善这种不合理的状况,本教学模式对课程考核做了优化处理,将课程考核分成三个环节,即语法测试+平时作业+编程考试。

(1) 语法测试:将语法知识的考核分散到每堂课(每堂课设计了一个语法测试环节,学生通过手机App客户端完成),促进学生扎扎实实把握好每堂课。将每堂课的测试成绩做加权平均,占课程考核总分的30%。需要说明的是,这种测试也可以不占用课堂时间在课外进行,但在没有监督的环境下的测试是没有意义的,起不到促进学习的作用。

(2) 平时作业:因为大班环境下,对每个学生的编程作业进行批改是不可能完成的,但又必须给学生布置课外练习,所以只给10%的分值。

(3) 编程考试:在课程结束时进行编程考试,相当于期末考试,占课程考核总分的60%。编程考试只考程序设计题,突出程序设计思想和程序设计方法的重要性。

到课率不再做单独的考核,因为每堂课都有语法测试,不到就没有成绩。

6 总结

该教学方案引进“翻转课堂”教学思想,将C语言的语法与程序设计分开实施教学,并辅之以合适的课程考核方式,扭转了目前C语言程序设计课程教学中重语法轻程序设计思想和程序设计方法的局面,促使学生积极主动地投入到课程学习,为教师传授程序设计思想和程序设计方法提供了有力保障。实践证明,学生对该课程的学习积极性和主动性大大提高,教师有了更多的课堂时间和精力讲授程序设计思想和程序设计方法。如何组织程序设计部分的课堂教学才能更好地达到培养学生计算思维的目的需要我们进一步研究。其中包括教学内容的组织编排、教学环节的设计以及教学手段的使用等。

参考文献:

[1] 九校联盟(C9)计算机基础教学发展战略联合声明[J]. 中国大学教学,2010(9).

[2] 教育部高等学校大学计算机课程教学指导委员会. 计算思维教学改革宣言[J]. 中国大学教学,2013(7).

[3] 何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算思维能力的培养——《九校联盟(C9)计算机基础教学发展战略联合声明》解读[J]. 中国大学教学,2010(9).

[4] 赵宏,王恺.我国大学计算机课程现状及改革探索[J] 中国大学教学,2015(2).

[5] 裴明涛,梁玮.翻转课堂在C语言程序设计课程中的应用[J] 计算机教育,2016(9).

[6] 康苇苇.基于计算思维的C语言教学模式分析与案例设计[D] 重庆师范大学, 2015.

[7] Liu Tianan,LuJun,ShaoHongqiang,Li Han. Embedded teaching mode exploration and teachers team training. Communication Software and Networks(ICCSN),2011 IEEE 3rd International Conference on[C].XiAn:IEEE,2011,5:227-230.

[8] 吴宁,房琛琛,任燕飞.大班教学环境下基于SPOC的混合教学设计与效果分析[J].中国大学教学,2016(5).endprint

猜你喜欢
C语言程序设计计算思维翻转课堂
程序设计课程中计算思维和应用能力培养问题研究
翻转课堂在小学数学教学中的应用