论文部分内容阅读
[摘 要]计算思维是国内外计算机教育研究的热点,提出了在《C语言程序设计》的课程教学中引入可视化教学模式和系统观的教学观点。实践表明,可视化教学模式有助于将抽象的概念和问题变得直观,降低了学生的认知负荷,系统观的教学观点使学生能够站在系统的高度考虑和解决应用问题,具有系统层面的认知和程序设计能力,提高了学生的计算思维能力。最后,给出了今后努力的方向。
[关键词]C语言程序设计 可视化 系统观 计算思维
中图分类号:G4 文献标识码:A 文章编号:1009-914X(2016)06-0235-02
1 引言
计算思维是当前国际、国内的计算机科学界、教育学界关注的重要课题,计算思维的研究和发展对我国的计算机教育有着十分重要的意义。
2006年3月,美国卡内基梅隆大学的计算机科学系主任周以真教授最早给出了计算思维的概念:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动[1]。
目前国外关于计算思维的发展有一定的成效,2007年3月,卡内基梅隆大学和微软公司宣布建立“微软——卡内基梅隆计算思维中心 ”(Microsoft Carnegie Mellon Center for Computational Thinking),该中心将致力于计算机科学新兴领域的研究,特别是那些能够对其他学科的思维产生影响的领域;美国计算机协会(ACM)在网上公布的对CC2001 (CS2001)进行的中期审查报告(CS2001 Interim Review)中就清楚表明,要求将“计算思维”的概念及其本质加入到“计算机导论”课程当中去;美国国家计算机科学技术教师协会(CSTA)发布了名为《计算思维:一个所有课堂问题解决的工具》(Computational Thinking: A problem solving tool for every classroom)的报告,报告对什么是计算思维进行了详细的阐述,并且得到了微软公司(Microsoft Corporation)的大力支持。
国内也有一批专家学者在计算思维方面做出了一些颇有成效的研究, 我国对计算思维的关注主要时间是高等学校计算机教育研究会于2008年10月在桂林召开的关于“计算思维与计算机导论”的专题学术研讨会,此会议专题探讨科学思维与科学方法在计算机课程教学中的推动和创新作用。对此,多数高校在研讨会之后分别在自己所在高校开展了关于计算思维的研究,桂林电子科技大学计算机学院也开设了以计算思维为核心培养的计算机导论精品课程。
培养学生的计算思维能力应该成为计算机公共基础教学的核心任务[2]。《C语言程序设计》是一门重要的理论性和实践性都很强的计算机公共基础课,初學者普遍反映难学。计算思维的培养面临着许多挑战[3],目前仍没有有效的教学模式,仍然处于探索阶段。C语言程序设计的学习和计算思维的培养是相互促进的,计算思维能力提高后,可以更高效和深入的学习C语言程序设计,C语言程序设计的学习又能促进计算思维能力的提高。本文通过采用可视化教学模式在C语言程序设计的教学中的应用,以直观的方式讲解C语言中抽象的知识,以动态的可视化方式展示隐含在C语言程序设计中的计算思维,从而达到降低学生的认知负荷,在提高C语言程序设计的学习效果的同时,增强计算思维的能力。
2 C语言程序设计可视化教学模式的设计和计算思维的培养
《C语言程序设计》的知识蕴含了计算思维,掌握好C语言程序设计知识有助于计算思维能力的提高,计算思维能力的提高又促进和加深C语言的学习,这是个相辅相成、互相促进的关系。《C语言程序设计》的计算思维教学方法应重视从以下几个方面实施可视化教学模式。
2.1 以静态图形展示基本概念
C语言中的很多概念是比较抽象的,不易深入理解,这成了初学者利用C语言的基本语句进行解决问题和创造性思维的拦路虎。理解和使用好这些概念要求学生能够在计算机能力的限制之下计算性地思考。例如对数组的理解与使用,如果仅仅教会学生“数组是连续排列的相同数据类型的元素集合”这样的抽象知识,学生仍然难以灵活应用数组去解决问题。为了让学生直观的理解数组的特点,可以如下图所示展示出如何使用数组[4]。这样,就可以将“不可见”变为“可见”, 将“无关”变为“相关”。
如上图所示,教师在讲解数组之前,先把变量比喻成箱子,不同规格的箱子相当于不同的变量类型,把一维数组比喻成多个无缝隙排列在一条直线上的相同规格的箱子。这样,学生就容易理解数组的能力和局限性:数组可以通过“箱子编号”随机访问数组元素,数组是通过内存的连续区域来存储数据的,使用数组时不能越界,数组元素的类型必须相同。
2.2 问题的可视化展现
《C语言程序设计》课程讲解的问题的逻辑结构、存储结构往往比较抽象、枯燥。生动、形象的可视化形式引出用有趣的应用实例,例如约瑟夫斯问题和汉诺塔问题,可以极大地激发学生的学习兴趣,活跃课堂气氛,可以使学生迅速、清晰的抓住问题的本质,从而把精力集中于基于计算思维的问题求解上来。
3 C语言程序设计系统观的教学观点和计算思维的培养
系统设计的能力是计算思维的应有之意,目前的C语言课程只是强调语法和编程能力的培养,而不能很好地培养学生的系统设计的能力。另外对于计算机硬件系统的相关课程,如数字逻辑、计算机组成原理、汇编语言、计算机微机接口技术等,学习以后,学生对硬件系统知识有一定的了解,但知识都是孤立、片断性的,更不用说具有系统层面的认知和设计能力,能站在系统的高度考虑和解决计算机系统的应用问题能力[5]。
计算机学科主要研究的是计算机系统各个不同抽象层的实现及其相互转换的机制,计算机学科培养的应该主要是在计算机系统或在系统某些层次上从事相关工作的人才。独立学院计算机专业课程的设置按照计算机系统抽象层各层的内容学习对应的课程,如图1所示。可以清楚地看到,我们将计算机系统的各层的知识分解为一门门独立专业课程让学生学习,这些独立的专业课程好比一节节单独的火车车厢,而没有课程帮助他们帮这些火车车厢连接起来,形成一辆完整的火车,而只有完整的火车才有它本来的价值。而完整的火车即是系统观,即具备能够站在系统的高度考虑和解决应用问题,具有系统层面的认知和软件设计能力。 3.1 从系统层面构建知识体系
我们将C语言围绕C语言程序的编译、链接和执行,从系统层面帮助学生形成计算机学科完整的知识体系,并且注重后续专业课程之间的关系和衔接能促使学生真正做到融会贯通,领略到计算机系统能力的真正涵义[6]。同时学生在大三和大四可以有更多的时间学习各个专业方向的知识,加强专业技能的训练。
教师以C语言的编译、连接、执行为主线,结合计算机系统各大部件,具体介绍了各大部件的功能和结构,剖析了高级语言与底层计算机系统之间的关系,从而引起学生对高级语言程序编写的思考,激发学生从计算机系统的的角度学习,使其能够站在系统的高度考虑和解决应用问题。
3.2 基于系统观的教学内容设计
老师在讲解各个知识点的同时,要注意以实际生活中的问题和学生实际编程遇到的问题引入,吸引学生的注意。比如, 在講解程序的转换及机器级表示时,主要讲清C语言、编译、操作系统和硬件结构的关系,并且注意用汇编级的指令系统去解释C语言程序运行的结果,对出错的结果能从指令集与硬件系统的角度去理解程序的结果[7]。能从系统的角度去思考与解决问题。
面向系统观进行教学内容设计可以让学生更多地了解学习C语言程序设计的意义。学生通过学习计算机系统与C语言的联系,可以改善编程的过程[8],能够更迅速地查明故障来源,从而减少程序中的错误,提高程序的性能,为进一步应用计算思维解决问题作好铺垫。
4 结语
基于计算思维的C语言程序设计的教学,是一个需要长期探索的过程,教师应在教学的过程中不断地总结,根据学生的真实感受与学习情况,加以思考,不断地进行创新与尝试,才能设计出科学合理且有吸引力的教学内容。
参考文献
[1]Wing J M.Computational thinking[J].Communications of the ACM,2006,49(3):33-35.
[2]何钦铭,陆汉权,冯博琴.计算机公共基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9):5-9.
[3]李廉.计算思维:概念与挑战[J].中国大学教学,2012(1):7-12.
[4] 杉浦贤 著 李克秋 译. 程序语言的奥妙:算法解读[M].北京:科学出版社,2012: 31.
[5] 王志英,周兴社,袁春风等. 计算机专业学生系统能力培养和系统课程体系设置研究[J]. 计算机教育.2013(9):1-6.
[6] 李山山,刘卫东. 面向系统能力的计算机组成原理实验实施[J]. 计算机教育.2014(15):107-110.
[7] 袁春风.大学计算机专业教育应重视“系统观”培养[J].中国大学教学.2013(12):41-46.
[8] 常瑞,何红旗.面向系统能力的计算机系统结构课程教学内容设计[J].计算机教育.2014(10):58-61.
作者简介:张磊(1978-) 男,讲师,汉族,天津大学仁爱学院 计算机科学与技术系教师, 研究兴趣: 模式识别与智能系统
[关键词]C语言程序设计 可视化 系统观 计算思维
中图分类号:G4 文献标识码:A 文章编号:1009-914X(2016)06-0235-02
1 引言
计算思维是当前国际、国内的计算机科学界、教育学界关注的重要课题,计算思维的研究和发展对我国的计算机教育有着十分重要的意义。
2006年3月,美国卡内基梅隆大学的计算机科学系主任周以真教授最早给出了计算思维的概念:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动[1]。
目前国外关于计算思维的发展有一定的成效,2007年3月,卡内基梅隆大学和微软公司宣布建立“微软——卡内基梅隆计算思维中心 ”(Microsoft Carnegie Mellon Center for Computational Thinking),该中心将致力于计算机科学新兴领域的研究,特别是那些能够对其他学科的思维产生影响的领域;美国计算机协会(ACM)在网上公布的对CC2001 (CS2001)进行的中期审查报告(CS2001 Interim Review)中就清楚表明,要求将“计算思维”的概念及其本质加入到“计算机导论”课程当中去;美国国家计算机科学技术教师协会(CSTA)发布了名为《计算思维:一个所有课堂问题解决的工具》(Computational Thinking: A problem solving tool for every classroom)的报告,报告对什么是计算思维进行了详细的阐述,并且得到了微软公司(Microsoft Corporation)的大力支持。
国内也有一批专家学者在计算思维方面做出了一些颇有成效的研究, 我国对计算思维的关注主要时间是高等学校计算机教育研究会于2008年10月在桂林召开的关于“计算思维与计算机导论”的专题学术研讨会,此会议专题探讨科学思维与科学方法在计算机课程教学中的推动和创新作用。对此,多数高校在研讨会之后分别在自己所在高校开展了关于计算思维的研究,桂林电子科技大学计算机学院也开设了以计算思维为核心培养的计算机导论精品课程。
培养学生的计算思维能力应该成为计算机公共基础教学的核心任务[2]。《C语言程序设计》是一门重要的理论性和实践性都很强的计算机公共基础课,初學者普遍反映难学。计算思维的培养面临着许多挑战[3],目前仍没有有效的教学模式,仍然处于探索阶段。C语言程序设计的学习和计算思维的培养是相互促进的,计算思维能力提高后,可以更高效和深入的学习C语言程序设计,C语言程序设计的学习又能促进计算思维能力的提高。本文通过采用可视化教学模式在C语言程序设计的教学中的应用,以直观的方式讲解C语言中抽象的知识,以动态的可视化方式展示隐含在C语言程序设计中的计算思维,从而达到降低学生的认知负荷,在提高C语言程序设计的学习效果的同时,增强计算思维的能力。
2 C语言程序设计可视化教学模式的设计和计算思维的培养
《C语言程序设计》的知识蕴含了计算思维,掌握好C语言程序设计知识有助于计算思维能力的提高,计算思维能力的提高又促进和加深C语言的学习,这是个相辅相成、互相促进的关系。《C语言程序设计》的计算思维教学方法应重视从以下几个方面实施可视化教学模式。
2.1 以静态图形展示基本概念
C语言中的很多概念是比较抽象的,不易深入理解,这成了初学者利用C语言的基本语句进行解决问题和创造性思维的拦路虎。理解和使用好这些概念要求学生能够在计算机能力的限制之下计算性地思考。例如对数组的理解与使用,如果仅仅教会学生“数组是连续排列的相同数据类型的元素集合”这样的抽象知识,学生仍然难以灵活应用数组去解决问题。为了让学生直观的理解数组的特点,可以如下图所示展示出如何使用数组[4]。这样,就可以将“不可见”变为“可见”, 将“无关”变为“相关”。
如上图所示,教师在讲解数组之前,先把变量比喻成箱子,不同规格的箱子相当于不同的变量类型,把一维数组比喻成多个无缝隙排列在一条直线上的相同规格的箱子。这样,学生就容易理解数组的能力和局限性:数组可以通过“箱子编号”随机访问数组元素,数组是通过内存的连续区域来存储数据的,使用数组时不能越界,数组元素的类型必须相同。
2.2 问题的可视化展现
《C语言程序设计》课程讲解的问题的逻辑结构、存储结构往往比较抽象、枯燥。生动、形象的可视化形式引出用有趣的应用实例,例如约瑟夫斯问题和汉诺塔问题,可以极大地激发学生的学习兴趣,活跃课堂气氛,可以使学生迅速、清晰的抓住问题的本质,从而把精力集中于基于计算思维的问题求解上来。
3 C语言程序设计系统观的教学观点和计算思维的培养
系统设计的能力是计算思维的应有之意,目前的C语言课程只是强调语法和编程能力的培养,而不能很好地培养学生的系统设计的能力。另外对于计算机硬件系统的相关课程,如数字逻辑、计算机组成原理、汇编语言、计算机微机接口技术等,学习以后,学生对硬件系统知识有一定的了解,但知识都是孤立、片断性的,更不用说具有系统层面的认知和设计能力,能站在系统的高度考虑和解决计算机系统的应用问题能力[5]。
计算机学科主要研究的是计算机系统各个不同抽象层的实现及其相互转换的机制,计算机学科培养的应该主要是在计算机系统或在系统某些层次上从事相关工作的人才。独立学院计算机专业课程的设置按照计算机系统抽象层各层的内容学习对应的课程,如图1所示。可以清楚地看到,我们将计算机系统的各层的知识分解为一门门独立专业课程让学生学习,这些独立的专业课程好比一节节单独的火车车厢,而没有课程帮助他们帮这些火车车厢连接起来,形成一辆完整的火车,而只有完整的火车才有它本来的价值。而完整的火车即是系统观,即具备能够站在系统的高度考虑和解决应用问题,具有系统层面的认知和软件设计能力。 3.1 从系统层面构建知识体系
我们将C语言围绕C语言程序的编译、链接和执行,从系统层面帮助学生形成计算机学科完整的知识体系,并且注重后续专业课程之间的关系和衔接能促使学生真正做到融会贯通,领略到计算机系统能力的真正涵义[6]。同时学生在大三和大四可以有更多的时间学习各个专业方向的知识,加强专业技能的训练。
教师以C语言的编译、连接、执行为主线,结合计算机系统各大部件,具体介绍了各大部件的功能和结构,剖析了高级语言与底层计算机系统之间的关系,从而引起学生对高级语言程序编写的思考,激发学生从计算机系统的的角度学习,使其能够站在系统的高度考虑和解决应用问题。
3.2 基于系统观的教学内容设计
老师在讲解各个知识点的同时,要注意以实际生活中的问题和学生实际编程遇到的问题引入,吸引学生的注意。比如, 在講解程序的转换及机器级表示时,主要讲清C语言、编译、操作系统和硬件结构的关系,并且注意用汇编级的指令系统去解释C语言程序运行的结果,对出错的结果能从指令集与硬件系统的角度去理解程序的结果[7]。能从系统的角度去思考与解决问题。
面向系统观进行教学内容设计可以让学生更多地了解学习C语言程序设计的意义。学生通过学习计算机系统与C语言的联系,可以改善编程的过程[8],能够更迅速地查明故障来源,从而减少程序中的错误,提高程序的性能,为进一步应用计算思维解决问题作好铺垫。
4 结语
基于计算思维的C语言程序设计的教学,是一个需要长期探索的过程,教师应在教学的过程中不断地总结,根据学生的真实感受与学习情况,加以思考,不断地进行创新与尝试,才能设计出科学合理且有吸引力的教学内容。
参考文献
[1]Wing J M.Computational thinking[J].Communications of the ACM,2006,49(3):33-35.
[2]何钦铭,陆汉权,冯博琴.计算机公共基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9):5-9.
[3]李廉.计算思维:概念与挑战[J].中国大学教学,2012(1):7-12.
[4] 杉浦贤 著 李克秋 译. 程序语言的奥妙:算法解读[M].北京:科学出版社,2012: 31.
[5] 王志英,周兴社,袁春风等. 计算机专业学生系统能力培养和系统课程体系设置研究[J]. 计算机教育.2013(9):1-6.
[6] 李山山,刘卫东. 面向系统能力的计算机组成原理实验实施[J]. 计算机教育.2014(15):107-110.
[7] 袁春风.大学计算机专业教育应重视“系统观”培养[J].中国大学教学.2013(12):41-46.
[8] 常瑞,何红旗.面向系统能力的计算机系统结构课程教学内容设计[J].计算机教育.2014(10):58-61.
作者简介:张磊(1978-) 男,讲师,汉族,天津大学仁爱学院 计算机科学与技术系教师, 研究兴趣: 模式识别与智能系统