计算思维在“数据结构”课程教学中的运用

计算思维在“数据结构”课程教学中的运用
计算思维在“数据结构”课程教学中的运用

计算思维在“数据结构”课程教学中的运用

摘要:计算思维是近年来被普遍倡导的一种科学素养,如何在课堂教学中培养大学生的创新能力和计算思维能力,已成为“数据结构”课程教学改革的任务之一。文章首先详细分析计算思维的定义和特征,然后说明计算思维和数据结构的相通之处,最后给出几个相关的教学案例。

关键词:计算思维;数据结构;算法设计

0.引言

自2006年3月美国卡内基·梅隆大学周以真教授提出“计算思维”以来,在国内外教育界引起了很大的反响。周教授清晰系统地阐述了计算思维的概念,并认为计算思维是每个人的基本技能,不仅属于计算机科学家,应当使每个学生在培养解析能力时除掌握阅读、写作和算术外,还要学会计算思维。既然是每个人都必须掌握的思维能力,那么作为最“接近”计算思维的计算机专业的学生来说,该如何培养学生具有这种思维方式呢?这个任务显然不是某一门课程能独立完成的,它需要渗透到每一门专业课程中。这就要求任课教师本身就应该具有计算思维的教育理念,唯有这样才能把计算思维渗透到每门课程中,最后把这一抽象的思维方式融到学生的生活和今后的工作中去。

笔者将以计算机专业的基础课程——“数据结构”的教学经验为载体,详细介绍如何在课程中传授计算思维,使大学生学会运用计算思维去思考问题、解决问题,提升他们的计算素养,使其成为卓越人才。

1.计算思维的定义和特征

计算思维不是新生事物,从古代的算盘到近代的加法器、计算器以及现代的电子计算机,直到目前风靡全球的互联网和云计算,计算思维的内容在不断丰富,推动着人类科技的进步。虽然计算思维一直都在被人们应用,但是却没有明确地被人们用系统的理论来揭示。直到2006年,周以真教授在计算机权威期刊CommunicationsD,theACM上指出:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等的一系列思维活动。周教授系统地给出了计算思维的6个特征:

1)概念化,不是程序化。计算机科学不是计算机编程,像计算机科学家那样去思维意味着远不止能为计算机编程,还要求能够在抽象的多个层次上思维。

2)根本的,不是刻板的技能。根本技能是每一个人为了在现代社会中发挥职能所必须掌握的;刻板技能意味着机械地重复。

3)是人的,不是计算机的思维方式。计算思维是人类求解问题的一条途径,但并不是要使人类像计算机那样去思考。计算机枯燥且沉闷,人类聪颖且富有想

跨学科计算思维教学的认识与实践浅谈

跨学科计算思维教学的认识与实践浅谈 摘要:本文介绍了一门跨学科课程的内容与教学实践的体会,该课程以网络为中心,以社会学与经济学的若干经典问题为背景,以应用数学和计算机科学的基本概念为语言,向学生展示了一种交叉学科尤其是计算思维在社会科学中运用的广阔图景。同时,作者也对当下开展跨学科与计算思维教学活动的背景和意义以及开展这类教学活动实践的可行性提出了认识与思考。 关键词:跨学科;计算思维;社会科学;本科生课程;认识;实践 一、“跨学科”与“计算思维” 近年来,在我所处的工作环境中,能感到有两股思潮:一是“跨学科”,二是“计算思维”。有关呼吁或者宣示在许多场合都能听到,人们愿意用这样两个词语描述他们的想法和工作,国内外都是如此。这种氛围,10年前体验不多,20年前感受更少,也就是近几年才浮现起来的。尽管现在看得见摸得着的东西似乎还不多,也有些人表示疑惑,但我体会其所代表的方向性和潮流感是明显的。 我相信这两个观念。这种信念的准确来源难以说清楚,但触发在于一次某国外大学董事会代表团访问北京大学,我参与接待,其中一位著名大学前校长在听完了我们学校的情况例行介绍后问了这样一个问题:How Peking University is addressing the critical challenges our mankind is facing?我立刻感觉这是一个好问题,这后面有个潜台词,那就是大学的教育不能不关注人类发展所面临的重大共性问题。在这样的发问下,简单报告一个大学有多少学科、多少经费、多少成果等等就显得比较苍白了。 人类现在面临什么重大问题?换言之,现在面临的问题与以前有什么显著不同?从第一次工业革命算起,过去二百多年来,人类经济社会发展的主旋律是追求不断提高的生产效率,是要以最少的成本生产最多的产品,是GDP。然而,近几十年来这种情形发生了变化,虽然这个地球上一些地方依然有贫困与饥饿,但从人类已经创造出来的生产力来看,现在面临的主要挑战已不再是吃饭穿衣的困难,而是自然资源消耗过快、全球变暖、环境污染、医疗保障、非传统安全、老龄化、贫富差距过大等严峻问题。 从我熟悉的角度来看,我认为解决这些问题有两个共同的要求,一是多学科交叉,二是离不开计算。这里所说的多学科交叉,不同于在传统学科划分基础上的协作,而是不同学科的思想在方法论层面的融合;这里所说的计算,不仅是用计算机作为工具来提高解决问题的效率,更是计算思维在理解问题本身、寻求解决问题途径中的作用。图灵奖获得者,加州大学伯克利分校Richard Karp教授去年发表过一篇文章Understanding Science Through the Computational Lens,讲的就是计算思维在推动其他科学门类的发展中会发挥日益重要与深刻的作用。

《数据结构》实验指导书(C语言版)

