孙培锋
摘要:C程序设计课程作为工科专业学生的一门公共基础课程,其旨在培养学生的抽象思维能力,而计算思维的核心就是抽象思维能力。本文针对当前C程序设计课程教学中存在的问题,分析产生这些问题的主要原因,并提出了以培养学生计算思维为核心的C程序设计课程模式改革方法。
关键词:计算思维;C程序设计;教学模式
一、计算思维与程序设计
2006年,美国卡内基梅隆大学的周以真教授在计算机权威期刊《Communications of the ACM》杂志上指出:“计算思维是运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等涵盖计算机科学之广度的一系列思维活动” [1]。她指出,计算思维是每个人的基本技能,不仅仅属于计算机科学家,我们应当使每个孩子在培养解析能力时不仅掌握阅读、写作和算术(Reading,Writing,and aRithmetic,3R),还要学会计算思维。计算思维是一种形式规整、问题求解和人机共存的思维。计算思维概念一经提出,就引起了国内外研究者的注意。2010年,在西安交通大学举办的首届“九校联盟(C9)计算机基础教学课程研讨会”上,明确提出计算机基础教学的核心任务是计算思维能力的培养。
计算思维能力培养是计算机学科教学的核心任务,涉及计算机学科专业能力培养的目标是对计算机的认知能力和应用计算机的问题求解能力[2]。计算思维培养的本质是培养问题求解能力,而程序设计课程重点体现了计算机语言的问题求解方法,这与计算思维能力培养的主要内容相吻合。当然一门课程并不能包含计算思维的所有内容,需要一系列计算机基础应用课程协作完成计算思维能力的培养。因此,计算思维能力的培养为今后学生应用计算机技术解决专业问题奠定了坚实的基础。
作为计算机类专业基础课,程序设计是将分析和解决问题的思维活动转化成计算机程序的过程。学生在学习程序设计课程中,可以通过问题分析、算法设计、程序实现来体验问题求解的思维训练过程。所以,学习程序设计课程的目的不应是单纯掌握某门程序设计语言的语法规范或单纯学习一门程序设计语言,而是学习利用计算机分析和解决問题的基本过程和思维方法[3]。
二、现有程序设计课程存在的问题
1.计算机类课程课时频频遭减,但为保证完成必要的教学内容,无疑会为了追求进度而放弃深度和引导学生自行思考解决的课时,学生来不及理解消化所学内容。
2.教师在课程讲授的过程中过于重视程序语法细节,而忽视了需求分析、功能划分、编程思路以及算法设计等,导致学生在学习的过程中常一知半解的状态,从而在编程的过程中存在缺乏思路、条理不清、代码使用不规范等问题。
3.随着各种校外考试机构主办的证书考试在校园内广泛开展,学生学习“程序设计”课程的目的正在发生变化,相当多的学生只是为了一纸证书在学习,一些学校也在为证书忙碌,能力最大化经常被晾在一边,正常的教学活动与教学改革受到冲击。
4.“学不致用”的质疑声一直实际伴随着程序设计课程。不同于传统的公共基础课程,程序设计课程具有鲜明的应用性,而“学不致用”是一种致命的质疑。笔者对计算机相关专业的200名毕业生的进行问卷调查,结果如表1所示。
通过表1可以发现,调查对象可以分为三种人群:Ⅰ类为有需求并使用的人;Ⅱ类为有需求但没有能力使用的人;Ⅲ类为没有需求的人。此外,调查过程中发现:Ⅲ类人中一部分人认同“学习编程没有用处”的观点,即认同“学不致用”;而另一部分人则认同“并不是自己的工作不需要编程,而是自己的水平无法胜任编程从而选择不需要编程的工作”的观点,这一部分人肯定程序设计课程的应用性而未能实践其应用性,即“学不能用”。而Ⅰ类人中部分人则认同“仅靠学校学到的编程知识是不能胜任工作需要的,要编出程序还需自己继续学习、查阅许多资料”的说法,这从反面也印证了“学不致用”现象的客观存在。
三、程序设计课程改革的必要性
传统的程序设计教学模式一般为:
①介绍该语言数据类型及运算符、表达式;
②介绍其语法规则,讲解例题;
③最后布置作业。
这种教学模式以教师为中心,虽然能较好地保证知识的系统性,但因知识枯燥,在影响学生学习积极性的同时,也束缚了学生思维的发展,学生实践能力不足,综合分析能力及创新能力薄弱,难以满足当今社会对人才培养的要求。
近年来,教育部高等学校大学计算机课程教学指导委员会提出了“大学计算机基础课程教学基本要求”,明确了以计算思维为导向的计算机基础教学改革方向,目的是通过梳理核心知识体系,改革教学内容和教学方法,将计算思维培养建立在知识理解和应用能力培养基础上[4],以提升学生的计算思维能力。计算思维能力的培养已经成为高校计算机基础教学改革的目标。因此,急需将程序设计课程的编程基础和计算思维的培养结合起来,对程序设计课程进行教学改革,以提高程序设计课程的教学质量,培养学生的编程能力、计算思维能力及应用创新能力。
四、基于计算思维的C程序设计课程教学模式改革
作为工科专业学生的一门公共基础课程,C程序课程教学的目标是帮助学生学习计算机分析和解决问题的基本过程和思路,而不是成为程序员。因此,改革的方向应当是帮助学生降低学习门槛,逐步展现计算思维方法和程序设计过程,从而帮助学生培养分析问题与通过程序设计解决问题的能力。具体做法如下:
(一)教学内容改革
适当淡化语法细节,在“以程序抽象为主线”的思想指导下,对程序设计语言本身进行适当裁剪,去除较为复杂、较难理解、使用很少、不太规范的部分。将教学重心放在计算思维能力和程序设计能力的培养上,将分解、抽象、自动化、约简、转化、递归、迭代、启发式、折中等计算思维的主要特征融入到程序设计教学过程中,如通过顺序结构把复杂工作分解为一系列较简单的工作;通过分支结构,把整体处理分解为对一些互不相交、更为简单的分支处理;通过循环,把复杂问题的处理分解为一系列类似处理;通过函数机制实现功能模块的分解和抽象;采用抽象、分解来解决相对比较复杂的问题,通过约简、转化、递归、迭代来实现复杂问题的分而治之等。endprint
(二)教学过程改革
引入基于问题的互动教学,精选反映计算思维思想的问题案例或者相关知识模块的引导性问题,通过课堂互动讨论等方式,讨论问题的分析、分解和精确化,找出问题解决的主要步骤,确定函数抽象,找出循环迭代、条件控制结构,最后进行程序实现。做完之后还应该分析讨论所设计程序的优点和缺点,考虑其他设计实现的可能性。
(三)实验内容改革
C程序设计课程是理论与实践并重的课程,在实际教学过程中必须将理论教学与实践教学紧密结合,使其相互促进。为了解决学生对所学知识缺乏必要的感性认识的问题,必须设计合理的实验教学内容,将知识传授、技能训练、能力培养融于一体,让学生做中学,学中做,使所学理论知识在实验中得到验证和应用。依据“理论够用,突出实践”的原则,将C程序设计实验教学内容采用循序渐进、由浅入深的方法,分为验证型实验、设计型实验、综合型实验,使学生在记忆中理解,在理解中应用,在应用中创新。
(四)考核方式改革
传统的C 程序设计课程一般采取闭卷纸质考试的方式,题型主要包括:选择、填空、判断和程序设计题等。而C程序设计课程培养的是学生的思维能力和实际操作能力[5],以往的考核方式只能考核学生对于书本知识的掌握情况,并不能真正考查学生的实操能力。学生即使通过了闭卷考核,相关知识点掌握得很好,但独立设计算法和动手编程能力却并不强,在上机解决实际问题时依然举步维艰。
因此考核方式应采用上机考试代替纸质考试。依据课程要求,事先将考试题目导入考试系统。学生需要在规定的考试时间内提交完整的程序,测试通过即为合格。如果测试未通过,教师会通过查看源代码,依据学生的答题情况,给出合适的成绩。
五、结语
计算思维包含的内容不是一门课程所能承担的。计算和计算思维是计算机基础课程的基本理论和基本思维,早期的计算机课程教学强调技能培养和能力培养,计算思维的引入,将计算机课程对于大学生科学思维能力培养的重要性提升到了前所未有的高度。在大学计算机课程里面有目的地引入计算思维,并且加以适当训练,有利于提高学生对于计算机科学的理解和认识,有利于训练科学思维的素质和能力。
C程序设计课程是高校計算机教育的重要基础课程。通过基于计算思维的程序设计公共基础课程教学改革,可以使学生在掌握程序语言语法规则的基础上,培养学生计算思维能力和创新能力,从而进一步提高C程序设计公共基础课程的教学质量。
【参考文献】
[1]Jeannette M. Wing. Computational Thinking.Communications of the ACM, 2006(03).
[2]王荣良.计算思维教育[M].北京:上海科技教育出版社, 2014.
[3]陈国良.计算思维与大学计算机基础教育[C].济南:第六届大学计算机课程报告论坛,2010.
[4]牟琴,谭良.计算思维的研究及其进展[J].计算机科学,2011(03).
[5]吴文虎,徐明星.程序设计基础[M].北京:清华大学出版社,2008.endprint