基于JiTT模式的C语言教学中计算思维的培养

2018-10-25 03:14宁鹏飞
计算机教育 2018年10期
关键词:C语言阶段计算机

郑 冰,宁鹏飞

(1.内蒙古建筑职业技术学院 公共课教学部,内蒙古 呼和浩特 010070;2. 内蒙古医科大学 计算机信息学院,内蒙古 呼和浩特 010010)

0 引 言

在C语言教学中,学生借助计算思维可以实现从具体的自然语言表达问题到程序设计语言编程语句之间的映射,形成良好的计算思维方式对于后续计算机类课程的学习有非常大的帮助。语法规则和培养涵盖编程思想的计算思维构成教学内容的主要组成部分。经过多年的教学实践笔者发现,对非计算机专业初学计算机编程语言的学生来说,通过生搬硬套掌握C语言的语法规则相对容易。但对于计算思维部分,由于C语言偏向计算机底层的抽象特性,学生很难建立起从自然语言到符合计算思维的C语言程序之间的转换。因此,C语言教学中计算思维的训练成为教学中的重点难点。JiTT(Just-in-Time Teaching)模式是一种线上线下相结合的教学模式,是可行性和可操作性非常强的教与学策略,并采用一定的激励方式结合课外学习与课堂教学。在C语言教学中,为了培养学生良好的计算思维方式,可以引入JiTT模式,尤其在难题探究阶段通过循环反馈实现计算思维的培养。

1 C语言教学中计算思维的培养

1.1 计算思维的研究现状以及C语言教学实践中现存的问题

关于计算思维,近年来,因为“互联网+”“大数据”等热门概念的出现,计算思维[1]的内涵与外延不断丰富拓展,众多学者更是将计算思维的理念应用在计算机教育实践中,取得了丰硕的成果[2-3]。在计算机教育领域,计算思维是比编程思想更高一层的抽象,是将现实生活中使用自然语言描述具体问题分解为执行步骤的解决逻辑,再通过抽象符号化为计算机可以执行的逻辑指令的转换过程。目前有针对自然语言思维的C语言教学的研究[4],但并没有涉及计算思维的培养,也没有与一种具体的教学方式相结合。这里讨论的是针对计算机编程语言初学者的计算思维的培养,主要探讨基本的程序设计语言表达的计算思维,实现从具体的、相对简单的自然语言表述问题到C语言基本结构表达的编程语句(单个函数内部)之间的映射。例如,在屏幕上输出九九乘法表,利用了C语言的循环结构,并引入计算思维方式。

C语言的教学目标可以归结为掌握基本语法规则和培养包含编程能力在内的计算思维。为了更清楚地了解教学目标的完成情况,笔者进行了初步调研。以某高校非计算机专业四年制本科生为调查对象,该专业大部分学生为第一次学习计算机编程语言,随机抽取2016级C语言程序设计期末考试试卷进行分析,在编程题中出现的错误类型主要有:①语法错误,如出现频率较高的不事先定义变量而直接使用变量等,这类错误的原因是马虎、基本知识掌握不牢固,所占比例相对较少;②与计算思维方式相关的错误,例如程序不够精简、冗余语句较多、前后逻辑颠倒、彻底不知道如何用C语言描述解决问题。另外,具体到C语言的教学重点——3种基本控制结构,对于顺序结构绝大部分学生可以表达清楚,简单分支结构也没有问题,说明学生可以正确实现对简单逻辑的转换,但对于复杂的分支结构、循环、循环嵌套,则错误率较高,这类错误归根结底是学生不会用机器的方式清楚表达逻辑,即计算思维的缺失。

综上,计算思维的培养是C语言教学中的重点、难点,如何找到一种有效培养计算思维的教学方式是一个亟待解决的问题。

1.2 C语言教学目标中计算思维的培养

一般C语言教学目标包括了解、熟悉、掌握、综合运用4个层次。其中,综合运用层次的教学目标蕴含了计算思维的培养。计算思维是自动化解决问题,学生需要学会分析一个自然语言描述的问题,构建可以用计算机表达的模型,这个过程相对抽象,在C语言教学中不具有可操作性,因此需要明晰在C语言教学中培养计算思维的具体过程。从自然语言表述到符合计算思维的C语言实现的转换过程描述如下:①自然语言表述,用自然语言表述的、有待计算机自动化解决的问题;②伪代码,介于自然语言与计算机语言之间的表述方式,与具体的计算机编程语言无关;③符合语法规则的C语言实现,往往具有很多冗余的代码,但是C语言的语法规则将伪代码实现为可以运行的C语言程序,并未考虑运行效率和逻辑上的精简,这是一种更适合于自然语言思维方式的结果;④符合计算思维的C语言实现,更符合计算机逻辑的C语言实现,具有相对较好的运行程序和精简的逻辑关系。