《数据结构》课程实验指导 《数据结构》实验教学大纲 课程代码:0806523006开课学期:3 开课专业:信息管理与信息系统 总学时/实验学时:64/16 总学分/实验学分:3.5/0.5 一、课程简介 数据结构是计算机各专业的重要技术基础课。在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。 二、实验的地位、作用和目的 数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。 三、实验方式与基本要求 实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。具体实验要求如下: 1.问题分析 充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。 2.数据结构设计 针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。 3.算法设计 算法设计分概要和详细设计。概要设计着重解决程序的模块设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干程序模块,并决定模块的接口,即模块间的相互关系以及模块之间的信息交换问题。详细设计则要决定每个模块内部的具体算法,包括输入、处理和输出。 4.测试用例设计 准备典型测试数据和测试方案。测试数据要有代表性、敏感性。测试方案包括模块测试

计算思维作业

计算思维作业 1、试阐述思维的关键内容。结合本学期所学关于计算思维知识,结合自身专业 领域或日常学习与生活中的体会,讨论有哪些计算思维内容得以实际运用,它们是如何改变人们身边的现状? 答:计算思维应当成为所有学校所有课堂教学采用的一种工具。计算思维不仅仅是计算机专业学生所拥有的思维方式,其实它慢慢地与学生的读写算能力一样,会成为人类最基本的思维方式,成为每个人拥有的最基本的能力。许多人认为计算科学就是计算机编程,就只能和计算机打交道,而计算思维也只有计算机专业的学生需要掌握。其实并非如此,恰恰相反,计算思维是一个可以引导着所有努力奋斗的人去实现自己梦想的思维模式,它不仅可以帮助你成功,而且可以让你非常明确自己需要奋斗的目标并为之努力奋斗。因此我们就知道,学计算机专业的学生并不一定将来就非得在计算机领域发展,要让学生在学习的过程中有个良好的心态,毕业找工作有个正确的定位,即使学生将来真正从事了与计算机无关的职业,也要明白绝对不是几年的学白上了、几年的专业知识白学了,学习过程中教会的并不都是些专业的理论知识,更多的是遇见问题如何分析处理以及你为人处事的能力。 2、计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行 为理解等一系列思维活动。是三大科学思维(逻辑思维、实证思维、计算思维)之一。试从计算思维的本质讨论大学生如何培育和提高自身的计算思维素养。 答:计算机科学从本质上源自工程思维,因为我们建造的是能够与实际世界互动的系统[2]。目前,计算机应用已经深入到各行各业,融入人类活动的整体,解决了大

量计算时代之前不敢解决的问题。实践是指计算机学科的设计过程,基础的技能是每位学生未来适应社会、为社会服务所必须掌握的。学生的应用能力一般是指编程能力和系统开发能力,它是要通过实验教学环节不断加深和加强。在这其中,不断拓展对计算思维的理解和认识是非常重要的。在这样的思维指导下,我们可以采用多样化的学习方式。例如,在计算机专业课程的学习中,教师可在给定范围后,让学生上机自由操作,支持和鼓励学生提出问题并自行解决问题,鼓励学生进行科技创业活动。这样做将有利于发挥我们的想象能力,培养我们的创造性思维。 3、关注点分离思维和系统观都是典型的计算思维,结合自身专业领域生活体 会,讨论关注点分离和系统观的运用。 答:作为最重要的基石思维之一,关注点分离式计算机科学在长期实践中确立的一项方法论原则。关注点分离是日常生活和生产中广泛使用的解决复杂问题的一种系统思维方法。大体思路是,先将复杂问题做合理的分解,再分别仔细研究问题的不同侧面(关注点),最后综合各方面的结果,合成整体的解决方案。在概念上分割整体以使实体个体化的观点。例如web设计中体现了关注点分离的思想。网页中2的内容比较庞杂,HTML标记语言既要标记文档的结构又要标记文档的格式,或者说是展现。最初的HTML不仅标记结构也标记网页如何展现。因此,就出现了如<P>这样的表示结构元素混杂的局面。人们发现应该把HTML进行一番清理,是HTML只表示结构,而把如何展现的责任完全分离出来。CSS就是这样产生的。系统观是指以系统的观点看自然界,系统是自然界物质的普遍存在形式,提出了系统和要素,结构与功能等新的范畴,揭示了自然界物质系统的整体性、关联性、层次性、开放性和动态性、自组织性。

计算思维之我见

计算思维之我见 摘要:教育的基础性确定了人才培养能力导向的基本要求,人类迄今所实践的三大科学研究范型更具体地给出了计算思维能力培养的指向。不同的人才未来将面对不同的问题空间,决定了他们对计算思维能力不同的要求。本文用朴素的、狭义的和广义的计算思维进行区分;而计算思维能力的培养需要建立意识、了解功能、掌握方法、会用工具,最终才能形成能力。 关键词:研究范型;思维方式;朴素计算思维;狭义计算思维;广义计算思维;能力培养 从2002年8月笔者第一次在《中国计算机科学与技术学科教程2002》中使用“计算思维”这个词描述计算机科学与技术专业人才的四大专业基本能力之一[1],到现在已经有十余年了,后来又在编著的教材中谈到计算思维能力的培养[2-5]。其间,美国的周以真教授2006年3月在COMMUNICATIONS OF THE ACM 上发表了Computational Thinking一文[6](王飞跃等曾将此文翻译介绍给国内读者),之后又有一些学者就计算思维发表了有关研究结果[7,8]。后来人们发现,Seymour Papert早在1996年就提出了计算思维[9]。近几年来,我国有一大批学者开始跟进研究,特别是在教育部高等学校计算机基础课程教学指导委员会的带领下,在我国非计算机专业计算机课程教育领域开展了颇具声势的研究与实践,对计算思维及其培养有了一些认识,取得了一些成果[10]。2012年1月30日-2月3日,2006-2010教育部高等学校计算机科学与技术专业教学指导分委员会联合全国高等学校计算机教育研究会和中国计算机学会教育专业委员会召开了一次主任(理事长)扩大会议,就计算思维等多个问题进行了研究,形成了“积极研究和推进计算思维能力的培养”的基本意见[11]。总体上看,人们对计算思维的认识以及如何进行计算思维能力的培养还处于相对初始的阶段,很多问题还有待进一步的研究和实践。本文将计算思维作为一种与计算机及其特有的问题求解紧密相关的思维形式,并将人们根据自己工作和生活的需要,在不同的层面上利用这种思维方法去解决问题,定义为具有计算思维能力。基于此,本文从“能力培养”及其不同要求的角度出发,将计算思维分为朴素的计算思维、狭义的计算思维和广义的计算思维,以描述不同人群对计算思维能力培养的各自侧重。 一、作为重要基础之计算思维 计算思维中的“计算”是广义的计算。随着信息化的全面推进,“计算机”变得无处不在、无事不用,网络(包括物联网等)延伸到各个角落,加上数据积累的简单化、容易化,使计算思维成为人们认识和解决问题的重要思维方式之一[11]。一个人若不具备计算思维能力,将在从业竞争中处于劣势;一个国家若不使广大受教育者得到计算思维能力的培养,在激烈竞争的国际环境中将不可能引领而处于落后地位。计算思维能力,不仅是计算机专业人员应该具备的能力,而且也是所有受教育者应该具备的能力。计算思维能力,也不简单类比于数学思维、艺术思维等人们可能追求的素质,它蕴含着一整套解决一般问题的方法与技术。

