设为首页
加入收藏
期刊导航
网站地图
首页
期刊
数学与物理
地球与环境
信息通讯
经济与管理
生命科学
工程技术
医药卫生
人文社科
化学与材料
会议
合作
新闻
我们
招聘
千人智库
我要投搞
办刊
期刊菜单
●领域
●编委
●投稿须知
●最新文章
●检索
●投稿
文章导航
●Abstract
●Full-Text PDF
●Full-Text HTML
●Full-Text ePUB
●Linked References
●How to Cite this Article
Advances in
Education
教育进展
, 2014, 4
,
36-
41
Published Online
May
2014 in
H
ans. http://www.hanspub.org/journal/ae
http://dx.doi.org/10.12677/ae.2014.43B007
36
Cultivating Computational Thinking
Capability in
C
P
rogramming Language
Teaching
Shimin
Zhu
1
,
Guifang
Sun
1
, Chongyang Zhang
1
,
Qunxi Zhu
1
, Defeng Guo
2
1
Northeastern
University
at Qinhuangdao, Computing Center,
Qinhuangdao
2
College of Science, Yanshan University,
Qinh uangda o
Email:
zhushimin816@163.com
Received
:
January 2014
Abstract
It is the primary goal of basic computer
education
to c
ult ivat
e the computational
thi nki ng
capab il-
ity of students.
The present paper puts forward how to
achieve
this goal via
organiz
ing
class con-
tents and teaching methods. The most important thing is learning practice
s, which
can
improve
student s
’
ability
in
computational thinking analysis
and
problem solving
. As a result, the subject
knowledge and the computational thinking ability promote each other, which is helpful to
im-
prove the ability of practice and innovation
ultimately
. This method has achieved
good
effect in
actual teaching
.
Keywords
C Programming Language
,
Practice Teaching
, Computational Thinking
C
语言程序设计教学中计算思维的培养
朱世敏
1
,孙桂芳
1
,张重阳
1
,祝群喜
1
,郭得峰
2
1
东北大学秦皇岛分校计算中心,秦皇岛
2
燕山大学理学院,秦皇岛
Email:
zhushimin816@163.com
收稿日期
:
2014
年
1
月
摘
要
培养学生的计算思维能力是计算机基础教育的基本目标。本文阐述了在
C
语言程序设计教学中,通过组
C
语言程序设计教学中计算思维的培养
37
织教学内容和教学方法,提出对学生计算思维能力培养的方法和途径。重点通过实践学习,提升学生运
用计算思维分析问题、处理问题的能力,进而使学科知识与计算思维能力互相促进,共同提高,最终达
到提升实践创新能力的目的。该方法在实际教学中取得了良好的效果。
关键词
程序设计语言,实践教学,计算思维
1.
引言
计算机程序设计语言是高校进行计算机基础教育的重要课程之一,通过系统地学习一门高级语言,
使学生掌握程序设计的基本思想并具备一定的程序设计能力语言。
C
语言以其功能丰富、表达力强、使
用灵活方便、目标程序效率高、可移植性强等特点,已经成为计算机程序设计人员必须掌握的一种通用
高级程序设计语言。在大部分高校中,
C
语言程序设计成为理工科学生的一门必修课程。
教育部高等学校计算机基础课程教学指导委员会提出了大学计算机基础教学四个方面的能力培养目
标:对计算机的认知能力;应用计算机解决问题的能力;基于网络的学习能力;依托信息技术的共处能
力
[
1]
。这四方面的能力目标中,对计算机的认知能力和应用计算机的问题求解能力,正反映了计算思维
的
2
个核心要素:计算环境和问题求解。
C
语言程序设计是计算思维中语言级的问题求解,它不仅包含
程序设计的基本知识,还包含大量体现计算思维的基础概念、思维模式和解决问题的方法
[
2]
。在教学中
以培养计算思维能力为核心任务,讲授程序设计方法为主要内容,培养学生抽象思维和逻辑推理能力,
通过加强上机实践,使学生掌握计算机问题求解的基本方法和思维模式,为学生综合素质的提高打下坚
实的基础。
2.
计算性思维
美国卡内基•梅隆大学的周以真
(Jeannette M.
Win g)
教授在美国权威计算机杂志《
Communications of
the ACM
》上,定义计算思维
(
Computational Thinking
,也称计算性思维
)
是运用计算机科学的基础概念进
行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动
[
3]
。计算思维实际
上是一个思维的过程,能够将一个问题清晰、抽象地描述出来,并将问题的解决方案表示为一个信息处
理的流程。计算思维包含了数学性思维和工程性思维,而其最重要的思维模式就是抽象话语模式
[
4]
。抽
象的语言和算法,对问题会有一种新的解决问题的技能。计算思维建立在计算过程的具体实现和约束之
上,利用程序语言控制机器帮助人们在真实的情况下解决实际问题。
C
语言具有使用灵活、自由度大、
抽象度深等特点,而计算思维又涉及计算机语言的编程思路和基本方法,特别是对问题进行符合逻辑的
科学分析,抽象到数学层次上,并进行算法设计、编程与调试
[
5]
。
C
语言程序设计的教学过程为计算思
维的培养提供了很好的诠释。
3. C
语言学习中遇到的问题及解决策略
在
C
语言学习中学生遇到的主要问题有学习目的不明确、数学基础不一、缺乏学习的韧性。
要解决这些问题,首先要激发学习兴趣使学生明确
C
语言的重要性。在计算机语言学习中,不仅可
以学到技术,还提供一种思维的模式。计算科学这个领域提供的思维模式,对所有的领域、职业都是适
用的,都是能够从中受益的。
大部分院校的
C
语言程序设计开设在入学第一年,作为程序设计的入门课程。学生的计算机基础不
C
语言程序设计教学中计算思维的培养
38
同,主要是数学基础差异很大。针对该问题,在教学中设计简单有趣、接近实际需要的实验内容,既让
学生上手快,增强其成就感,又能够让学生感兴趣,进而树立学生运用所学知识解决问题的信心。
在课程教学中,许多学生都认为
C
语言中概念复杂,规则繁多,容易出错,且程序设计课程逻辑性
很强,不能很好地理解算法,编写程序也很困难,在不同程度上产生畏难心理。针对该问题,要使学生
明确,在学校不仅是学习知识,更重要的是学会学习的方法。技术发展的日新月异,学会了学习的方法,
有了坚实的基础,就触类旁通,很快掌握新的知识。在课程教学中,只有充分调动学生的积极性和主动
性,学生才会自觉地学好这门课
[
6]
。在
C
程序设计教学中以计算思维能力培养为导向,不仅能为学生的
编程学习和应用研究打下坚实的基础,养成良好的编程习惯,同时也能锻炼学生的计算思维和养成用计
算思维的方法思考、解决问题的习惯。
4.
教学内容和教学方法上强化计算性思维
程序设计语言的学习需要大量编程实验,只有上机验证才能明确程序的可行性,进而实现将计算思
维应用到解决实际问题中。因此,在课程的教学过程中,实验部分占整个教学过程中的核心地位,设计
合理的教学内容、结合各类教学方法,引导学生进行主动的探索性学习,对启发学生在后续阶段学习过
程中创新思维能力的培养具有重要意义。
4.1.
各阶段教学内容选择
C
语言学习中存在的疑点或难点,学生可通过上机调试得到明确解答,亦可进一步加深对内容的理
解。因此,在教学过程中,一定要做到精讲理论部分,加大上机实践的力度,对所学的每一部分内容都
要学生完成一定数量的上机练习。为使每个学生能自觉地投入到
C
语言的学习中来,每部分的上机习题
必须精心挑选,既要有基本的、较简单的题目,又要有一些具有挑战性较难的新颖有趣的题目,并且注
意知识的系统化。
4.1.1
.
简单实例带动语法使学生熟练掌握计算环境
“兴趣与爱好是最好的老师”。在教学的最初阶段,选取接近生活、浅显易懂、趣味性实例让学生
以较快的速度,接触程序基本结构、数据类型、数组、函数等编程基本概念,减少学习的恐惧心理。让
学生带着问题去学习解决问题的方法,通过形象生动的例子讲解使学生对枯燥的理论知识具体化、趣味
化,培养和激发学习兴趣。反复的实践是提高学生能力、消除学生思维障碍的直接方式,对于程序设计
语言的初学者而言,可以达到事半功倍的效果。学生上机中碰到问题时,应注意培养学生自己思考,独
立分析调试的能力。实验结束后,自我分析上机出现的问题和解决的方法。这样给学生一个反思的过程,
对
C
语言有更深、更全面的认识和理解,逐步提高实际操作和学习的能力。
通过简单实例带动语法学习,是计算思维方法的模仿。学生们直观地看到各个知识点在实际程序中
的应用,快速熟悉
C
程序设计实验环境,掌握
C
语言的基本知识,为计算思维的形成打下基础。
4.1.2
.
设计性内容培养学生计算思维能力
熟悉了设计环境后,要求学生在模仿的基础上学会灵活应用,进一步锻炼学生的动手能力,培养学
生分析问题、解决问题、研究和探索问题的能力。对前边的简单实例实现新功能扩展,熟悉的问题功能
丰富,实现将抽象的概念形象化,引导学生讨论,鼓励学生提出多种解决方案,进而培养计算思维。运
用多种计算思维方法分析问题和解决问题,是计算思维方法的综合运用。
4.1.3
.
综合性应用培养学生创新意识
综合性应用是对课程所学知识的总结和巩固。它应用已有相关知识分析问题、解决与实际生活或工
C
语言程序设计教学中计算思维的培养
39
作相关的问题。其要求具有一定规模,由多名学生参与,分工合作,要求学生给出详细的系统解决方案,
包括问题的定义及描述、算法描述、测试计划及测试结果、程序源代码、程序存在问题和局限等,以期
激发学生进一步主动创新学习的热情,提高学生的综合编程应用能力和团队协作精神。通过自身实践获
得成就感,潜移默化地培养学生的计算思维和应用创新能力。
4.2.
教学方法
4.2.1
.
启发、引导、激发学习兴趣
在教学过程中,启发并引导学生在问题解决中学习。首先提出问题,留给学生时间思考、讨论、解
决问题,进而深入地展开学习。加强知识的趣味性,将知识点变得通俗易懂,引发学生的兴趣。启发式
教学能充分调动学生学习的积极性、主动性和创造性,引导学生独立思考,启发学生的编程思想,横向
联合,融会贯通地掌握相关知识,从而培养学生逻辑思维、分析问题和解决问题的能力。
实践证明,通过启发和引导,明显的增强了学生的学习兴趣和计算思维能力。例如,在讲数组概念
时,可以提问:如何表示一列火车的每节车厢的售票信息,如何表示表示一列火车的某节车厢的每个座
位的售出情况。根据之前掌握的知识,学生会想到:定义车厢数的整形变量用于存放该火车每节车厢的
售票信息,定义车厢数
*
一节车厢的座位数个的整形变量用于存放该火车某节车厢的每个座位的售出情况,
这时候同学们就会发现定义变量的数目不可想象。学生此刻需要讨论该如何合理说明变量。这时引入一
维数组和二维数组概念及性质,学生不仅能够容易理解数组的性质,还能够清楚数组能够用在哪,以达
到事半功倍的效果。
4.2.2
.
交互式教学
采用教学软件,实现教师与学生互动,进而活跃课堂气氛。图、表、动画演示等多媒体教学环境下,
可以在课堂上演示较复杂的应用例程,可以现场编写代码并逐步演示程序的运行结果和调试排错过程
[
7]
。
例如,讲冒泡排序时,通过动画来展示冒泡排序的具体步骤,可以使学生们更形象的理解“冒泡”的过
程。
实践证明,在教学中应用网络蜘蛛教学软件及多媒体,明显提高了教学效果,学生的计算思维能力
得到巩固。教师上课时,可以将错误的小程序让学生思考、演示排错、运行,最后由教师提示并调试补
充。这样直观的交互过程使知识掌握的更深刻。
4.2.3
.
循序渐进教学
在教学环节上,采取将一个项目贯穿整个教学过程,来激发、培养和稳定学生的
C
语言学习兴趣。
例如,选用“点菜系统”,让学生围绕这个程序项目循序渐进、由简入难地实现,便于思维训练的连贯
性,促进计算思维的逐步完善。整个程序的功能需求及知识点应用如下表
1
所示。
Table 1.
O
rder s
ystem which accomplishes step-
by-
step
表
1.
逐步完善的“点菜系统”
序号
功能需求
知识点应用
1
选择“菜名”,即可给出所选菜的价格
if
、
switch
分支结构
2
选择指定数目“菜名”,即可给出菜的总价格
for
、
while
循环内分支结构
3
选择不确定数目“菜名”,即可给出菜的总价格
break
、
continue
按条件跳出循环
4
将每次所选“菜名”及“价格”保存
数组、指针结合
5
实现简单“菜谱”维护与管理
结构体
6
酒店点菜管理系统,实现菜谱管理及点菜结算等
文件
C
语言程序设计教学中计算思维的培养
40
5.
实践中计算性思维能力培养
C
程序设计实验是提高实践能力、积累经验、学懂计算思维方式的重要环节,是锻炼学生对计算思
维方法的运用、探索解决实际问题的重要过程。以上机实验为重点、以计算思维能力培养为导向的教学
模式,让学生能够“在编程过程中学习知识、在学习过程中拓展思维”。
5.1.
规范上机流程
,
养成良好的思维能力和编程习惯
对于每次实验内容,要求学生按照“课前预习
-
上机实践
-
理论升华
-
再实践
-
归纳总结”的顺序依次
进行,按示例练习,并推动理论的学习,然后再自己多思考,多上机实践。加强程序的质量方面的传授
和训练,强编写高质量
C
程序的训练,养成良好的编程风格。对于每一个题目规范的上机实验流程,引
导学生养成良好的思维能力和编程习惯,逐步训练、提高分析解决问题和开拓创新的能力。
5.2.
扩散思维训练
扩散式启发可以培养学生发散思维和收敛思维。发散思维是在解决问题中寻找各种可能的解决方法,
即一题多解。收敛思维是在解决问题中尽可能利用自己已有的知识和经验对众多的方法进行比较,从中
确定出最佳方案,即启发学生利用多种技术、多种算法解决同一个问题
[
8]
。在设计实验内容时,鼓励学
生开阔思路,尝试多种方法来实现同一个计算任务,提倡算法多样化的同时,引导学生思考和分析已有
算法的优缺点,进行简化和优化,进而培养学生计算思维的多样性和灵活性。例如,实现两数互换。这
里引用水杯做实例,定义两个盛有不同颜色饮料的水杯比作变量,即可以通过引用中间变量
(
增加一个空
杯
)
实现杯中饮料的互换,第二种方法通过数值变换
(
两个水杯互倒
)
实现,第三种方法通过两数的按位异
或实现。不同的实现方式,所占用的时间和空间不同,根据需要来选择适合的方式实现。因此,进行扩
散思维训练来引导学生将现实应用中的实例应用到程序设计中,进而培养学生应用计算思维解决实际问
题。
6.
结语
在
C
语言程序设计教学中,教师需要不断提炼教学内容,授课方式上不是简单的传教,而更趋于启
发、引导、互动和课内外互通,主动地、有意识地将计算思维培养融入到理论教学和实践教学的各个环
节,有利于学生用计算思维方式来求解问题,同时对提高学生的信息素养和创造性地解决问题的能力都
有积极的作用。通过几个学期的尝试和努力,学生们计算思维的培养取得了较为明显的效果,尤其学习
的积极性有了明显提高,更加敢于尝试。然而计算思维的培养是项终身教育,需要继续把强化计算思维
做到实处。
参考文献
(References)
[1]
教育部高等学校计算机基础课程教学指导委员会
(2009
)
高等学校计算机基础教学发展战略研究报告暨计算机
基础课程教学基本要求
.
高等教育出版社
,
北京
[2]
臧劲松
(2012)
培养学生计算思维的程序设计课程教学
.
计算机教育
,
1
,
78-80
[3]
Wing
, J.
M.
(2006)
Computational Thinking.
Communications of the ACM
,
49
, 33-35
[4]
走进计算性思维
——
Jeannette M.
Wing
教授的精彩分享
http://blog.sina.com.cn/s/blog_4caedc7a0102emnl.html
[5]
Dong, R.S
.
(2007)
Introduction to computer science
—Thinking and Methods.
Higher Education Press,
Beijing,
9.
[6]
Lewis,
C., Jackson,
M.
H.
and
Waite,
W.M.
(2010)
Student and faculty attitudes
and
beliefs
about
computer science
.
Communications of the ACM
,
53
,
78-85.
C
语言程序设计教学中计算思维的培养
41
[7]
Les
,
Z.
and Les,
M.
(2008
)
Thinking,
visual thinking
, and
shape understanding.
Studies in Computational Intelli
gence
,
86
, 1-45.
[8]
Yuan
, L
. and
Lu
,
G. (2011
)
Training for creative thinking capability on Programming language teaching
.
Computer
Education
,
12
,
5-8.