匡春临 蒋胜利
[摘 要] 针对高校新生亟需加强计算思维能力培养的状况,分析在“C程序设计”课程中引入计算思维的必要性与可行性,提出在“C程序设计”教学内容及过程中全面引入计算思维思想,改验证性为主的实验教学为分析探究性为主,并对教改学生与传统教学学生的考试成绩进行了分析与比较。
[关键词] 计算思维;C程序设计;教学内容
在世界信息化过程中,中国的“后发优势”已经所剩无几[1]。因此,加强以计算思维为核心的计算机科学教育,提升全民的数字素养,提升国家在信息技术领域的创新能力是当务之急。我国在2010年7月,迅速确定了以计算思维为核心的计算机基础课程的教学改革,计算机教育界普遍认为大学第一门计算机基础课程是计算思维能力培养的关键[2]。然而,有个普遍的观点认为计算机只是工具,所以在计算机教育中还存在的很多片面观点,即使开设了以计算思维为导向的计算机基础课程,但缺少知识的内在联系,没有考虑教育对象的接受能力[3],在具体的实施过程中也不理想。C语言是完全模块化和结构化的高级语言,具有运算符、数据类型丰富、与计算机硬件联系紧密等特点。因此,作为计算机基础课程群课程之一的“C程序设计”,从理论层面、实践训练层面以及难度把控上,都非常适合用以培养新生的计算思维意识。
一、“C程序设计”教学中存在的问题
近年来,“C程序设计”的教学内容及方法不断得到改进,大大提高了学生的实践能力,计算思维也被引入“C程序设计”课程的部分知识点或教学方法上[4],但仍存在诸多不足。尤其在一些应用型高校,普遍存在“重语法、练代码,轻设计、少分析”的现象。教师只是把C语言当成一种编程语言,而缺少分析问题、解决问题的训练,割裂“C程序设计”与学科间联系的问题尤其突出。另外,以验证为主的实验也把学生禁锢在“重语法、练代码,轻设计、少分析”的教条中。
二、引入计算思维的“C程序设计”
计算思维内涵丰富,“C程序设计”作为计算机专业的入门课,不能深入讲授相关理论,但深入浅出地讲解一些内涵知识,对培养学生的计算思维意识非常重要。因此,“C程序设计”课程要从教学内容和教学方法改革入手,摒细节,抓思想,加强思维能力的训练,创造性地编写C程序。
1.引入计算科学的思想,培养分析问题、解决问题的能力。在“C程序设计”课程中,要让学生了解计算科学中形式化描述的概念,学会分析简单的计算复杂度,理解并会用递归定义分析问题。学会使用符号系统对求解问题进行精确而严格的描述,对实际系统抽象建模。这个阶段是学生计算思维意识的萌芽期,需避免过多的理论知识,如何深入浅出、理论联系日常生活将是讲授这些概念的关键。变量、数组、结构体等知识点,可以锻炼学生的数据抽象能力。通过实例培养学生认识到,同一个事物在面对不同问题求解时,抽象出来的数据模型可以是不同的。功能驱动的程序设计、模块化编程能够培养学生的过程抽象能力。C语言函数和多文件编程就是理解这个概念非常好的素材。在实际教学过程中,可以把函数的教学直接放到结构化程序设计前,尽可能早地培养学生模块化程序設计思想。
2.了解计算机工作的原理,明白自动计算的本质。冯·诺依曼体系的电子计算机问世后,“计算”已经无时无刻不在影响着我们的生活。在教学中,可以从计算机中的数制开始,让学生了解自动计算的概念。仅仅用0和1两个最简单的代码来表述世界上最复杂的事物,进行最复杂计算,这本身就是吸引学生关注的一个兴奋点。当学生明白了日常生活中的数据是如何在计算机中以二进制的形式表示,以及如何处理这些数据时,计算思维就在学生的意识中播下了种子。在以数据为中心的程序设计中,作为冯·诺依曼机的核心模块之一的内存,尤其重要。C程序设计的本质就是对内存的读写,C语言从最基本的常量、变量到数组、指针等数据,无不与内存有紧密联系。学生掌握了内存的实质,才是真正理解C程序设计的内涵。在“C程序设计”中,内存是抽象的,学生必须理解内存是由若干个具有地址编码的存储单元组成的线性空间,以及程序设计如何在这个空间上进行数据的读写、内存单元的申请与释放。
3.引入算法概念,掌握基本的算法。C语言作为入门课程,考虑其特点和学生的能力,可以引入基本的算法,如穷举法、递推法、迭代法、递归法以及分治法等。通过对这些算法的分析与训练,逐步培养学生的算法意识,学会设计算法,并依据算法编写程序,分析算法的复杂度,学会利用算法解决问题。在教学过程中,必须要让算法设计与语法学习居于同等位置。
4.引入计算思维,强化实验训练。引入计算思维的实验课,必须改验证性的实验为分析性的。学生写出的程序不仅是要执行出来结果,更要让学生开拓思维,用不同的算法、方法解决问题,并且要学会分析不同算法、方法之间的区别。这样不仅可以提高学生编程的兴趣,更重要的是训练了学生分析问题的能力,有助于培养其创新思维意识。在实验中引入时间或空间复杂度分析,变验证性为分析性实验,找到不同程序(算法)性能差异的原因,进而达到在限定复杂度内设计算法、编写程序,还可以在班内搞对抗赛等活动提高学生的兴趣。
总之,在引入计算思维的“C程序设计”课程的教学过程中,教师不仅需要培养学生动手写代码的能力,更需要引导学生去思考代码的本质。图1诠释如何训练学生的计算思维能力。
项目中,针对洛阳师范学院信息技术学院2018级学生实施传统教学模式与计算思维教学模式的期末考试情况做了对比,对比情况如表1所示。其中,后者在优秀率上比前者要好,但在不合格率上要差。这个原因初步判断一是样本不够大,二是设计的教学案例单调、难度缺少梯度、数量偏少。后续要对这些问题进行整改,同时对这些学生进行跟踪调查,进一步了解引入计算思维训练的学生后期学习情况。
三、结语
把计算思维的思想有机融入“C程序设计”教学,要避免出现“拼盘”式、“狭义计算思维”[3]的误区,调整教学内容的侧重点,采用讲授程序转变到分析语法本质的教学方法,摒弃代码公式的训练方式。计算思维能力的培养是一个循序渐进的过程,实践中需要教师在教学过程中潜移默化地影响学生,灌输计算思维的思想,切不能急躁冒进。
参考文献
[1]周宏仁.互联网+与制造业融合的发展趋势[EB/OL].搜狐网,2018-03-19.
[2]陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7-11.
[3]唐培和.计算思维——计算学科导论[M].北京:电子工业出版社,2015.
[4]郑冰,宁鹏飞.基于JiTT模式的C语言教学中计算思维的培养[J].计算机教育,2018(10):101-104.