数据结构课程教学大纲

《数据结构》教学大纲 课程性质专业必修课 课程名称数据结构课程编号*04069 适用专业计算机科学与技术/软件工程开课学期第3学期 总学时64 理论50 学分数 4 实践14 一、课程性质与目标 数据结构课程属于专业必修课。通过本课程数据结构的学习,学生应实现如下目标: 1.知识目标:本课程主要讲述线性表、栈、队列、字符串、数组、树、二叉树、图、查找表、内部排序等常用数据结构的基本概念、操作及其典型应用例子。通过本课程的学习,应使学生掌握数据结构的概念及不同的存储结构、掌握一些典型算法原理和方法,且能够在不同存储结构上实现编程,同时,对于算法设计的方式和技巧也有所体会。 2.能力目标 (1)独立获取知识的能力——逐步掌握科学的学习方法,不断地扩展知识面,增强独立思考的能力,更新知识结构; (2)科学观察和思维的能力——运用数据结构的基本理论,熟悉各种基本数据结构及其操作,学会根据实际问题要求来选择数据结构。 (3)分析问题和解决问题的能力——学会利用数据结构原理分析实际问题,提高发现问题与解决问题的能力。对部分优秀的学生,培养其在知名程序设计在线评测系统(如POJ等)中求解实际问题的能力。 (4)求实精神——通过数据结构理论课程教学,培养学生严谨求实的科学态度和刻苦钻研的作风。 (5)实践能力——通过学习,有意识地培养学生编写高质量、高效率程序的能力和风格。 3.素质目标:使学生具备一定的计算思维,热爱算法设计和程序实现,面对实际问题能转换为计算机能够求解的过程并选择合适的数据结构,设计出在时间和空间上具备一定高效率的程序,培养学生学习算法设计与实现的细心和耐心,培养学生坚韧不拔,攀登技术高峰的优秀品质。让部分优秀的学生热爱上湖南省大学生程序设计竞赛,体会ACM程序设计竞赛的魅力。 二、课程教学基本要求 课程前应该认真预习,特别是前导课程相关知识体系; 课中应该认真听课,参与教学过程中的互动、回答问题及联系实际编程; 课后积极做好复习、认真完成作业及课程设计相关实践教学的环节。作业应具备一定实用性的数据结构和算法实现为主,对部分优秀学生,引入一定量的知名程序设计在线评测系统(如POJ等)中与数据结构相关的题目进行编程并在线提交验证正确性与时间、空间效率。 三、教学内容与学时分配

我国大学MOOC大学计算机-计算思维的视角概述题答案解析

概述题 第一单元 什么是信息素养?信息素养包括哪些方面? 信息素养是指人们利用网络和各种软件工具通过确定、查找、评估、组织和有效地生产、使用、交流信息,来解决实际问题或进行信息创造的能力。 信息素养包括四个方面,分别是:信息意识;信息知识;信息能力;信息道德。 什么是信息社会?信息社会有哪些主要特征? 信息社会是指以信息技术为基础,以信息产业为支柱,以信息价值的生产为中心,以信息产品为标志的社会;信息社会是指信息产业高度发展并在产业结构中占优势的社会。 信息社会的主要特征: 1、经济领域的特征 (1)在信息社会中,信息、知识成为重要的生产力要素,和物质、能量一起构成社会赖以生存的三大资源;(2)在信息社会,劳动者的知识成为基本要求,劳动力结构出现根本性的变化,从事信息职业的人数与其它部门职业的人数相比已占绝对优势; (3)信息社会是以信息经济、知识经济为主导的经济,它有别于农业社会是以农业经济为主导,工业社会是以工业经济为主导的经济。在国民经济总产值中,信息经济所创产值与其它经济部门所创产值相比已占绝对优势; (4)能源消耗少,污染得以控制。 2、社会、文化、生活方面的特征 (1)社会生活的计算机化、自动化; (2)拥有覆盖面极广的远程快速通讯网络系统以各类远程存取快捷、方便的数据中心;(3)生活模式、文化模式的多样化、个性化的加强; (4)可供个人自由支配的时间和活动的空间都有较大幅度的增加; (5)科技与人文在信息、知识的作用下更加紧密的结合起来。 3、社会观念上的特征 (1)尊重知识的价值观念成为社会之风尚; (2)社会中人具有更积极地创造未来的意识倾向; (3)人类生活不断趋向和谐,社会可持续发展。 在哲学和逻辑学上,将思维分为形象思维与逻辑思维两种主要的思维形态,对于计算思维,你如何理解? 计算思维又叫构造思维,以设计和构造为特征,以计算机学科为代表的。它是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为。其本质是抽象和自动化,通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道怎样解决的问题,如同“读、写、算”能力一样,计算思维也是我们每个人都必须具备的思维能力。 大体来说计算思维有以下几个特点: (1)计算思维是一种递归思维。它是并行处理。它是把代码译成数据又把数据译成代码。对于别名或赋予人与物多个名字的做法,它既知道其益处又了解其害处。对于间接寻址和程