对于以上过程,本文给出相应示例,例如在C语言学习嵌套分支时的经典实例:输入一个学生成绩,判断优、良、及格、不及格,从自然语言表述到用符合计算思维的C语言程序表达,可以经过一系列转换过程,见表1。显然符合计算思维的C语言程序更加简练,执行效率也更高,更符合计算思维方式。

表1 符合计算思维的C语言程序的转换示例

2 基于JiTT模式的C语言教学

以上符合计算思维的C语言实现过程需要结合恰当的教学模式才可以顺利实施,笔者选择可行性与可操作性较强的JiTT模式[5]。

2.1 关于JiTT模式

基于JiTT模式的教学过程是一种线上与线下相结合的教学模式,国内翻译为“适时教学模式”或“及时教学模式”。美国航空学院的Gregor Novak教授等人给出定义:JiTT是建立在“基于网络的学习任务”和“学习者的主动学习课堂”二者交互作用基础上的一种教与学的新型策略。JiTT模式的操作框架简明易懂,下文结合实践对其实施过程进行分析。

(1)课前预习阶段。这是课前阶段基于网络媒介的“预热”,教师在网络上布置适量的预习内容,主要是基本知识点,能够起到承接上节课内容并为本节课教学做铺垫的作用,学生对教师布置的预习问题给出反馈。教师根据学生的反馈,了解学生对基本知识点的接受程度、已经具备的知识水平、自学能力等,并相应修改课堂教学内容。这个过程中,教师通过教学资源平台上传教学资源,学生通过教学资源平台下载教学资源,实现异步交互,完成预习和反馈过程。通过前期的教学实践表明[6],教学资源平台可以采用基于Moodle的网络支撑平台[6]、基于BlackBoard的网络平台等,也可选择目前国内比较流行的即时通讯工具,例如通过建立微信群和QQ群的方式实现。这些工具可以实现师生良好的线上互动,使教师及时接收学生反馈,缺点是需要教师建立线下的个人教学资源库,并且缺少一些辅助的统计工具帮助教师客观统计学生的预习情况。因此可以将成熟的网络教学资源和即时通讯工具相结合作为网络资源的支撑环境。

(2)课堂教学阶段。教师除了进行面对面的授课之外,还要组织学生进行分组讨论、实验等教学活动。由于经过了预习阶段,学生有备而来,参与活动积极性也会更高,学习的效果也会更好。根据教学目标和相应的预习反馈情况,建议采用以下的课堂教学流程:回顾上节课知识点—设置情景任务引入本节课内容—引导学生发现新知识—进行小组讨论找出解决学习新知识过程中遇到的问题—课堂练习—布置课后难题探究相应问题。为了推动形成学生主动学习的生动课堂,还可以结合比较成熟的问题驱动法、讨论法等教学方法。

(3)课后难题探究阶段。这是检验前期教学效果以及提升学生能力的阶段,在课后,教师可以根据学生的课堂表现,在网络上设置题目以便开展“难题探究”。通过这一环节,学生可以巩固课堂所学的知识,而教师可以根据反馈了解学生的学习情况,以便安排下一次课的内容和进程。实际上,由于计算机类课程内容更新较快,课时安排却非常有限,课堂上一般只能完成基本内容的讲授学习,很多教学内容无法在课堂完成,课后难题探究阶段恰好是提升学生能力的关键阶段。在掌握基本知识点的基础上,学生在课后通过自主学习实现能力提升。

以上过程在下次新课又进入一个新的循环,JiTT模式通过循环反馈(feedback loop)机制实现螺旋上升式的知识积累。

2.2 JiTT模式在C语言教学中的运用

针对C语言的教学内容,将JiTT模式应用于C语言教学中,具体可以分为以下几步。

(1)课前预习阶段。主要的是语法规则的引入,使学生明晰新课内容涉及的语法规则,这是C语言入门的基础知识部分。例如对于循环语句for,事先引入语法规则,并强调循环条件中分号的作用。

