计算思维导向的C++程序设计课程教改研究
2015-04-29许可闫朝坤巩妍茹
许可 闫朝坤 巩妍茹
摘 要: 从操作系统,软件研究和计算机教学办法等多个方面,以多视角审视了当今C++程序设计教程课程教学中的热点问题。根据程序设计类课程与计算思维之间的内在联系,指出了该课程教学中的几点不足,提出了一套教改思路和实施方案。
关键词: C++语言程序设计; C++教学改革; 实施方案; 程序设计类课程; 计算思维
中图分类号:TP3-05 文献标志码:A 文章编号:1006-8228(2015)12-98-04
Research on the computational thinking oriented teaching reform of C++ programming course
Xu Ke1, Yan Chaokun1, Gong Yanru2
(1. School of Computer and Information Engineering Henan University, Kaifeng, Henan 475000, China;
2. Northwestern Polytechnical University Mingde College)
Abstract: From the operating system, software research and computer teaching methods and other aspects, the hot issues in the teaching of C++ programming course are viewed in a multi angles. According to the inherent connection between the course and the computational thinking, some problems in the course teaching are put forward, and a set of reform ideas and the implementation plan is put forward as well.
Key words: C++ language programming; C++ teaching reform; implementation plan; programming course; computational thinking
0 引言
隨着通讯技术、计算机网络技术和大规模存储技术的发展和日趋成熟,与计算机有关的信息工程技术得到了广泛关注,与计算机有关的相关技术在商业运作和工业生产中开始扮演重要的角色。C++程序设计教程是学生在大学里接触到的第一门计算机专业编程基础课,对于培养学生良好的编程习惯和编程技巧,激发学生的编程热情和对基础知识方面的掌握起到了重要的作用。如何顺应计算思维导向的C++程序设计课程教学改革,改进教学效果,增进学生利用计算机解决学习生活问题的能力,一直是教师和社会各界人士关注的焦点问题。
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》杂志上提出并定义了计算思维(Computational Thinking)。在周教授看来,计算思维的定义是:运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维一经提出,就引起了很大关注和广泛讨论,激发了国内外众多学者、教育家思考。
周教授认为,计算思维吸取了问题解决所采用的一般数学思维方法,现实世界中巨大复杂系统的设计与评估的一般工程思维方法,以及复杂性、智能、心理、人类行为的理解等的一般科学思维方法。在培养学生解析能力时,需要让孩子们拥有阅读,写作以及计算的能力,还要让他们学会计算思维,让计算思维成为学生的一项能力。
计算思维是人类改造世界的最基本的思维模式。基于计算思维导向的C++程序设计课程教学改革,可以让学生拥有这项能力,掌握一种干净、现代、优雅的编程语言,可以帮助学生学习C++语言的编程思路和基本方法,使学生可以对问题进行符合逻辑的科学分析,进行针对现实问题的科学分析、编程以及调试运行。通过更好地学习C++语言,进行算法编程,可以让学生掌握一种技能,更好地适应当今激烈的市场竞争环境。
1 C++程序设计课程的教学意义
C++程序设计课程是计算机程序设计的重要基础,它不仅成为计算机学科的核心课程,而且已经成为其他专业理工学生积极学习的一门课程。根据教学大纲要求以及具体实践要求可知,C++程序设计课程的学习过程也是复杂程序设计的训练过程,要求学生根据C++的编写程序要求使得结构清楚和正确易读,符合正确编码的规范。
C++语言通过对高级抽象的支持,极大地简化了语言的复杂性,使之变得高效实用。而且C++语言从C语言进化而来,是C语言的超集,整体代码使用函数驱动机制来实现,整体代码呈现简洁明了的特点。C++语言也实现了许多特有的功能,比如引用就是C++语言特有的,C++面向对象的程序能够被人阅读与理解,它不仅包含了程序设计对语言要求的基本知识,体现了解决问题的方法,而且还展现了其与计算思维的关系。
C++语言教学,体现着创新性思维的教学培养过程,涉及提出问题,分析问题,抽象表达,解决问题等多项技能,有利于学生得学习能力,思考问题能力,逻辑思维能力,综合创造能力的培养。邓小平指出“科学技术是第一生产力”,二十一世纪的竞争就是对人才的竞争,对科技的竞争,现在计算机领域的发展对大学生的实践和动手操作能力提出了新的要求。在这种要求的推动下,C++课程的教学定位应该变成以计算思维为导向,深刻探讨培养学生能力的一门学科。
2 国内外C++语言课程的教学现状
2008年,ACM明确提出将计算思维作为计算机科学教学的重要组成部分。2010年7月,在西安交通大学召开的《九校联盟(C9)计算机基础教学发展战略联合声明》会议中提出计算机基础教学的重要任务是对于学生的计算思维能力的培养。国内教育界对于C++语言的教学十分重视,国内知名的专家学者除了编写和翻译大量C++语言学习资料外,还努力将许多优秀的学习方法和教学方法展现给学生。笔者总结多年教学经验并引进国外的学习理论,对C++语言教学进行了很多有益的改进和教学改革尝试。例如我校采用了由钱能先生编写,清华大学出版社出版的《C++语言程序设计教程(修订版)——设计思想与实现》一书,这也是现今国内大多数大学在计算机培养方面对于学生C++语言学习领域采用最为广泛的一本中文教材。通过对于C++语言学生学习的广泛调研,我们总结出了一些教学方面的不足,现简单归纳如下:
⑴ 上课师生互动提问环节应该增多;
⑵ 应该更加重视学生实践能力,增多上机实验机会;
⑶ 学生对算法的理解和对具体问题的抽象能力有待提高;
⑷ 注重培养学生良好的编程习惯,重视编码的简洁性,可读性和运行速度问题。
⑸ 需要改善传统考核方式,使动手能力得到足够的重视;
⑹ 课堂增加对程序的演示和运行环节,以提高学生学习兴趣和引起学生对程序操作的重视。
3 C++程序设计课程教学改革研究
针对以上问题,我们需要对C++语言的教学进行改革,以计算思维为导向的C++语言程序设计课程的教学改革可以完美地解决上述问题。
⑴ 增多师生互动
传统教学大多是“老师讲,学生听”的模式,这种古老的师生间耳提面命的教学方式已经不适应于当前科技日新月异的时代,传统的墨守成规的教学方式使老师不会及时了解学生对当前知识的理解掌握程度,一味得向前推进课程,长此以往,会影响学生学习热情和对知识的掌握程度,不会做到融会贯通,当然也会影响老师对于知识点教学程度的判断,使师生的学习进度受到影响。以计算思维为导向的C++语言程序设计课程的教学改革,要求讲师避免传统“填鸭式”教学方式,在课堂上与学生多沟通,及时了解学生掌握情况,注重通过学习知识点进行学生思维方式的培养。计算思维是人的思维,不是计算机的思维,这就要求我们注重课堂师生互动,讲师通过让学生理解所讲内容,形成学生的相应思维逻辑,也可以体现计算思维是人类解决问题的一种方式,并不是需要人类像计算机一样思考,不要机械刻板,不知变通。比如在讲到一个关键的知识点的时候,讲师应该对该知识点进行强调,讲解完后可以通过向学生提问来了解学生的理解掌握程度,如果学生的反应迷茫不知所措,就再讲一遍,或者通过讲解例题,穿插知识点的讲解,使学生由不会到会,再到充分掌握,可以进行创造性思维,提出创造性成果的过程。
⑵ 增多学生上机实战环节
计算机专业是一个偏向应用的理工类专业,这就要求学生具有高超的操作动手能力,如果只强调要求学生对书本概念知识点重要掌握,就会导致学生动手能力严重欠缺,养成“只说不做”的习惯和“纸上谈兵”的缺点,违背了C++语言的教学初衷。现代社会的求职就业要求国内大学培养出具有实战能力的人才。C++语言程序设计课程的教学中,让学生通过自己编写小软件,小程序,来增强自我认同感和编程的兴趣,同时使之成为一种技能,一种可以在现代社会生活中发挥作用的技能。比如通过让学生在上机实践环节里独立制作一段小程序,使用到很多概念知识点,如指针,链表,引用,类,继承与虚函数等,并在实战中灵活掌握它们。同时让学生应用到多种优秀的编译开发环境,使学生明白它们各自的优点/特色,从而从根本上掌握它们。
⑶ 增强学生对具体问题的抽象问题
学习程序设计,不仅要求开发工具实用,而且要在运用程序设计的思想上获得一个大的突破。学习计算机语言的目的是解决现实世界里的问题。计算思维的本质就是抽象化和自动化,其中抽象化包含递归,转换,嵌入等方法,可以把一个复杂问题转换成简单子问题进行求解的过程,可以在计算机里解决现实世界的具体问题,这就要求讲师在教学过程中融入对计算思维能力的培养,在实验项目中渗入重要算法的使用,着重强调算法分析和使用能力,通过设计综合性实验项目让学生完成对实际问题的思考,解决,深入体会算法的美妙,在发现问题、分析问题、解决问题中提高学生的计算思维能力和将问题抽象化的能力。现今科技发展日新月异,唯有利用计算思维为导向着的C++语言程序设计课程的教学改革,才会令学生掌握必要的解决实际问题和抽象化问题的能力。比如在实际教学实践中穿插一些重要基本的算法,讲师还需要准备具有启发性和实际意义的案例,并且要求学生利用讲过的算法实际编码来解决这些问题,进而掌握问题求解的基本方法和基本思维。
⑷ 注重培养学生良好的编程习惯
计算思维与数学思维具有交叉性和互补性,计算思维的形式化表达是在数学思维的基础之上构建起来的。利用计算机来展现人的数学思维,这就要求使用适合的语言来表示,比如要求学生在可以解决问题的前提下,在代码里适当选择循环方式,递归方式,嵌套来实现他们的思想,使用不同的编码方式,会影响程序运行时间和代码的时间复杂度,这在C++代码里是极为重要的。比如组织学生参加的全国ACM大赛,对于同一个问题,在可以得出问题答案的前提下,还要求限制代码的运行时长,所以讲师也应该强调学生的编码规范性问题。以计算思维为导向的C++语言程序设计课程中,计算思维不是把人的思维固定化到机械的計算机模式里,而是尽力构造求解实际问题的一种恰当方法,人借助计算机来解决实际问题。这就要求代码有可读性,让自己和读者理解具体思维过程,在大型实验项目里,保证代码的可读性,有利于软件文档的编写和后续工作的开展,可以让其他人员理解代码的含义,并且有利于纠正代码里的小错误。
⑸ 改善传统考核方式
传统考试主要是对知识点和具体概念的考察,对于像C++语言这样的强调具体实用性的课程而言有很大的局限性。在C++语言的考核里加入对于实际应用程序的考核,不仅遵循了学生的认知规律,不用强迫学生去死记硬背一些概念,而且可促使学生在理解知识的同时,训练基于C++语言进行分析问题和解决问题的能力,让考核与实际教学相结合,使学生的计算思维能力在学习中自然形成。C++语言的程序设计课程要求教会学生编写程序,评价程序,优化程序,教师在教学过程里把计算思维分解为了一系列属于计算思维的内容和技巧,通过每一节课的讲授,让学生理解掌握并且内化为自己的思维方式。所以我们在考核过程里提出加入相应的程序分析编写类的题目,并且把上机环节的考试权重加大,从根本上增大学生的重视,除了可以检查平时学生上机实验并打分外,还可以让学生向老师提出编程和分析问题小技巧,对此应该酌情考虑加分,以鼓励学生对编程的热情与思考。
3 结束语
以计算思维为导向的C++语言程序设计课程教学改革是必要而且必須的,也是势在必行的。实现以“计算思维”为导向的课程改革,首先应该从计算思维能力培养的角度出发,深入贯彻落实C++语言程序设计课程的教学改革,重新审视教学实践的各个方面,对课程教案分析和讲课节奏进行重新设置,以计算思维为导向,重新设计C++语言程序设计课程的教学计划,在教学中着重培养学生利用计算思维来分析解决问题的能力,这些需要广大同仁的长期探索与实践。
参考文献(References):
[1] Wing J M. Computational Thinking[J]. Communications of
the ACM,2006.49(3):33-35
[2] Jeannette M.Wing.Computational Thinking[J].Comminications
of the ACM,2006.49(3).
[3] 臧劲松.培养学生计算思维的程序设计课程教学[J].计算机
教育,2012.2.
[4] 牟琴,谭良.计算思维的研究及其进展[J].计算机科学,
2011.3:10-15
[5] 董荣胜,古天龙.计算思维与计算机方法论[J].计算机科学,
2009.1:1-4
[6] 于晓强,赵秀岩,闫丕涛.计算机程序设计课程中计算思维能
力的培养[J].计算机教育,2011.13:18-21
[7] 赵致琢.计算科学导论(第三版)[M].科学出版社,2004.
[8] 王金虹,马斌.基于计算思维的Visual Basic程序设计课程研
究[J].教育教学论坛,2015.24:245-246
[9] 李倩.以“计算思维”为导向的VB程序设计课程改革探讨[J].
信息与电脑,2013.8.
[10] 郭其一,丁紊杰,邹洁.基于MiNiGUI的列车状态信息人性
化平台实现[J].工业控制计算机,2004.3.
[11] 孙洪涛,常子冠.适应性学习系统的发展历程及研究现状[J].
中小学信息技术教育,2006.11.
[12] 钱能.C++语言程序设计教程(修订版)——设计思想与实现
(第二版)[M].清华大学出版社,2009.