计算思维的理解

计算思维的理解、必要性及其应用实例分析 1·计算思维的理解 1.计算思维的概念 2006年卡基梅陇大学周以真教授发表了一篇影响深远的题为《computational thinking》的论文,将“计算思维”这一由来已久但很陌生的词语展现给世人。文中,她使用了”硬科学”的术语对计算思维进行了描述。 我个人总结为:计算思维是一种基于数学与工程、以抽象和自动化为核心的、用于解决问题、设计程序、理解人类行为的概念。这里请注意,计算思维是一种思维,它以程序为载体,但不仅仅是编程。它着重于解决人类与机器各自计算的优势以及问题的可计算性。人类的解决思维是用有限的步骤去解决问题,讲究优化与简洁;而计算机可以从事大量的重复的精确的运算,并乐此不疲。(我是说,假如运算的循环没有造成它的机器故障的话。)那么,这个问题是否不一定需要最精确的计算而只要求满足一定的精度?如果是,就可以用计算机来计算。那么那些事可计算的,可计算性有七大原则:程序运行、传递、协调、记忆、自动化、评估与设计。【1】 2.四色问题的解决 计算思维的优势最典型的体现莫过于“四色问题”的解决: 四色问题是公认的数学难题,经历几个世纪,经历数百位数学家的努力,它仍巍然不动。后来有数学家提出四色问题可以进行分类讨论。只不过嘛,虽然这位数学家明确指出,分类的状况是有限的,仍然数字巨大,非人力所能及。而后来美国伊利诺伊大学哈肯与阿佩尔利用计算机程序对这有限而众多的情况进行了计算分析,凭借计算机“不畏重复不惧枯燥”、快速高效的优势证明了四色定理。 3.计算思维的人机分工 在计算思维的概念中,我们可以通过消减,嵌入,转换与模拟对问题进行处理,化难为易。将复杂的问题分解成简单的问题,把复杂而枯燥需要精确计算的任务交给计算机,人去解决那些被化为可以解决的问题。同时,我们可以将简单的程序、系统进行组合,得到复杂的系统发挥更大的作用。而为了达到这一目的,我们需要与计算机交流,我们需要将现象转化为符号,以便于计算机理解,同时我们将其抽象赋予不同的含义,之后通过编程赋予计算机以“思维”,让它自动地进行运行,得到新的东西,这个过程我将之称为创造。编程只是读写水平,理解系统是流畅水平而知道如何应用,如何将计算机技术用于自己从事的领域,这就是计算思维。【2】 2.重要性 1.由来 计算思维由来已久,最早可以追溯到利用计算机技术计算火炮杀伤范围来支援炮兵,之后随着硬件技术按照摩尔定律不停地发展,计算机语言越来越高级,计算机的功能越来越强大。计算机技术走进各个领域,计算机科学家与其他领域科学家一起合作,解决了许多其他领域的难题。生物领域中,科学家利用计算机模拟细胞间蛋白质的交换,基因研究者利用计算机技术发现了控制西红柿大小的基因与人体癌症的控制基因拥有相似性。生态学家利用计算机技术构建模型以研究全球气候变暖问题 (3) 2.生活的要求

《数据结构》课程教学大纲(计算机)

《数据结构》课程教学大纲 一、课程基本信息 二、课程教学目标 本课程介绍软件设计中常用的线性表、栈、队列、串、数组、广义表、树、二叉树、图结构等几种基本的数据结构及其存储结构和所施加的运算与实现等。另外,还介绍软件设计中常用的几种查找和排序算法,以及递归技术等,在介绍各项内容的同时,还涉及到算法设计与分析的基本技术和面向对象程序设计的理论与技术等内容。 通过本课程的学习,达到以下目标: 熟练掌握上述结构及其运算的实现和性能特点, 掌握各种排序和查找运算以及递归技术, 能对给定的实际问题,建立准确的问题模型,设计有效的问题求解方法,选择合理的数据结构及其运算集,设计有效的算法。

三、教学学时分配 《数据结构》课程理论教学学时分配表 *理论学时包括讨论、习题课等学时。 《数据结构》课程实验内容设置与教学要求一览表

四、教学内容和教学要求 第一章绪论(2学时) (一)教学要求 1.了解数据结构的各种基本概念和术语; 2.了解数据类型和抽象数据类型的概念; 3.理解算法的设计目标; 4.掌握算法的时间复杂度概念和算法的时间复杂度分析方法。 (二)教学重点与难点 教学重点:数据结构的逻辑结构、存储结构及数据的运算三方面的概念及相互关系 教学难点:算法复杂度的分析方法。 (三)教学内容 第一节什么是数据结构 1.数据结构的定义 2.逻辑结构类型 3.存储结构类型 4.数据结构和数据类型 第二节算法及其描述 1.什么是算法 2.算法描述

