
-
1工作经历
-
2教学信息
-
3研究兴趣
-
4Contact Me
1994.06-now,广西大学计算机与电子信息学院任教至今。
数据结构DataStructure(编号071031 ) 课程内容:本课程内容包括:综述数据,数据结构和抽象数据类型的基本概念;从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;介绍各种排序和查找算法,并着重从时间上进行定性或定量的分析和比较;并介绍常用的文件结构。课程采用面向对象的观点讨论数据结构技术,并以吸收了面向对象程序设计语言C++特点的类C语言作为算法的描述工具,强化数据结构基本知识和程序设计基本能力的双基训练,培养学生的数据抽象能力。为后续计算机专业课程学习打下坚实的基础。 ____________________________________________________________________________________________________________________________________ 《数据结构》课程教学大纲 授课专业:计算机科学与技术 电子信息工程 通信工程 电子商务 学时数:72 学分:4 一、课程的性质和目的 《数据结构》是计算机科学中一门综合性的专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法;学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术,培养基本的、良好的程序设计技能,编制高效可靠的程序,为后续计算机专业课程的学习打下坚实的基础。 二、课程教学内容 第一章 绪论(4学时) 主要内容:数据结构的一些基本概念,包括:数据、数据元素、数据的逻辑结构、物理结构、算法等;抽象数据类型概念;描述算法的程序语言;算法时间复杂度和空间复杂度的分析。 要求:了解什么是数据、数据对象、数据元素、数据结构;什么是数据类型、抽象数据类型;算法的定义、算法的特性;理解数据的逻辑结构与物理结构、逻辑结构与物理结构间的关系;掌握算法时间复杂度和空间复杂度的分析方法;掌握用类C语言描述算法的方法,能够使用类C语言编写算法。 难点:算法时间复杂度和空间复杂度的分析方法。 第二章 线性表(9学时) 主要内容:线性表的基本概念和类型定义;线性表的顺序存储结构;线性表的链接存储结构;多项式及其相加:多项式的类定义,多项式的加法。 要求:了解线性表的基本概念和类型定义,熟练掌握顺序存储的线性表和单链表及静态链表的表示及算法实现;掌握循环链表和双向链表的操作;掌握多项式及其相加算法。 难点:链表的算法设计及其程序实现。 第三章 栈和队列 (9学时) 主要内容:栈的类型定义;栈的顺序存储和链接存储的表示和实现;栈的应用举例(迷宫求解、表达式求值等);队列的类型定义;队列的顺序存储(循环队)和链接存储的表示和实现。 要求:掌握栈和队列的定义;熟练掌握顺序和链接存储的栈和队列的表示及算法实现;了解栈和队列的各种应用。 难点:栈的应用;队列的顺序存储表示和实现。 第四章 串(3学时) 主要内容:串的类型定义;串的定长顺序存储、堆分配存储表示和实现;串的块链存储表示;串的模式匹配算法。 要求:掌握串的定义,串与线性表的主要区别;熟练掌握串的定长顺序存储、堆分配存储的表示及算法实现;理解串的模式匹配算法。 难点:串的各种基本操作实现。 第五章 数组和广义表(6学时) 主要内容:数组的定义;数组的顺序表示和实现;矩阵的压缩存储及相应算法;广义表的定义及存储结构。 要求:掌握数组的定义;熟练掌握数组的顺序表示和实现;熟练掌握矩阵的压缩存储及相应算法;理解广义表的定义及存储结构。 难点:数组的顺序表示和实现;压缩存储稀疏矩阵的快速转置算法及乘法实现。 第六章 树和二叉树(10学时) 主要内容:树的定义、术语、存储结构;二叉树的定义、性质、存储结构;二叉树的遍历和线索二叉树;树与二叉树的转换;赫夫曼树及其应用。 要求:掌握树的定义、术语、存储结构及树与二叉树的转换;熟练掌握二叉树的定义、性质、存储结构及二叉树的遍历算法和线索二叉树;熟练掌握赫夫曼树及赫夫曼编码的定义、建立过程。 难点:二叉树的遍历算法;赫夫曼编码求解算法。 第七章 图(12学时) 主要内容:图的基本概念,图的抽象数据类型;图的存储表示:邻接矩阵、邻接表、邻接多重表;图的遍历与连通性:深度优先搜索、广度优先搜索、连通分量;最小生成树算法;最短路径算法;AOV网络与拓扑排序;AOE网络与关键路径。 要求:掌握图的3种存储表示:邻接矩阵、邻接表和邻接多重表。对于前两种,要求掌握典型操作,如构造、求根、找第一个邻接顶点、找下一个邻接顶点等操作的实现算法;熟练掌握图的两种遍历算法与求解连通性问题的方法,包括深度优先搜索和广度优先搜索算法、求连通分量的方法;掌握构造最小生成树的Prim算法和Kruskal算法;掌握Dijkstra算法及Floyd算法;了解AOV网与AOE网概念;熟练掌握活动网络的拓扑排序算法;掌握求解关键路径的方法。 难点:图的遍历算法;最短路径算法;AOE网络与关键路径。 第八章 查找(8学时) 主要内容:静态查找表与动态查找表概念;顺序表查找;有序表查找;索引表查找;二叉排序树与平衡二叉树概念及算法;哈希表概念及哈希查找算法。 要求:熟练掌握静态查找表的查找算法及其实现;熟练掌握二叉排序树的插入、删除及查找算法及其实现;理解平衡二叉树概念及平衡二叉树生成过程;理解B-树概念,了解B-树的各种操作;掌握哈希表的概念,理解各种哈希函数和处理冲突的方法。 难点:二叉排序树的插入、删除及查找算法及其实现;B-树。 第九章 排序(8学时) 主要内容:排序的概念;直接插入排序、希尔排序;冒泡排序和快速排序;直接选择排序、树型选择排序和堆排序;归并排序;基数排序;各种排序方法比较。 要求:熟练掌握简单的排序方法的算法设计及其实现;掌握希尔排序、快速排序和堆排序算法;掌握归并排序算法;理解基数排序算法;掌握各种排序的特点、时间复杂度和空间复杂度。 难点:希尔排序;快速排序;堆排序。 第十章 文件(3学时) 主要内容:文件基本概念;顺序文件、索引文件;ISAM文件和VSAM文件;直接存取文件;多关键字文件。 要求:理解各种类型文件组织方式和操作方法。 难点:无。 三、课程教学的基本要求 本课程是理论性和应用性均较强的课程,教学环节包括课堂讲授,学生自学,习题课,上机实验,作业,答疑,期末考试。其中:课堂讲授利用多媒体进行教学,教师在课堂上应对数据结构的基本概念、数据关系、存储结构和相应算法进行必要的讲授,并详细讲授每章的重点、难点内容;讲授中应注意理论联系实际,加深学生对有关概念、算法等内容的理解。 本课程上机实验学时不少于18学时;上机前教师预先布置实验题目;学生在上机做实验前,应事先将程序、调试数据、上机操作顺序准备好,并提前使用这些调试数据人工执行过。目的是提高上机的效率和成功率,严禁抄袭或拷贝他人的成果;上机实验结束学生提交实验报告。 习题课约3次,教师可安排在线性结构、树型和图型结构及排序查找内容结束后分别进行。习题课旨在加强学生对前一阶段所学内容的理解,培养实际分析问题、解决问题能力。习题课占上课学时。 自学内容教师可根据学生具体情况进行分配,主要安排在各章节易于理解的内容上,自学不占上课学时。教师可利用自学提高学生算法阅读能力。 在每次课堂教学结束后,教师应布置一定量的作业,加深学生对所学知识的理解、运用,训练学生程序设计能力。 考试采用闭卷方式进行,考试范围应涵盖所有讲授和自学内容,考试内容应能客观反映出学生对本课程的掌握程度及综合应用能力。考试题型应尽量多样化。 总评成绩:平时作用占15%,上机实验占15%,闭卷考试占70%。 四、建议教材与教学参考书: [1] 严蔚敏等著,《数据结构》,清华大学出版社; [2] 苏德富等著,《数据结构》(第二版),重庆大学出版社,2003年4月; [3] 严蔚敏等著,《数据结构题集》,清华大学出版社; [4] Bruno R.Press著,胡广斌等译,《数据结构与算法—面向对象的C++设计模式》。
程序设计基础Basis of Programming(编号071101 ) 预修课程:计算机应用基础 课程内容:本课程主要介绍:C语言的结构特点、发展及应用、数据结构及其运算、程序流程控制、数组与函数、指针类型的各种操作、构造类型及应用、文件操作、图形与音乐制作。 《程序设计基础》课程教学大纲 授课专业:计算机科学与技术 电子信息工程 通信工程 电子商务 学时数:72 学分:4 一、课程的性质和目的 本课程为计算机专业和电子专业的本科学生开设,属于公共基础课。在这个计算机应用非常普及的年代,由于在实际技术工作中往往涉及到程序设计,因此掌握程序设计的基本方法,对学生今后的科研和工作具有重要的意义。学生通过学习该课程后,应该掌握程序设计的基本方法和C语言的基本语法,具有利用C语言工具阅读和编辑简单程序的能力。 二、课程教学内容 第一章 C语言概述(1学时) 重点:对C程序的初步认识和上机步骤。 第二章 算法,学生自学,有助于对程序例子的理解,不占学时。 第三章 数据类型、运算符与表达式(6学时) 要求理解该章节的基础知识。 重点:C的整型数据、实型数据和字符型数据,常量与变量、变量赋初值的概念,算术运算符、赋值运算符和逗号运算符及表达式。 第四章 顺序程序设计(3学时) 要求熟记并灵活运用格式输入输出函数。 重点:格式输入与输出与字符输入输出函数。 难点:输入输出格式字符的规定与使用方法。 第五章 选择结构设计(3学时) 要求理解关系运算符和表达式、逻辑运算符和表达式,掌握if语句和switch语句的运用。 重点:关系运算符和表达式、逻辑运算符和表达式、if语句和switch语句。 难点:if语句和switch语句。 第六章 循环结构设计(3学时) 要求掌握三种循环语句的区别及应用。 重点:while、do-while、for语句。 难点:双重循环。 第七章 数组(6学时) 要求掌握一维数组和字符数组的定义、初始化和应用,理解二维数组的定义、初始化和应用。 重点:一维数组、二维数组及字符数组。 难点:二维数组的特性及应用。 第八章 函数(6学时) 要求掌握函数的定义、调用,理解数组作为函数参数的运用,了解函数的嵌套调用、递归调用、局部变量和全局变量、内部函数和外部函数。 重点:函数的定义、调用、变量的存储类别。 难点:数组作为函数参数调用函数。 第九章 预处理命令(1学时) 要求掌握宏定义和文件包含,了解条件编绎。 重点:宏定义和文件包含。 难点:带参宏定义。 第十章 指针(8学时) 要求掌握指针的概念、指向变量的指针变量、指向一维数组的指针变量,理解指向字符串的指针变量,了解指向二维数组的指针变量、指向函数的指针变量和指向指针的指针变量。 重点:指针的概念、指向变量的指针变量、指向一维数组的指针变量。 难点:指向二维数组的指针变量。 第十一章 结构体与共用体(5学时) 要求掌握结构体类型的定义、初始化和引用,共用体类型的定义、引用。理解枚举类型,了解指向结构体类型数据的指针。 重点:结构体类型的定义、初始化和引用,共用体类型的定义、引用。 难点:指向结构体类型数据的指针。 第十二章 位运算,学生自学,重点是位运算符和位运算,难点是位段,不占学时。 第十三章 文件,学生自学,重点是文件的打开、关闭、读写、定位函数,不占学时。 三、课程教学的基本要求 课堂讲授:讲授理论并举例说明、上机实验验证编程。 教学辅助资料:试题集(库)。 考试环节:考试的形式为笔试,以考程序为主,尽量把理论知识点放在程序中考,促使学生掌握知识以灵活运用为目的,避免死记硬背。 四、建议教材及教学参考书: [1] 谭浩强著,《C程序设计》(第三版),清华大学出版社,1999年12月; [2] 谭浩强著,《C程序设计题解与上机指导》,清华大学出版社,1992年11月; [3] 徐德民著,《最新C语言程序设计》,电子工业出版社,1990年8月。
面向对象程序设计Object-Oriented Programming and Application(编号071151 ) 预修课程:计算机应用基础 课程内容:本课程主要介绍面向对象基础理论知识,JAVA语言基础,JAVA语言的条件和循环控制语句及其应用,JAVA语言的静态数组和动态数组及其作用,JAVA语言的类、对象、方法、继承机制和程序重用技术,JAVA语言的静态字符串和动态字符串处理技术,JAVA语言的异常处理机制,JAVA语言的多线程和并发程序设计技术,JAVA语言的输入和输出处理,JAVA的分布式网络程序换计技术,JAVA的动态图形图像程序设计技术,以及JAVA、Applet间、Applet和HTML之间的集成程序设计技术等。 面向对象程序设计教学大纲正文 《面向对象程序设计》课程教学大纲 授课专业:计算机科学与技术 电子信息工程 通信工程 电子商务 学时数:54 学分数:3 一、 课程的性质和目的 《面向对象程序设计》是计算机科学与技术专业本科生的一门必修课程。面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。 本课程主要掌握面向对象程序设计的方法和C++程序设计语言的各种成分。要求学生在学习过程中通过程序实例和相关练习,逐步掌握C++的面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能,为以后从事软件开发打下良好基础。 二、 课程教学内容 第一章 面向对象的程序设计方法和C++简介(3学时) 主要内容: 1、面向对象程序设计的基本思想及基本概念:对程序的质量要求;程序的模块化和结构化。 2、为什么要面向对象:从面向过程到面向对象。 3、C++语言发展的历史:面向对象语言分类;C++中支持面向对象的特点。 4、面向对象的软件开发环境与Visual C++。 了解面向对象程序设计的基本思想及基本概念;了解面向对象语言的分类和C++中支持面向对象的特点;了解面向对象的软件开发环境:Visual C++开发工作台的主要功能。 要求深刻理解于熟练掌握的内容有:面向对象程序设计方法。 第二章 C++程序设计基础(3学时) 主要内容: 1、基本程序结构。 2、C++的数据类型、常量和变量、表达式与操作符。 3、类型修饰符、函数原型、引用、动态内存分配及编译指令。 要求:掌握函数的一般形式和函数与变量作用域的规则;掌握传值调用和引用调用的方法;了解模块化程序设计的概念,函数与模块化程序设计的关系;了解函数原型与强类型检查的概念。 重点:C++的编程基础知识。 难点:函数、引用。 第三章 类与对象(12学时) 主要内容: 1、类的定义:类的成员变量和成员函数,存取级别,作用域分辨符、对象和类的关系。2、对象的定义:对象的定义格式和对象成员的表示方法。 3、类的构造函数和析构函数:对象的初始化;构造函数的定义;析构函数;类/对象数组;特殊的构造函数X(const X&);对象成员和X(const X&)。 4、静态类成员:静态成员变量;静态成员函数。 5、const成员:常量成员变量;常量成员函数。 6、内联函数:在类中定义内联函数。 7、友元:友元函数;友元类。 8、嵌套类与局部类。 9、在函数中对象传递的机制。 要求:掌握类定义的方法和存取级别;掌握类的成员变量和成员函数的定义和使用,以及对象的定义;掌握构造函数和析构函数;掌握静态类成员变量和成员函数的定义和使用方法;掌握内联函数的定义和使用方法;掌握在函数中对象传递的机制;了解嵌套类与局部类的定义;了解友元函数和友元类。 造函数。 构造函数初始化对象。 第四章 继承性与派生类(6学时) 主要内容: 1、类的层次概念:成员的继承;将概念和实现转变为类的层次。 2、单继承:定义格式;成员存取控制;受保护基类的继承;向基类构造函数传递参数。 3、多继承:多继承的定义方式;虚基类;二义性问题;多继承的应用。 要求:掌握单继承的定义格式、成员存取控制和向基类构造函数传递参数的方法;了解类层次的概念及如何将概念和实现转变为类的层次的方法;了解多继承的定义方式、虚基类和二义性问题。 重点和难点:继承机制中构造函数和析构函数的调用顺序。 第五章 多态性和虚函数(6学时) 主要内容: 1、函数重载:函数重载与二义性;重载构造函数。 2、运算符重载:双目运算符重载;单目运算符重载;建立增值和减值运算符的前缀和后缀形式;重载缩写运算符;引用在运算符重载中的应用;运算符重载的限制。 3、虚函数:继承虚属性;虚函数的层次性。 4、纯虚函数:抽象类。 5、静态联编和动态联编。 要求:掌握函数重载的概念,包括重载构造函数的定义;掌握运算符重载的概念;掌握虚函数和纯虚函数的概念;了解抽象类的概念;了解静态联编和动态联编。 重点:虚函数。 难点:运行时的多态性和各成员函数的调用。 第六章 C++的I/O系统(3学时) 主要内容: 1、流的定义、基本的流类、C++的预定义流。 2、格式化的I/O。 3、重载<<和>>:创建自己的插入符;创建自己的提取符。 4、文件与文件流。 5、文件操作:打开和关闭、文件的定位与随机存取、文件的读写。 要求:掌握C++的流,包括C++的预定义流;掌握格式化I/O的定义格式和定义方法;掌握文件类的定义和相关操作的定义、使用方法;掌握利用常用函数进行文件的打开、关闭、读写、定位等操作;了解如何创建重载运算符<<和>>的方法;了解如何创建无参数操纵符和带参数操纵符的方法;了解一般I/O流和文件流的关系;了解文件与文件流的关系;了解文件系统的概念,包括文件指针和关于文件的操作。 重点:C++的输入输出流类。 难点:使用流类库进行I/O操作。 第七章 模板(3学时) 主要内容: 1、模板的基本概念及定义方法。 2、函数模板。 3、类模板。 4、模板与继承。 要求:掌握函数模板的概念、处理方法以及类模板的基本概念和处理方法;了解模板与继承的关系。 重点:函数模板。 难点:重载函数模板。 三、课程教学的基本要求 本课程是理论性和应用性均较强的课程,教学环节包括课堂讲授,学生自学,习题课,上机实验,作业,答疑,期末考试。其中:课堂讲授利用多媒体进行教学,教师在课堂上应对面向对象程序设计的有关概念、思想和相应算法进行必要的讲授,并详细讲授每章的重点、难点内容;讲授中应注意理论联系实际,培养和加强学生动手编程的能力。总学时为54学时,其中上课36学时,上机实验18学时。考试方式为闭卷考试。 具体要求如下: 1、了解面向对象程序设计的基本思想及基本概念。 2、了解面向对象语言的分类和C++中支持面向对象的特点。 3、理解和掌握面向对象的核心概念-----类和对象。 4、能设计合理的类,并使用继承和派生构造应用程序。 5、能熟练使用C++语言进行应用程序的开发。 四、建议教材和教学参考书: [1] 吕凤翥,《C++语言基础教程》,清华大学出版社,1999年3月; [2] 钱能,《C++程序设计教程》,清华大学出版社,1999年4月; [3] 张基温,《C++程序设计基础》,高等教育出版社,1996年5月。
汇编语言(编号071181 )
计算机方向