计算机软件基础

2016年清华大学出版社出版的图书
《计算机软件基础》是由汪友生、张新峰、张小玲、郭民、刘芳、王众编著，清华大学出版社于2016年12月1日出版的教育部高等学校电子信息类专业教学指导委员会规划教材、高等学校电子信息类专业系列教材。该书可作为高等院校本科、专科计算机软件技术基础课程教材，也可作为从事计算机应用工作的技术人员的参考书。
该书共7章，内容主要包括计算机软件技术绪论、线性数据结构、非线性数据结构、排序和查找、资源管理、软件开发和数据库设计。每章都配有较多的习题，书后附有部分习题答案。
成书过程
编写情况
编者通过对计算机软件基础课程的教学研究和教学改革，在教学内容、教学方法和考核方式上已基本形成一套比较完整的体系，在教学经验的基础上，通过对已有教材的分析研究，结合教研工作，编写了该教材。该书由汪友生编写线性表、栈和队列、串和数组、树等部分；张新峰编写绪论、排序和软件开发等部分；王众编写查找部分；张小玲编写资源管理部分；刘芳编写数据库设计部分；郭民编写图部分。全书由汪友生统稿。该书在编写时，参考了相关的文献资料。
出版工作
2016年12月1日，《计算机软件基础》由清华大学出版社出版发行。
出版工作人员责任编辑	封面设计	责任校对	责任印制
盛东亮	李召霞	梁毅	沈露
内容简介
该书共7章，内容以数据结构为主，同时包含操作系统、软件工程和数据库三部分内容。第1章包括计算机软件、数据结构、算法及其分析等内容，第2章介绍线性表的顺序存储和链式存储及其运算、栈、队列、串、数组等知识，第3章讲述二叉树及其遍历、树和森林、图等内容，第4章讲解插入排序、交换排序、选择排序、静态查找表与算法、动态查找表等知识点，第5章介绍操作系统、多道程序设计、存储空间管理相关内容，第6章为软件需求分析、软件设计、软件编程、软件测试、软件调试、软件维护等软件工程相关知识，第7章包括数据库基本概念、关系数据库语言SQL、数据库设计等知识。每章都配有习题，并附有部分习题参考答案。
教材目录
第1章绪论	1.1计算机软件	1.1.1计算机软件的概念	1.1.2计算机语言	1.1.3计算机软件的分类	1.1.4计算机软件的发展	1.2数据结构概述	1.2.1数据基本概念	1.2.2数据结构	1.2.3数据类型	1.3算法及算法分析	1.3.1算法	1.3.2算法的性能分析	1.4小结	1.5习题	第2章线性数据结构	2.1线性表的定义	2.2线性表的顺序存储及其运算	2.2.1顺序表	2.2.2顺序表的基本运算	2.2.3插入和删除的时间复杂度	2.2.4线性表顺序存储结构的优缺点	2.3线性表的链式存储及其运算	2.3.1单链表	2.3.2单循环链表	2.3.3双向链表	2.4线性表的应用	2.4.1有序表	2.4.2多项式的表示与运算	2.5栈	2.5.1栈的基本概念	2.5.2栈的运算	2.5.3栈的应用	2.6队列	2.6.1队列的基本概念	2.6.2顺序(循环)队列及其运算	2.6.3链式队列及其运算	2.6.4队列的应用	2.7串	2.7.1串的定义	2.7.2串的运算	2.7.3串的存储方式	2.7.4串的模式匹配	2.8数组	2.8.1数组的定义	2.8.2数组的顺序存储	2.8.3矩阵的压缩存储	2.9小结	2.10习题	第3章非线性数据结构	3.1树的概念	3.2二叉树	3.2.1二叉树的定义	3.2.2二叉树的主要性质	3.2.3二叉树的存储结构	3.3二叉树的遍历	3.3.1遍历的概念	3.3.2二叉树遍历算法	3.3.3二叉树遍历算法的应用	3.4树和森林	3.4.1树和森林的存储结构	3.4.2树和森林与二叉树之间的转换	3.4.3树和森林的遍历	3.5二叉树的应用	3.5.1哈夫曼树及其应用	3.5.2二叉排序树	3.6图	3.6.1图的基本概念	3.6.2图的存储方法	3.6.3图的遍历	3.6.4图的应用	3.7小结	3.8习题	第4章排序和查找	4.1排序的基本概念	4.2插入排序	4.2.1直接插入排序	4.2.2折半插入排序	4.2.3希尔排序	4.3交换排序	4.3.1冒泡排序	4.3.2快速排序	4.4选择排序	4.4.1简单选择排序	4.4.2堆排序	4.5其他排序	4.5.1归并排序	4.5.2基数排序	4.6各种排序方法的比较和选择	4.7查找的基本概念	4.8静态查找表与算法	4.8.1顺序查找	4.8.2折半查找	4.8.3分块查找	4.9动态查找表	4.9.1二叉搜索树	4.9.2平衡二叉树	4.10哈希表及其查找	4.10.1哈希表的概念	4.10.2几种哈希函数	4.10.3处理冲突的方法	4.10.4哈希表的算法	4.10.5哈希表的应用	4.11小结	4.12习题	第5章资源管理	5.1操作系统的概念	5.1.1操作系统的定义	5.1.2操作系统的分类	5.1.3操作系统的特征	5.1.4操作系统的功能	5.2多道程序设计	5.2.1并发程序设计	5.2.2进程	5.2.3进程之间的通信	5.2.4多道程序的组织	5.3存储空间的管理	5.3.1内存储器的管理	5.3.2外存储器中文件的组织结构	5.4小结	5.5习题	第6章软件开发	6.1软件工程概述	6.1.1软件工程的概念	6.1.2软件生命周期	6.2软件的需求分析	6.2.1需求分析概述	6.2.2结构化分析方法	6.2.3数据流图	6.2.4数据字典	6.3软件的设计	6.3.1软件设计概述	6.3.2结构化设计方法	6.3.3详细设计方法	6.3.4面向对象的程序设计方法	6.4软件的编程	6.5软件的测试	6.5.1软件测试概述	6.5.2软件测试的过程	6.5.3测试用例的设计	6.6软件的调试	6.6.1软件调试的方法	6.6.2常用的调试策略	6.7软件维护	6.8小结	6.9习题	第7章数据库设计	7.1数据库基本概念	7.1.1数据库技术与数据库系统	7.1.2数据模型	7.1.3数据库系统的结构	7.2关系数据库语言SQL	7.2.1SQL语言概述	7.2.2数据定义功能	7.2.3数据查询功能	7.2.4数据更新功能	7.3数据库设计	7.3.1数据库设计概述	7.3.2需求分析	7.3.3概念设计	7.3.4逻辑设计	7.3.5物理设计	7.3.6数据库的实施	7.3.7数据库的运行和维护	7.4小结	7.5习题	附录部分习题参考答案	参考文献
（注：目录排版顺序为从左列至右列）
教学资源
课程资源
《计算机软件基础》配有同名慕课——“计算机软件基础”。
课程名称	建设院校	授课平台	授课教师
计算机软件基础	北京工业大学	中国大学MOOC	汪友生
教材特色
系统性
涵盖了计算机软件技术基础课程中的经典内容；全书以数据结构为主体，兼顾介绍了软件开发中所需要的操作系统、软件工程和数据库等方面的知识。
实用性
围绕软件开发实践展开全面论述，解决软件开发中的普遍技术问题，配备较多的例题和练习题。
针对性
比较简明扼要地论述基本概念、深入浅出地阐明软件开发涉及的基本技术，适合于电类非计算机专业的授课需求。
作者简介
汪友生，北京工业大学信息与通信工程学院副教授、硕士生导师。研究方向：图像处理与分析、模式识别、无损检测以及大数据技术等。
张新峰，北京工业大学信息与通信工程学院副教授、硕士生导师。研究方向：信号与信息处理、图像处理、机器学习与数据挖掘等。
张小玲，北京工业大学微电子学院副教授、硕士生导师。研究方向：大功率器件的热特性分析、长期贮存（或者工作）器件的寿命评价技术、半导体器件的抗辐照特性研究等。
郭民，北京工业大学自动化学院高级工程师、硕士生导师。研究方向：智能信息处理、计算机应用技术等。
刘芳，北京工业大学信息与通信工程学院副教授、硕士生导师。研究方向：智能计算、图像处理、机器视觉、智能控制与无人机可视导航等。
王众，北京工业大学计算机学院教师。