第三节算法分析 1.算法设计的目标 2.算法效率分析 3.算法存储空间分析 本章习题要点:基本概念、算法复杂度的分析方法 第二章线性表(10学时) (一)教学要求 1.理解线性表的逻辑结构和基本操作; 2.理解线性表的顺序存储结构和实现方法; 3.理解线性表的链式存储结构和实现方法; 4.了解单循环链表和双向链表的概念和插入、删除等操作方法。 (二)教学重点与难点 教学重点:顺序表和单链表上实现的各种基本算法及相关的时间性能分析。 教学难点:链表本质及其操作的实现算法、线性表相关的应用。 (三)教学内容 第一节线性表 1.线性表的定义 2.线性表的抽象数据类型描述 第二节线性表的顺序存储结构 1.线性表的顺序存储结构——顺序表 2.顺序表基本运算的实现 第三节线性表的链式存储结构 1.线性表的链式存储结构——链表 2.单链表基本运算的实现 3.双链表 4.循环链表 本章习题要点: 第三章栈和队列(12学时)

数据结构-教学大纲

《数据结构》教学大纲 课程编号:071213A 课程类型:□通识教育必修课□通识教育选修课 □专业必修课□专业选修课 ■学科基础课 总学时:48讲课学时:32 实验(上机)学时:16 学分:3 适用对象:计算机科学与技术专业 先修课程: 程序设计基础与应用、计算机基础 一、教学目标 本课程是计算机科学与技术专业的必修课。本课程是计算机科学与技术专业的核心课程,既重视学生相关理论的系统学习,又强调培养学生发现问题、分析问题和解决问题的实践能力。《数据结构》在计算机科学中是一门综合性的专业主干课,它是介于数学、计算机硬件、计算机软件三者之间的一门核心课程,而且是操作系统、数据库系统及其它系统程序的大型应用程序设计的基础,同时又直接为从事各类计算机应用的技术人员提供了必要的基本知识和解决实际问题的多种方法。 用计算机解决任何问题都需要进行数据表示和数据处理,而数据表示和数据处理正是《数据结构》要研究的内容。《数据结构》主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。该课程逻辑上以线性结构、层次结构、网状结构为主线,物理上分顺序存储、链式存储,分别介绍基本数据结构的特点和算法。并重点介绍有关各种检索、排

序和文件组织的常用算法。通过上述知识的学习和能力的提高,为后续学习和实际工作打下良好的知识基础和能力基础。 目标1:通过对数据结构基本知识进行讲解,让学生理解并掌握数据的逻辑结构和物理结构,并掌握算法设计的基本思想。 目标2:培养学生分析算法复杂度的初步能力,锻炼学生逻辑思维能力和想象能力,并使之了解数据结构的各种应用场景。 目标3:鼓励学生运用算法知识解决各自学科的实际问题,培养他们的独立科研的能力和理论联系实际的能力。 二、教学内容及其与毕业要求的对应关系 (一)教学内容 1.知识体系 第一部分:数据结构的基本概念,包括数据、数据元素、数据项等基本概念、数据类型、抽象数据类型、算法的定义、算法的特性、算法的时间代价、算法的空间代价; 第二部分:线性表的逻辑结构特性,以及线性表的两种存储实现方式;顺序表的定义与实现,包括搜索、插入、删除算法的实现及其平均比较次数的计算;单链表的类定义、构造函数、单链表的插入与删除算法及其平均比较次数的计算; 第三部分:栈的定义、特性和栈的抽象数据类型,栈的顺序表示、链表表示以及相应操作的实现;队列的定义、特性和队列的抽象数据类型,队列的顺序表示、链表表示以及相应操作的实现; 第四部分:串的定义,串的表示和实现,串的操作的定义; 第五部分:数组的两种存储表示方法;矩阵的压缩存储; 第六部分:树和森林的概念。包括树的定义、树的术语、树的抽象数据类型;二叉树的概念、性质及二叉树的表示;二叉树的遍历方法;线索化二叉树的特性及寻找某结点的前驱和后继的方法;树与森林的实现,重点在用二叉树实现;森林与二叉树的转换;树的遍历算法;二叉树的计数方法及从二叉树遍历结果得到

程序设计中常用的计算思维方式

程序设计中常用的计算思维方式 算法思维 逻辑思维 第1章正确认识和处理整体与部分的关系 概述: “整体”与“部分”是一对虽然对立、但并非僵化不变的概念。在一定条件下,“部分”可以看作“整体”,“整体”又可以看作是另一个“整体”的“部分”,两者相互依存和影响。“整体”与“部分”又可以相互转化的。“整体”的问题可以分割成“部分”来处理,“部分”的问题也可以通过“整体”来解决。 1.1 整体实现的关键是准确地应用必要条件 A、选择有助于简化问题、变难为易的必要条件 这里面就是说我们要在坚持“简化问题、变难为易”的原则下,尽力寻找“精确”的必要条件,以缩小求解范围,提高出解速度。当碰到一道难题时,总是尝试从最简单的特殊情况入手,找出有助于简化问题、变难为易的必要条件,逐渐深入,最终分析归纳出一般规律。 B、合成必要条件,从整体结构上优化 在搜索和动态规划中,必要条件有期很好的应用价值。一般地,对于深度优先搜索和广度优先搜索,如何限制搜索范围、减少搜索量最有效的手段是“剪枝”。然而由于问题的错综复杂,所以我们要找最高效的优化条件,来提高程序的效率。所以我们可以尝试从多个侧面分析寻找必要条件,把问题分解,根据各部分的本质联系,将各方面的必要条件综合起来使用。 C、必要条件与原有模型比较、更新算法 上面所说的两种优化程序的策略其实是都是在“缩小求解范围”,改进在有算法的基础上进行的,属于局部优化。然而精确选择揭示问题本质的必要条件,与原有的模型比较, 小结:必要条件是逻辑推到的理论依据,也是思考过程的一种取向。解题时,若能寻找出精确的必要条件,一方面能帮助我们揭示问题的本质,设计出正确的算法;另一种方面又能“缩小求解范围”,提高算法效率。因此,准确地应用必要条件是整体实现的关键。所以我们要在坚持“具体问题具体分析”的原则,不拘一格,灵活处理;在分析问题时,要勤于思考,善于发现。 1.2 整体思考的一个重要角度是“守恒” A、从具体问题中抽象出守恒量 守恒量需要通过联想和化归思维将其抽象出来,从问题本身的结构中抽象出守恒量。 B、根据问题的本质构造守恒量 有时候,如果能为每一个元素标一个权值,就可以揭示问题“守恒”规律。在总价值不变的前提下,或许能将整个问题转化成一个简单的、或者是经典的问题。比如构造成Fibonacci数列等。 C、在交互式问题中构造变化中的不变量 考虑可能出现的各种情况和最优策略,找变化中的不变量,运用“守恒”法寻找解题的突破口 小结:守恒是问题分析问题的一种思维方式一种整体意识和解题方法,通过联想和化归思维将其抽象出来。 1.3 提高整体实现效率的基本途径是“充分利用有效信息”和“压缩冗余信息” A.计算过程中充分利用有效信息: 在记忆化搜索和动态规划中充分利用信息,特别指出在动态规划中改变状态的表示含义对优化问题是个很好的策