(2)课堂教学阶段。这一阶段包括C语言语法规则的阶段和教师基本编程技巧的传授,例如先介绍for循环嵌套中语法规则及注意事项,再给出循环嵌套实现九九乘法表的程序实例,其中也包括对于学生计算思维方式的启发。

(3)课后难题探究阶段。这一阶段是本文强调的计算思维提升训练阶段。例如结合C语言中的两个经典习题——打印输出九九乘法表和利用*打印输出菱形,可以提出这样的新问题,在屏幕上打印输出菱形范围内的九九乘法表。学生在解决问题的过程中需要利用计算思维,对问题进行拆解,将复杂问题分解为若干不那么复杂的两个熟悉的子问题——九九乘法表和输出菱形。然后子问题还可以再分解为更小的子问题,最后应用for循环嵌套和if else分支语句。

3 C语言教学中培养计算思维

3.1 基于JiTT模式的C语言循环反馈教学过程设计

通过前述分析,将JiTT模式应用在C语言教学中,对学生计算思维的训练提升具有可行性和可操作性,因此针对培养学生计算思维方式,可提出一个可操作的基于JiTT模式的C语言教学设计方案。该设计方案实现将课堂与网络媒介相结合、学生自主学习反馈与教师响应反馈相结合,融入了C语言教学中的知识要点,并明确了整个教学过程中学生计算思维相关能力的提升过程,见图1。

3.2 JiTT模式实施过程中的反思

对于以上教学过程设计,我们在C语言教学中加以实践,取得了良好的效果,但也存在一些需要反思的问题。

图1 基于JiTT模式的C语言循环反馈教学过程

(1)课程资源的合理选择问题。经过前期教学实践及调研表明,一方面,虽然目前大部分高校具有成熟的课程资源支撑软件平台,但是后期课程资源的建设往往滞后,对于JiTT模式的实施,课程资源建设工作是一个需要长期坚持的过程,需要保持连续性。另一方面,对于C语言课前预习阶段和课后难题探究阶段的课程资源必须进行合理选择,这对于计算思维的提升非常重要,尤其是难题探究阶段题目筛选需要有具体的可操作的指导原则,实践中往往需要课程组教师合力完成。

(2)JiTT模式的实施步骤虽然简单,但是在教学过程中需要教师投入非常大的精力,包括进行教学过程的设计及实施、收集统计学生的反馈信息、与学生及时的互动等,因此对于整个课程内容完全实施JiTT模式不具有可操作性,也没有必要。实践中可以选择C语言教学中的重点、难点,如前述提到的嵌套for循环部分,有选择地实施JiTT模式,实现计算思维能力的提升。

需要强调的是,计算思维的培养是一个循序渐进的过程,这里只给出了一个具体的、有针对性的执行方案,实践中需要教师在C语言的整个教学过程中潜移默化地影响学生,才能在学生初学编程语言的时候形成良好的思维方式。

4 结 语

在非计算机专业的C语言教学中,脱离了已经学习过的程序架构,学生不会灵活地综合运用,学习效果差强人意,笔者分析认为主要由于计算思维的训练不足。JiTT模式是一种操作性较好的基于建构主义的教学模式,可在C语言的教学中引入该教学模式。但是由于JiTT模式只给出了一个简单的框架,并没有涉及教学实施中的很多细节。针对C语言教学中计算思维的培养,我们给出了细化的实施方案,通过JiTT模式的循环反馈机制,使学生实现从概念语法学习上升到适合计算机编程的逻辑思维训练。JiTT模式的实施步骤虽然简单,但是在前期需要教师投入非常大的精力,要保证实施的连续性。一个学期的课程学习,仅仅能实现计算思维的引入,C语言的深入学习需要不断编程实践才能得到计算思维能力的真正提升。

猜你喜欢
C语言阶段计算机
关于基础教育阶段实验教学的几点看法
基于Visual Studio Code的C语言程序设计实践教学探索
基于计算机自然语言处理的机器翻译技术应用与简介
计算机多媒体技术应用初探
在学前教育阶段,提前抢跑,只能跑得快一时,却跑不快一生。
51单片机C语言入门方法
基于C语言的计算机软件编程
信息系统审计中计算机审计的应用
高职高专院校C语言程序设计教学改革探索
计算机网络安全