数据结构西安交通大学精品课程软件开发技术基础
- 格式:ppt
- 大小:76.50 KB
- 文档页数:12
软件工程硕士研究生专业课程
软件工程硕士研究生专业课程通常涵盖以下内容:
1. 软件工程基础:软件开发周期、软件工程方法和原理、需求工程、软件设计原则等。
2. 软件开发技术:面向对象程序设计、数据结构与算法、软件测试、软件质量保证、软件项目管理等。
3. 软件开发工具:软件开发环境、版本控制系统、集成开发环境、测试工具等。
4. 软件架构与设计模式:软件系统架构设计、设计模式、面向服务的架构、分布式系统等。
5. 软件项目管理:项目规划、需求管理、进度控制、资源管理、团队协作等。
6. 网络与分布式系统:网络协议、分布式系统概念、分布式计算、云计算等。
7. 数据库技术:关系数据库管理系统、数据库设计与实现、数据库安全性、数据仓库等。
8. 软件安全与隐私保护:软件安全原理、漏洞和威胁分析、安全测试和评估、隐私保护技术等。
9. 软件工程实践:实际项目开发、软件需求分析与设计、软件质量控制、软件维护与更新等。
此外,研究生期间还涉及科研方法与论文写作、创新与创业、专业英语等相关课程,以培养学生的科研能力和综合素质。
不同院校和专业可能会有些许差异,具体课程设置请根据相关学校的教学计划来确定。
软件工程专业知识体系
软件工程专业知识体系包括以下几个方面:
1. 软件开发基础知识:计算机科学基础、算法与数据结构、编程语言等技术基础知识。
2. 软件工程基础知识:软件生命周期、需求工程、软件设计、软件测试、软件维护等软件工程基础知识。
3. 软件开发过程模型:敏捷开发、瀑布模型、融合模型等常见软件开发模型。
4. 软件开发工具和技术:IDE、版本控制、自动化测试、持续集成、代码重构等常用软件开发工具和技术。
5. 软件质量保障:软件测试、代码评审、软件度量等软件质量保障知识。
6. 项目管理:项目计划、项目管理方法论、项目成本、资源管理等项目管理知识。
7. 软件安全:软件安全概念、安全威胁、安全风险管理等软件安全知识。
8. 软件市场化:软件需求分析、营销策略、竞品分析、用户体验设计等软件市场化知识。
以上是软件工程专业知识体系的主要内容,软件工程师需要从这些方面进行系统的学习和掌握,以应对各类软件开发项目。
大学软件技术学习计划一、学习目标1. 提高编程基础:掌握常用编程语言,熟练运用数据结构和算法,具备软件开发能力。
2. 深入学习软件工程:了解软件开发流程和项目管理,掌握软件测试和质量保障技术。
3. 拓展前沿技术:学习人工智能、大数据、云计算等新兴技术,提高综合实践能力。
4. 掌握团队协作技能:了解敏捷开发、版本控制、团队协作等实践技能。
5. 提高解决问题的能力:学习软件设计原则和模式,提高解决实际问题的能力。
二、学习内容1. 编程基础:学习C、C++、Java等常用编程语言,掌握面向对象编程思想,深入研究数据结构和算法。
2. 软件工程:了解软件开发过程,学习需求分析、系统设计、编码、测试和维护等全过程,掌握敏捷开发、DevOps等实践方法。
3. 软件测试:学习软件测试的方法和工具,熟悉自动化测试、性能测试等技术,了解质量保证体系和标准。
4. 前沿技术:学习人工智能、机器学习、大数据、云计算等新兴技术,掌握相关开发工具和平台。
5. 软件设计:了解设计原则和模式,学习软件架构、设计模式、重构等技术,提高软件设计能力。
6. 项目实践:参与软件开发项目,掌握团队协作技能,熟悉版本控制、代码评审、文档管理等实践技能。
7. 解决问题:学习如何分析和解决实际问题,掌握问题定位、调试、性能优化等技术,提高解决问题的能力。
三、学习方法1. 阅读书籍:选择经典的编程语言、软件工程、软件测试、前沿技术等书籍,进行系统学习。
2. 参与课程:选修相关课程,包括计算机基础、数据结构、算法、软件工程、人工智能等课程。
3. 实践项目:参与学校或社会项目,积累实践经验,提高问题解决能力。
4. 学习社区:加入技术社区,参与讨论、分享和交流,及时了解行业信息和技术动态。
5. 自学能力:培养自主学习能力,掌握查找资料、学习文档、解决问题的能力。
四、学习计划1. 第一年(1)学习C语言和数据结构,掌握基本编程技能和算法思想。
(2)了解软件工程概念和方法,学习UML建模、需求分析等基础知识。
《数据结构》课程标准学时:72学时(其中:讲课学时:36 上机学时:36 )先修课程:高等数学、C语言程序设计后续课程:软件开发相关的应用性课程(Android应用开发、软件工程等)适用专业:软件技术、移动应用开发、软件与信息服务等开课部门:信息工程与大数据学院一、课程的性质《数据结构》是面向软件技术相关专业的一门专业基础课,课程要求:熟练掌握线性表、栈和队的存储结构及基本操作,并能在相应的应用中正确地选用,培养学生用链式结构编写程序的能力;了解串和广义表的定义和存储结构;掌握数组的存储结构,熟悉稀疏矩阵的两种压缩存储方法的特点及适用范围;了解树的存储结构及特点,掌握二叉树和图的存储结构及其相应算法,培养学生用非线性结构解决实际问题的能力;掌握各种查找、排序方法,培养学生灵活应用已有排序方法的能力,开拓思路编写新的排序算法。
二、课程设计理念数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
精心选择的数据结构可以带来更高的运行或存储效率,数据结构往往同高兴的检索算法和索引技术有关。
1、课程地位理念在许多类型的程序设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法随之确定,是数据而不是算法是系统构造的关键因素。
2、课程学情理念本课程开设在嵌入式系统工程专科第一学期,学生在学习本课程前已具备计算机基础、C语言基础等知识,本课程力图让学生学会在C语言环境下,运用面向对象的思想编写规范的代码,实现经典的数据结构和算法。
熟悉常用的数据结构和算法,使学生初步具备一个优秀的软件开发人员所应有的基本能力。
软件技术基础知识第一章1、算法和算法的特点2、数据结构:指相互关联的数据元素的集合。
数据结构分为逻辑结构和物理结构。
逻辑结构:表示了数据的逻辑关系(前后件关系)。
按照逻辑关系的不同分为:线形结构和非线形结构。
物理结构:表示了数据在计算机上的存放形式,也称存储结构。
按照存放形式的不同分为:顺序存储和链式存储。
3、线形结构的条件:4、线形结构通常称之为线性表。
顺序存储的线性表称为顺序表,链式存储的线性表称为线性链表。
5、对与空的数据结构可以为线性结构也可以为非线性结构。
6、顺序表和线性链表的特点。
7、栈和队列的特点。
8、栈和队列可以采用顺序存储也可以采用链式存储。
9、双向链表和循环队列。
10、树和二叉树11、二叉树的基本性质①第k层最多具有的结点数。
②深度为k的二叉树最具有的结点数。
③任何二叉树对为0的结点数和度为2的结点数的关系。
12、满二叉树的特点。
13、完全二叉树的特点。
14、二叉树的遍历15、顺序查找适用的情况。
对长度为n的线形表进行顺序查找最坏的情况需要查找的次数。
16、二分法查找适用的情况。
对长度为n的线形表进行二分法查找最坏的情况需要查找的次数。
17、排序的分类。
交换类排序:冒泡排序法,最坏的情况需要比较的次数。
插入类排序法,堆排序法。
第二章1、编程的良好习惯要求:根据需要添加相应的注释,应该有良好的视觉组织,在完成功能的前提下,优先考虑可读性和清晰性,然后在考虑效率。
2、注释的分类:序言性注释和功能性注释。
3、结构化程序设计的原则。
4、结构化程序设计的基本结构。
5、对象是属性和行为的封装体。
6、对象的基本特点:标识唯一性,分类性,多态性,封装性,摸快独立性。
7、类和实例之间的关系。
类是具有共同属性和方法对象的集合,是关于对象的抽象,一个具体的对象则称之为类的一个实例。
8、消息。
9、继承、多态性。
第三章1、软件的定义及软件的特点软件是程序、数据及相关文档的集合。
特点:2、软件危机是开软件过程中所遇到的一系列的严重问题。
二、多选题(20分)61、以下合法的十六进制数是()。
A、 OxffB、0XabcD、0X9X正确答案:BC学生答案:BCV62、定义语句..若要通过scanf("%d.%d”,&x,&y);语句使变量x得到数值11,变量y 得到数值12,下面四组输入形式中,正确的有()。
<回车>8、11.<空格>12<回车>C、<回车>、<回车>12<回车>正确答案:BCD学生答苯:BCDV63。
以下对C语言中的函数描述不正确的有()-A、可以概套定义,不可以嵌套调用B、不可以嵌套定义,可以嵌套调用C。
可以嵌套定义,也可以嵌套调用D、嵌套定义和嵌套调用都不允许正确答案:ACD学生答案:ACD>64、著a,,d都是int型变童且初值为0,以下选项中正确的赋值语句是()。
=b=c=d=100,B、d++.+b;=(C=22)-(b++);正确答紧:ABD学生答案:ABDV65、以下说法正确的是()。
A、C普甚里有字符串变量B、C语言里没有字符串变量语言里有字符变量D、C语言里设字符变量正确答案:BC学生答案:BCV66、在定义inta[2][3]之后,对a的引用正确的有()。
B、][1>2111][2][0]正确答案:AC67、以下用户标识符,其中台法的是()。
A、returnB、f2_G3C、A3-3D、abc正确答案:BD学生答案:BD×68、关于while语句与do-while语句,以下正确的是().A、while是当型结构B、do-while是直到型结构C、两者有区别D、两者无区别正确答案:ABC学生答案:ABCV69、正确的if语句形式是().A、if(x>y&&xl=y);B、if(x==y)x+=y;C、if(xl=y)scanf("%d",&x)eisescanf(["%d",&y);D、if(x<y)(x++;y++)正确答案:ABD学生答案:ABDV70、能正确表示逻辑关系:"a210”的C语言表达式是()。
软件开发基本知识一、软件的概念1、软件:是计算机系统中与硬件相互依存的部分,它包括程序、数据及相关文档的完整集合。
其中程序-是按照事先设计的功能和性能的要求执行的指令序列数据-是使程序正常操纵信息的数据结构文档-是程序开发、维护和使用有关的图文资料2、软件分类(按功能划分)系统软件:如操作系统、数据库管理系统、设备驱动程序等支撑软件:协助用户开发软件的工具性软件,如微软可视化开发平台工具应用软件:为特定目的服务的软件,如财务管理软件。
二、软件工程和软件开发1、 软件工程一系列完善的工程化原则。
软件工程是为经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。
软件工程是开发、运行、维护和修复软件的系统方法。
1983年,IEEE(电气和电子工程师学会)作出定义,软件工程是开发、运行、维护和修复软件的系统方法。
软件定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必须的数据。
主要思想是强调软件开发过程需要英语工程化的原则。
2、 软件的生存周期按照软件工程的过程(plan, do,check, action)即软件规格说明、软件开发、软件确认,软件演进,进一步展开,软件的生存周期包括6个阶段(1) 制定计划(2) 需求分析(3) 软件设计(4) 程序编写(5) 软件测试(6) 运行和维护3、 软件开发开发阶段有三个相互关联的步骤组成,即设计、实现(编码)、测试。
三、各个阶段的目标和主要工作制定计划管理层面的内容。
制定待开发软件系统的总目标,给出它的功能、性能、可靠性以及接口等方面的要求;研究完成该项软件任务的可行性,探讨解决问题的可能方案;制定开发实施计划,可行性研究报告。
需求分析对待开发软件提出的需求进行分析并给详细定义出需求分析的目标:是深入描述软件的功能和性能,确定软件设计的约束、软件同其它系统元素的接口细节,分析阶段只确定软件系统要“做什么”,“怎么做’有后续的设计阶段完成。
其他系统西安交通大学-数据结构所有答案设某堆中有n个结点,则在该堆中插入一个新结点的时间复杂度为Oog2n 答案是:正确尔排序算法的时间同复杂度为on答案是:错误图的深度优先遍历算法中需要设置一个标志数组,以便区分图中的每个顶点是否被访问过。
答案是:正确分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的块号,然后再在相应的块内进行顺序查找。
答案是:正确先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列答案是:正确完全二叉树中的叶子结点只可能在最后两层中出现。
答案是:正确快速排序是排序算法中平均性能最好的一种排序。
答案是:正确中序遍历二叉排序树可以得到一个有序的序列。
答案是:正确设一棵树T可以转化成二叉树BT,则二叉树日T中一定没有右子树。
答案是:正确冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。
答案是:正确哈夫曼树中没有度数为2的结点。
答案是:错误二维数组和多维数组均不是特殊的线性结构。
答案是:错误哈夫曼树中有度数为1的结点。
带权无向图的最小生成树是唯一的。
答案是:错误由树转化成二叉树,该二叉树的右子树不一定为空。
答案是:错误设初始记录关键字基本有序,则快速排序算法的时间复杂度为Onog2n。
答案是:错误顺序表查找指的是在顺序存储结构上进行查找。
答案是:错误希尔排序算法的时间复杂度为on2。
答案是:错误闭散列法通常比开散列法时间效率更高。
答案是:错误具有n个结点的完全二叉树的高答案是:错误二维数组是数组元素为一维数组的线性表,因此它是线性结构答案是:错误用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。
答案是:错误有向图的邻接表和逆邻接表中表结点的个数不一定相等。
答案是:错误设初始记录关键字基本有序,则快速排序算法的时间复杂度为ong2n。
答案是:错误线性表中的所有元素都有一个前驱元素和后继元素。
答案是:错误由树转化成二又树,该二又树的右子树不一定为空。
《数据结构》课程标准课程名称:数据结构课程代码:3250619适用专业:软件技术专业(软件开发方向)课程性质:专业必修课学时:48学时(理论:24 实践: 24)学分:3学分一、课程概述(一)课程的地位和作用《数据结构》是软件技术专业(软件开发方向)的一门专业必修课。
课程的前导课程是《Java面向对象编程》,本课程在后续软件开发类课程中起着非常重要的作用,其知识的应用将贯穿于本专业的所有课程。
在程序设计中,一个好的程序无非是选择一个合适的数据结构和好的算法,而好的算法的选择很大程度上取决于描述实际问题的数据结构的选取。
所以,学好数据结构,将是进一步提高学生程序设计水平的关键之一。
数据结构的应用水平是区分软件开发、设计人员水平高低的重要标志之一,缺乏数据结构和算法的深厚功底,很难设计出高水平的具有专业水准的应用程序。
本课程的改革理念是,坚持工程化、实用化教学,密切适应计算机技术的发展趋势,坚持学以致用;解决抽象理论与实践相脱节现象,让绝大多数学生在有限的时间内迅速掌握课程的基本理论知识,并把理论知识应用到软件开发的实际工作中,开发出高质是的应用软件。
(二)课程设计思路课程资源建设遵循三个原则、一个过程、四个应用层次。
课程内容的选取遵循科学性原则,课程内容的选取依据数据结构课程在学科体系的理论体系,结合其在实际开发中的使用频度及难易程度,选取适合高职学生的学习内容;课程内容的组织遵循情境性原则,所有模块的内容按一个过程进行组织。
课程内容置于由实践情境建构的以软件开发过程主要逻辑为主线的行动体系之中,采用打碎、集成的思想,将学科体系中所涉及的概念、方法、原理打碎,然后按照软件开发过程逻辑重新集成。
课程资源的建设充分体现人本性原则,按人类掌握知识的基本规律“获取—>内化—>实践—>反思—>新的获取”,开发四个实践层次“验证性应用、训练性应用、设计性应用、创造性应用”的训练题库。
二、培养目标(一)总体目标《数据结构》课程以培养学生的数据抽像能力和复杂程序设计的能力为总目标。
西安交通大学820计算机软件基础历年考研真题汇编最新资料,WORD格式,可编辑修改!目录说明:2006年之前计算机软件基础科目代码是496, 2007年改为431,2015年科目代码是820。
2015年西安交通大学820计算机软件基础考研真题(回忆版)820只考C语言与数据结构,难度不大,非常基础,具体题目记不清楚由于09年以后的试题基本没有,就大体回忆一下,也算是感谢半年来大家资源的相互分享,以供参考题型:选择2 X 10;判断2 X 10;简答共三道20分;编程4 X 10;问答题5 X 10数据结构部分:第一章:概述,非重点章,一个概念;一道时间复杂度都是选择,都不难第二章:线性表,次重点章,15分左右,一道编程大题,计算单链表中值为X的结点数量,其他的记不清了,总之,非常基础,重点在理解概念,熟悉算法操作,代码量很少第三章:栈和队列,次重点章,15分左右,一道大题,循环队列判空判满,入队出队,及出队入队后rear/fro nt 指针的位置,简单吧,代码量少且基础;今年竟然没有栈的考题第四章:串,非重点章,一道选择题,模式匹配的概念第五章:数组,非重点章,一道判断题,行优先和列优先存储第六章:树,重点章,考题很多,但均为概念和算法思想与过程,基本无代码,大题:树的中序、后序遍历,二叉树转化为森林,森林的先序遍历,二叉排序树的概念,性质,创建,哈夫曼树的概念,创建,哈夫曼编码的过程;题目较多,选择,判断,简答,问答都有,分值应该超过30 了吧第七章:图,重点章,考题很多,但均为概念和算法思想与过程,基本无代码,大题:拓扑排序的概念和应用场合,图的邻接矩阵,广度优先,生成树,克鲁兹科尔算法过程;题目较多,选择,判断,简答,问答都有,分值应该也超过30 了吧,选择,判断重在概念第八章:查找,次重点章,一道大题:哈希查找表的生成,处理冲突,ASL,无代码,这不科学第九章:排序次重点章,大题涉及:选择排序的流程图,直接插入排序的过程,基数排序的过程,无代码,这更不科学语言部分:四道编程题,其中一道为单链表的第一道:编写函数实现二维数组对角元素的和第二道:编写函数分别计算字符串中数字、字母和其他字符的个第三道:编写程序实现选举结果的输出第四道:编写函数计算单链表中值为X的结点个数注:问答题中有循环队列出队、入队的伪码实现可以看到,整张试卷难度不大,代码量甚少,重基础,重概念,重算法过程,数据结构部分,只要认真看教材,做到熟悉,记忆准确就可以及格了,语言部分甚至可以不用复习,我就是这样的,熟悉任何一门语言即可说明:以上仅为15年考题情况,由于记忆有限,各章分值分布也只是大概,重点与否自行判断,大题知识点基本就这些,遗漏不了多少!交大的讲义啊,期末题啊,复习大纲之类的,可以不用,不是说没有,只是用了和认真看教材没区别,只要认真看书了,就应该不会差第「爻(共2頂)2007年西安交通大学431计算机软件基础考研真题⑥(IQ 分)设散列H (Key) = Key mod 7.敵列爰的地址空间为:G “ 6, 对黄讎字序列C32, 13.49. 55* 22, 38» 21).试问:<» ) 核找性探赭怯解決冲突.产主的敢列表是= i 地址 | 0 1 2 . 3 4 5 - 6I Key:关键字 3249 55 22 1 38'芥疋较次数 | J三.算法浚计(毎题苗分.共却分〉G)在主荐储器中,有一个如(图一)所示的表结构称静态还蛍结沟人表移的每亍 元素由道(v)和捋针(p)两部分粗咸・在叢格中以琏麦方式存敖着一个线左袁L,注布第 —个元素的6:愛存啟在邛中.表格中全元素也旌接成一个張性舉E,它的第一个元素 的位置放在Cp 中■两个线性表中的最后一T 元素的福計都是0,子程序enter (u t m).(如图二所示h 在疑性表L 宇位于m (m<>0)处的元索后插入 一个以試为值的结点.请在图二的①、②处填入正晚的操作・厂 CP-、I L D异第出口(元2冈单元〉Cptnl 一”,0 PU->v(I) 图二1 -.* T 0图一(2)涼程图如图三所示,用来实现中序遍历二叉树的算法,二叉树存放在数组tree中,每个数组元素存放树中的-个结点,每个结点有三个域:值,左指针,右指针•分别用tree(i].v, tree[i].l, tree[i].r表示轟i个结点的值、左指针及右指针・其中左、右指针的值为所指结点在数组中的下标,若診针值为0,表示它指向空树・图中指针root指向二叉树的根结点・问题一:谓在流程图中(D~③处填入适当的操作・.问题二:将流程图中“输出lree【p].v”这一框移到流程图中何处,軌可以使流程图从中序遍历变为前序遍历,请画出流程图・i图三四.编写程序(每題10分,共20分)(可选用任意一种程序设计语言编写程序)①编写因数,函数首部为void strcat (char •sl.cbar *s2),实现将两个字符串合并后存到si 中.②设有一个己排好序的数组,编写程序,要求:输入一个数,按原来排序的规律将它插入数组合适的位置中.并且输出数组内容.五、设计算法并编写程序题(30分)1、设计算法并编写程序完成如下功能:(】5分)1)从键盘输入】00个整型数宪;2)请统计这】00个数中非负个数;3)量终程序应该输出这个个数,井且以每行输岀W个数据的要求输出所有的负数(包括0)・4)写出程序中的数据结构:5)用描述算法的四种方法之一,描述你所设计的算法・2、设计算法井编写函数int findMax JMinGnt a[ ),int n)»有如.卜功能:伤)1)该功能为在具有n个元素的数组a中找到最大和躍小元素并輸出,函数返回值为最大和最小值之和.2)写出该函数中的形参的数据结构;3)用幽述算法的四种方法之一,描述你所设计的算法・第2页(共2页)。
在当今信息化社会,计算机技术与软件专业技术资格基础知识已经成为了越来越重要的一部分。
无论是从事技术行业的从业者,还是普通用户,对于计算机技术与软件专业技术资格基础知识的了解都至关重要。
本文将从各个方面深入探讨计算机技术与软件专业技术资格基础知识,帮助读者更好理解和掌握这一重要领域。
一、计算机技术与软件专业技术资格基础知识的概述计算机技术与软件专业技术资格基础知识主要包括计算机网络、数据结构、算法、操作系统、数据库、编程语言等内容。
这些内容构成了计算机技术与软件专业的基础,是从事相关行业必须具备的知识。
1. 计算机网络计算机网络是指将若干计算机连接在一起,通过网络设备进行数据传输和信息共享的技术。
在当今信息化社会,计算机网络已经成为了人们日常工作和生活中不可或缺的一部分。
了解计算机网络的基本原理、常见协议、网络安全等知识对于从事计算机技术与软件专业的人员来说至关重要。
2. 数据结构与算法数据结构是指数据元素之间的关系和结构,而算法是指解决特定问题的一系列指令或规则。
在计算机领域,数据结构与算法是基础中的基础,它们直接影响着程序的效率和性能。
了解各种常用的数据结构和算法,并能够灵活运用它们解决实际问题,是软件开发人员必备的技能。
3. 操作系统操作系统是计算机系统的核心软件,它负责管理和控制计算机的硬件资源,并提供用户与计算机硬件之间的接口。
了解操作系统的基本原理、常见操作系统的特点和使用方法,对于从事计算机技术与软件专业的人员来说至关重要。
4. 数据库数据库是用于存储和管理数据的软件,它对于企业和组织来说具有重要的意义。
了解数据库的基本原理、常见的数据库管理系统、SQL语言等知识,对于从事数据库开发和管理工作的人员来说至关重要。
5. 编程语言编程语言是实现计算机程序的工具,它对于软件开发人员来说至关重要。
了解各种编程语言的特点、语法、应用场景等知识,能够根据不同的需求选择合适的编程语言进行软件开发工作。