(新)计算思维论文

计算思维论文 班级: 学号: 姓名:

计算思维论文 摘要:尽管计算思维与计算机方法论有着各自的研究内容与特色,但是,显而易见,它们的互补性很强,可以相互促进。比如,计算机方法论可以对计算思维研究方面取得的成果进行再研究和吸收,最终丰富计算机方法论的内容;反过来,计算思维能力的培养也可以通过计算机方法论的学习得到更大的提高。介绍了计算思维与计算机方法论存在的密切联系,以及以学科认知理论体系构建为核心的计算机方法论在中国的研究与应用。相对而言,计算思维的研究主要在国外,主要是在美国和英国,他们研究的重点放在计算思维的过程及其实质和特征上。此工作有助于人们对计算思维与计算机方法论的认识,以及对它们展开进一步地深入研究。 1.背景: 计算思维是什么本文所指的计算思维,主要指2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette札Wing)教授在美国计算机权威杂志,ACM会((Communications oftheACM))杂志上给出,并定义的计算思维(ComputationalThinking)E¨。 周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。为便于理解和应用,本文将定义中的“基础概念”更换为更为具体的“思想与方法,这样,计算思维又可以更清晰地定义为:运用计算机科学的思想与方法进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。以上是关于计算思维的一个总定义,周教授为了让人们更易于理解,又将它更进一步地定义为: (1)通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道问题怎样解决的思维方法;是一种递归思维,是一种并行处理,是一种把代码译成数据又能把数据译成代码,是一种多维分析推广的类型检查方法I是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注分离的方法(SoC方法); (2)是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法;是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法;是利用启发式推理寻求解答,也即

数据结构教学大纲(完整资料).doc

【最新整理,下载后即可编辑】 XX师范学院大学本科专业教学大纲中文课程名称:数据结构 英文课程名称:Data Structures 适用专业:信息管理与信息系统 制定单位:商学院 执笔人: 审核人: 单位负责人: 制定时间:2017-2-10 XX师范学院教务处

二〇一七年一月

《数据结构》课程教学大纲 一、课程基本信息 (一)课程代码及课程名称 1.课程代码:06151090 2.课程名称(中/英文):数据结构/Data Structures (二)课程类别及课程性质 专业教育必修课程 (三)学时及学分: 总学时数:64;总学分数:3。 其中,讲授学时:32 ,实践(实验)学时:32。 (四)适用专业及开设学期 适用专业:信息管理与信息系统(本科) 开设学期:第二学期 (五)先修课程与后续课程 先修课程:大学计算机基础、高等数学、C语言程序设计 后续课程:数据库原理与应用、管理信息系统分析与设计、管理信息系统、Java程序设计(高级) 二、课程简介 “数据结构”是信息管理与信息系统专业一门重点专业基础

课程,也是学科专业核心专业基础课程之一,属于专业学位必修课程。本课程的教学任务是针对大量的信息处理对象,介绍对象信息与数据表示的各种抽象的、基本的逻辑结构及其上的基本运算操作。通过研究各种基本数据结构内在的逻辑关系和它们在计算机中的存储表示方式,初步建立数据结构上基本运算操作的正确性概念,同时,结合各种典型问题讨论其上的各种基本运算操作及其基本算法,讲授各种数据结构的特点、适用范围,以及对一些基本算法效率的定性和定量分析方法,为后续课程提供必要的数据结构基础。此外,配合实验课程的教学中,学生应理论联系实际,理论指导实践,通过规范地完成一系列数据结构实验进一步巩固所学的相关书本知识,在知识、能力、素质上得到进一步的提高。 三、教学目的与基本要求 (一)该课程教学目的与专业培养要求对应关系矩阵

计算思维_概念与挑战_李廉

