计算思维与项目教学法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算思维与项目教学法
1.1计算思维
周以真教授认为,计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维和理论思维、实验思维一起被称为推动人类社会文明进步和科技发展的三大科学思维。
进一步地定义为:通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道问题怎样解决的方法;是一种递归思维,是一种并行处理,是一种把代码译成数据又能把数据译成代码,是一种多维分析推广的类型检查方法;是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注分离的方法(SoC方法);是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法;是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法;是利用启发式推理寻求解答,也即在不确定情况下的规划、学习和调度的思维方法;是利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行折衷的思维方法。
1.2项目教学法
项目教学法就是在老师的指导下,将一个相对独立的项目交由学生自己处理。对C++项目式教学法还包括:人员的组织与管理、软件度量、软件项目计划、风险管理、软件质量保证、软件过程能力评估、软件配置管理等都由学生自己负责,学生通过项目的训练,了解并把握整个过程及每一个环节中的基本要求。
计算思维是信息社会中创新的需要,是大学生创新性思维培养的重要组成部分。C++项目式教学不能仅限于软件工程指导下的C++语言基础的综合训练,还应该在软件项目管理原则下的培养创新性思维。
2C++项目的教学实践
2.1教学内容
2.1.1项目的选取
以《全国计算机二级C++考试大纲》的要求为准绳,制定适合我院特点的《C++课程设计标准》,选取《学生成绩管理》项目为案例。《学生成绩管理》学生比较熟悉,能覆盖C++大纲要求的知识点,可引导学生从日常生活中发现问题、分析问题和解决问题,减少材料收集,缩短调研、需求分析时间,相对增加C++基础的学习时间。学生可领悟到项目源于生活,创新、发明源于日常生活,“处处留心皆学问”。同时布置同步练习项目《企业工资管理》,学生在项目需求分析、总体设计、详细设计、编写代码、测试等有关方面的内容有一定的独立训练。
2.2教学方法
2.2.1复杂任务简单化
程序设计的基本原则是自顶向下,逐步求精。将《学生信息管理》划分为系统初始化、数据输入、数据处理、数据输出、数据维护、帮助等子项目(或模块)。如果划分后的子项目还复杂,例如数据处理,就进一步再分:数据排序、数据查询等。这样直到每个部分只完成单一功能,代码行数不是很多为止。
2.2.2合适的描述方式
UML是面向对象开发中一种通用的图形化建模语言,它定义良好、易于表达、功能强大且普遍适用。面向对象的分析主要在加强对问题空间和系统任务的理解、改进各方交流、与需求保持一致和支持软件重用等4个方面表现出比其他系统分析方法更好的能力,成为主流的系统分析方法。引入UML,对项目需求分析、总体设计、详细设计、编写代码、测试等各个阶段各个部分进行描述,尤其利用UML图描述算法。同时,讲解UML图到程序的转化方法。
2.2.3注意鲁棒性
鲁棒性(robustness)就是系统的健壮性。它是在异常和危险情况下系统生存的关键。比
如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。明显地,成绩的值域,一般成绩不能为负数等,但常被初学者忽略,致使程序执行时接受负数。在高校,成绩范围一般在0-100,要对超过这个范围的数据进行检测,并给出相应的处理。变量的数据类型定义,要根据使用数据集的具体情况,如考试成绩,如果是在正整数0-100范围内,定义考试成绩变量无符号短整型较好,否则浪费存储空间。
2.2.4启发式教学
对冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面。第一趟得到最大数放到数组最后元素的位置上,第二趟将剩余的元素再两两比较,将剩余元素中的最大值,放到倒数第二个位置,……。这样,从中找到趟数与该趟比较次数之和等于元素个数。同时,启发学生对于二维数组,如果按行(或列)排序时,对应的列(或行)中元素也要交换。通过启发,使学生在处理某问题时要考虑相关问题,包括异常问题。
2.2.5算法的优化
对数据的冒泡排序,当进行某趟排序后,数据已经满足排序要求了,是否还进行排序?如果结束排序,应该设计一个标记。该标记初始值为不需要排序。如果有交换,将该标记置位需要排序,当本趟排序结束后,检查该标志是否是不需要排序,如果是不需要排序,则排序结束,否则继续进行排序,进而优化了算法。再如求质素问题、斐波那契序列问题等的优化。通过算法优化是学生深入了解算法执行时间和数据占用的空间的估算。
3教学过程
3.1创设情境
3.1.1用已知问题,创设情景
语法上,先回忆数学中的有穷序列,再讲解数组,并将数组和有穷序列加以对照;二维数组与矩阵、平面对照;三维数组与立体坐标以及3D电影等对照。
算法上,以往用目测方式将一组数有序,进一步给出两两比较进行排序的冒泡法。再如,如何判断一个正整数M是否是质数,根据数学定义求解,同时用正整数分解两个因数积的形式得到最大因数不超过M/2,再进一步分析,最大因数不超过M的平方根。
3.1.2新旧知识的连接点,创设情景
让学生回味“人以群分物以类聚”的含义,进而提出“人”有哪些特点和活动。再让学生回忆“演绎和推理”知识,在函数、结构体的基础上,进一步提出有关“类”的概念、特点、语法格式等。
通过对比使学生明白:计算机中很多概念、编程思维源于数学。用已有的知识,激发学生学习兴趣。
3.2优化师生关系
3.2.1学生自主探究
在提出问题之后或总结所讲知识之前,都给学生思考甚至是查阅资料的时间,强化学生自学能力,激发他们的创造潜力;鼓励学生合作探究,让同学讲解他们解决问题的思路、方式方法,以形成集体探究的氛围,培养学生的合作精神;对良好的研究结果给予肯定,对不足的研究结果给予分析,找出不足的原因,提示合适的解决方法,使学生不会因为一次的研究结果不足,就成为学习的障碍,甚至萎靡不振。同时,告诉学生解决问题的方法不是一层不变的,鼓励学生积极怀疑已有的算法,探讨更优的算法。“尽信书不如无书”。
3.2.2创设良好环境
良好的环境是养成计算思维的外部环境。通过各种载体为学生提供丰富的实例,让学生在模仿中逐渐形成计算思维能力;通过《学生成绩管理》项目的讲解,一方面解决语法知识,另一个方面也要讲解项目设计的原则、思想、方式方法等,把学生引入真实的工作情景,通过练习项目激发其自觉运用计算思维的方法原则;在讲解项目和练习项目上,鼓励同学各抒己见,