中国大学教学 2012年第1期 7 李 廉,合肥工业大学党委书记、教授,教育部高等学校计算机基础课程教学指导委员会副主任委员。 计算思维——概念与挑战 李 廉 摘 要:本文从现代科学思维体系的角度,阐述了计算思维的内涵与概念、发展历史以及与实证思维、逻辑思维之间的关系。提出了计算思维是构成现代科学大厦的最基本的思维模式之一。在此基础上,本文分析了计算机基础课程教育今后改革的取向和挑战,这个挑战的主要内容是基于计算思维培养的新的教学体系建设,本文建议以循序渐进的方式推进这一计算机课程的重大改革。 关键词:科学思维;计算思维;抽象;自动化;计算机课程改革;计算思维课程体系 计算思维是当前一个颇受关注的涉及计算机科学本质问题和未来走向的基础性概念。这一概念最早是由麻省理工学院(MIT )的Seymour Papert 教授在1996年提出的[1],但是把这一个概念提到前台来,成为现在受到广泛关注的代表人物是美国卡内基梅隆大学(CMU )的周以真教授(Jeannette M. Wing )[2]。计算思维提出了面向问题解决的系列观点和方法,这些观点和方法有助于人们更加深刻地理解计算的本质和计算机求解问题的核心思想。特别是有利于解决计算机科学家与领域专家之间的知识鸿沟所带来的困惑。图灵奖获得者Karp 认为[3],自然问题和社会问题自身的内部就蕴含丰富的属于计算的演化规律,这些演化规律伴随着物质的变换,能量的变换以及信息的变换。因此正确提取这些信息变换,并通过恰当的方式表达出来,使之成为能够利用计算机处理的形式,这就是基于计算思维概念的解决自然问题和社会问题的基本原理论和方法论。计算机不能解决物质变换或者能量变换这样的问题,但是可以借助抽象的符号变换来计算,模拟甚至预测自然系统和社会系统的演化。本文就计算思维的一些概念和对于计算机教育方面的挑战进行一些讨论,以期引起对于这一问题的充分关注。这些讨论针对以下的问题: 1.什么是计算思维?计算思维有什么特征?与计算机是什么关系? 2.计算思维是随着计算机出现才出现的,还是早已存在于人类思维模式之中? 3.计算思维与物理学的思维方式,数学的思维方式有什么区别,有什么联系? 4.计算思维对于计算机科学研究以及计算机教育的启示。 一、计算思维是人类科学思维活动固有的 组成部分 本文中所说的思维都是指科学思维,科学思维是指在人类科学活动中所使用的思维方式。与之相对应的,还有艺术思维,宗教思维等其他思维方式,这些思维不属于科学思维的范畴。 人类在认识世界和改造世界的科学活动过程中离不开思维活动。思维的作用不仅是作为个人产生了对于物质世界的理解和洞察,更重要的是思维活动促进了人类之间的交流,从而可以使人类获得了知识交流和传承的能力,这个意义的重要性是不言而喻的。早期人类表达思维结果的方式一定是相当模糊和凌乱的,因此早期人类对于知识的传承是困难和缓慢的。正因为如此,人类对于自身的思维活动很早就开展了研究,并且提出了一些原则,这些原则揭示了思维活动的以下关键特点: 1.思维活动的载体是语言和文字,不通过语言和文字表达出来的思维是无意义的。 2.思维的表达方式必须遵循一定的格式,需要符合一定的语法和语义规则。只有符合语法和语义规则的表达才能被其他人所理解。 3.为了使别人相信自己的思维结论,必须采取合理的表达方式,说明获得结论的理由,以使别人不去重复思维的过程而相信你的结论。这就是思维逻辑。 这三条原则对于人类文化传承和知识积累是十分重要的,只有遵从这三条原则,人类文化才可以在一个可靠的背景下发展。人类的知识沟通才可以具备一种相互信任的基础。 到目前为止,符合这样三条原则的思维模式大体上

数据结构 教学大纲

《数据结构》课程教学大纲 课程代码:090131110 课程英文名称:Data structure 课程总学时:48 讲课:40 实验(上机):8 适用专业:信息与计算科学专业 大纲编写(修订)时间:2017.11 一、大纲使用说明 (一)课程的地位及教学目标 本课程是信息与计算科学专业的一门重要的专业基础课,它较详细地阐述了使用计算机解 决具体问题时所建立的数学模型的逻辑结构与存储结构的多种类型以及对数据具体进行操作的算法实现。通过本课程的学习,使学生了解和掌握使用高级语言编程时组织数据的基本理论和方法,是学生进一步学习计算机方面相关专业课程的必备基础。 (二)知识、能力及技能方面的基本要求 1.基本知识:掌握时间效率和空间效率的概念,掌握数据结构中的线性表、树、图等基本结构。 2.基本理论和方法:掌握线性表的基本操作,栈、队列、串、数组的基本操作,树的应用方法,图的应用方法及数据的查找、排序操作等。 3.基本技能:学生应该能够使用高级语言正确定义数据的逻辑结构和选择有效的存储结构 解决具体问题,其算法实现应注重时间效率和空间效率。数据对象查找与排序操作等较常用基本操作,学生应掌握算法学会合理使用。 (三)实施说明 1.教学方法:课堂讲授中要重点对基本概念、基本方法和解题思路的讲解;采用启发式教学,培养学生思考问题、分析问题和解决问题的能力;引导和鼓励学生通过实践和自学获取知识,培养学生的自学能力;增加讨论课,调动学生学习的主观能动性;注意培养学生提高利用标准、规范及手册等技术资料的能力。讲课要联系实际并注重培养学生的创新能力。 2.教学手段:在教学中采用电子教案及多媒体教学系统等先进教学手段,以确保在有限的学时内,全面、高质量地完成课程教学任务。 (四)对先修课的要求 要求学生有高级语言的基础知识与编程经验,应该学习过C语言程序设计等课程。 (五)对习题课、实验环节的要求 1.对习题课的要求 学习完每部分内容,都要做相关的练习题,加深对课堂所学知识的理解,检验学生对所学内容的掌握程度,引导学生对所讲例题举一反三,从而达到熟练编程的能力。 2.对实验环节的要求 上机实践环节在理论课后一周左右进行。通过上机调试运行自编程序,熟练掌握程序设计、调试程序的方法。 3. 本课程的课程设计单独设课,单独考核,具体要求参见相应的课程设计教学大纲。 (六)课程考核方式 1.考核方式:考试 2.考核目标:在考核学生对数据结构基本知识、基本方法的基础上,重点考核学生的分析能力及算法设计能力。

《数据结构》课程教学大纲

《数据结构》课程教学大纲 Data Structure 执笔人:编写日期: 一、课程基本信息 1. 课程编号: 2. 课程性质/类别:必修课 / 专业主干课 3. 学时/学分: 48 学时(另实验16学时) / 4 学分 4. 适用专业:计算机科学与技术、软件工程、网络工程、信息管理与信息系统等专业 二、课程教学目标及学生应达到的能力 数据结构课程是计算机相关专业的专业基础课、必修课程,主要介绍用计算机解决一系列问题特别是非数值信息处理问题时所用的各种组织数据的方法、存储数据结构的方法以及在各种结构上执行操作的算法。通过本课程的学习,要求学生掌握各种数据结构的特点、存储表示、运算方法以及在计算机科学中最基本的应用,培养、训练学生选用合适的数据结构和编写质量高、风格好的应用程序的能力,培养学生分析问题、解决问题的能力,并为后续课程的学习打下良好的理论基础和实践基础。 三、课程教学容与基本要求 (一)绪论( 3 学时) 1.主要容: (1)介绍什么是数据结构; (2)基本概念和术语: 数据、数据元素、数据对象,以及数据结构的定义、逻辑结构、物理结构(理解)数据类型、抽象数据类型; (3)抽象数据类型的表示与实现; (4)算法和算法分析: 算法的概念、算法设计的要求以及算法效率的度量。 2.基本要求 (1)了解学习数据结构的重要性; (2)掌握数据结构的定义及相关概念和术语; (3)了解抽象数据类型的定义、表示与实现方法; (4)理解算法的概念、特点并掌握度量其效率的基本方法。 3.自学容: 类C语言的书写规。 (二)线性表( 6 学时) 1.主要容: (1)线性表的抽象数据类型定义和相关概念:数据项、记录、文件等; (2)线性表顺序存储表示和基本操作的实现; (3)线性表的链式存储表示和基本操作的实现; (4)稀疏多项式的抽象数据类型定义、表示和加法的实现。

《数据结构》实验教学大纲

《数据结构》实验教学大纲 课程代码: B03203 课程名称:数据结构 英文名称: Data Structures 课程总学时: 60 (其中理论课 46 学时,实验 14 学 时)学分: 2.5 课程类别:必修课程性质:专业基础课 先修课程:计算机导论、Java语言程序设计 面向专业:软件技术、计算机网络技术 开课单位:软件工程系 一、实验教学的性质地位和任务 数据结构实验课是计算机类专业的一门专业基础实验课,是后续专业课程的基础;该课程的主要任务是:进一步掌握和拓展所学的理论知识,初步掌握解决问题的基本结构以及建立在该结构上的算法,培养学生的综合能力;本课程主要内容包括:线性表及其应用实验,串及其应用实验,树及其应用实验,图及其应用实验,查找实验,内部排序实验;通过本实验课的学习,学生应学会分析研究计算机加工的数据结构的特性,培养数据抽象的能力,训练学生进行复杂程序设计的技能,培养良好程序设计的习惯,初步掌握算法的时间分析和空间分析的技术。 二、实验内容与要求 项目一、线性表及其应用

(1)实验目标 1.加深理解线性表的顺序表示与链式表示的意义和区别,理解不同存储结构下插入与删除操作的算法; 2.熟练掌握线性表的顺序存储方式及其插入、删除等基本操作的算法实现; 3.熟练掌握线性表的链式存储方式及其插入、删除等基本操作的算法实现; (2)具体内容 1.设计一组输入数据并编写主程序分别调用上述算法(顺序表示的算法为InitList_Sq、ListInsert_Sq、ListDelete_Sq等,链式表示的算法为 InitList_L、ListInsert_L、ListDelete_L等),调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解; 2.设计一个可以容纳40位数的求n!的程序。 (3)主要仪器设备与工具 PC机一台/每人。 项目二、栈及其应用 (1)实验目标 1.理解栈的概念; 2.掌握利用数组实现栈的基本操作; 3.应用栈结构来解决表达式求值的问题。

什么是计算思维+计算思维的含义

什么是计算思维计算思维的含义 你知道计算思维吗?计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。下面小编为你整理计算思维,希望能帮到你。 什么叫计算思维计算思维的含义 计算思维是数字时代人人都应具备的基本技能。计算思维与理论思维和实验思维一起构成了科技创新的三大支柱。 美国卡内基梅隆大学(Carnegie Mellon University)Jeannette M. Wing 教授2006年3月在美国计算机权威期刊Communication of the ACM上将计算思维定义为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计及人类行为理解等涵盖计算机科学之广度的一系列思维活动。 计算思维具有如下特征: (1)计算思维是概念化的抽象思维,而非程序思维。 (2)计算思维是人的思维,而非机器的思维。 (3)计算思维是思想,而非人造品。 (4)计算思维与数学和工程思维互补和融合。 (5)计算思维面向所有的人,所有的领域。 (6)如同“读、写、算”一样,计算思维是一种基本技能。 计算思维教育实践途径 计算思维培养,具体到中小学教育实践中,必须要有一个依托工具和抓手。中小学信息技术课程中,如何渗透计算思维教育,可以从如下几个方面尝试。 (一)在计算机程序设计教学中渗透计算思维 通过计算机程序设计教学培养学生的计算思维,是中小学信息技术教师最容易上手的做法。对于计算思维的培养,宜选择可视化的、模块化的、易于学习的程序设计软件。 LOGO语言是一种早期的编程语言,也是一种与自然语言非常接近的编程语言,它通过“绘图”的方式来学习编程,对初学者特别是儿童进行寓教于乐的教学方式。至

相关文档
最新文档