本课程分成4部分:
第一部分:
(1)通过侦探破案的引人入胜的故事,在破案过程中采用多种问题求解方法,从而意识到如何在生活工作中运用数据结构与算法进行问题求解。
(2)借助故事理解算法,然后介绍如何描述算法,通过raptor流程图设计算法,最后通过python将流程图转换为程序。
(3)本课程的学习不限制编程语言,重点讲授了如何将raptor描述的算法步骤转换为python代码实现。通常一个问题采用raptor转换为python语言实现后,还会分析python语言结构特点,采用更多的方法编程实现。通过这种方法,理解python数据结构背后的实现原理,了解python更多的语言特性,重点是学会提出问题->寻找求解问题的方法(算法)->算法描述->算法流程图描述详细设计步骤->代码实现的过程。
第二部分:python的各种模块应用(持续更新中,下面是已经上传的内容)
(1)pandas读写和操作excel进行问题求解
(2)正则表达式re简介
(3) pygame游戏开发
第三部分:python的高级应用
(1)常用包简介(numpy,scipy,pandas,matplot,network)
(2)机器学习
(3)深度学习
第四部分 利用学术资源解决算法问题
对软件开发有兴趣的非计算机专业的学生
没有编程基础的同学
学习过程序设计语言课程,数据结构课程,算法类课程的同学通过本课程的学习更加深入掌握所学并进行查漏补缺
第二部分 高级应用 属于选修内容,包含python包的使用,机器学习,深度学习等入门内容。本部分分成3章,不作为考试内容,因此没有编程题,期末考试题也不包含第二部分的内容,仅供有兴趣同学选修学习。
第三部分 利用学术资源解决算法问题;第四部分python的各种应用,这部分逐渐扩展。
第一章 绪论(4学时)
1.1 课程简介
1.2 raptor流程图
1.3 python简介及编程
1.4 2019年-学生的特色作品1
1.4 2019年-学生的特色作品2
1.5 2020年-学生特色作品-爬虫,机器学习与神经网络
1.5 2020年-学生特色作品-游戏
1.5 2020年-学生特色作品-其他
1.6 2021年-学生特色作品
1.7 2022年-学生特色作品
第二章 穷举搜索问题(2学时)
2.1 故事:案件回顾
2.2 穷举搜索
2.3 故事:寻找Billy
2.4 穷举搜索操作与编程实现
第二章 测验
第二章 编程作业
第三章 字符串与数组(2学时)
3.1 数组
3.2 字符串
第三章 编程作业
第三章 测验
第四章 二分搜索与递归(4学时)
4.1 二分搜索
4.2 递归
4.3 圆二分搜索
第四章 测验
第四章 编程作业(更正)
第五章 广度优先搜索与队列
5.1 广度优先搜索
5.2 队列与 广度优先搜索求最短路径的实现
第五章 测验
第五章 编程作业
第六章 深度优先搜索与栈
6.1 深度优先搜索与栈
6.2 栈与队列
第六章 编程作业
第六章 测验
第七章 并行算法,迭代加深与逆向索引
7.1 并行算法
7.2 迭代加深
7.3 逆向索引
7.4 作业提示
第七章 测验
第七章 编程作业
第八章 二叉搜索树
8.1 二叉搜索树的定义与查找
8.2 二叉搜索树的实现
8.3 有序数组构造二叉搜索树
8.4 二叉搜索树的区间查找
8.5 二叉搜索树的插入
8.6 trie树
第八章 编程作业
第八章 测验
第九章 最佳搜索与堆
9.1 最佳搜索
9.2 优先队列
9.3 堆
9.4 大结局
9.5 总结
第九章 编程作业
第九章 测验
第二部分 python应用
1-pandas操作excel
2-正则表达式re简介
3-pygame游戏开发(老师讲解,持续更新中)
4-神经网络及应用1(学生展示)
5-爬虫(学生展示)
6-数据分析(学生展示)
7-pyQt进行游戏开发-俄罗斯方块(学生展示)
8-pygame进行游戏开发2-雷霆战警(学生展示)
第三部分 高级应用1
10.1 python的包
10.2 numpy包
10.3 scipy包
10.4 pandas包
10.5 mapplot包
10.6 networkx包
第三部分 高级应用2
1. 机器学习概要
2.scikit-learn包介绍
3. 回归预测和SVM
第三部分 高级应用3
12.1 深度学习概要
12.2 PyTorch包介绍
12.3 MNIST分类
第四部分 利用学术资源解决算法问题
13.1 常见问题
13.2 文献分类
13.3 信息检索流程
无
《算法神探》,电子工业出版社, Jeremy Kubica,2017.6
《数据结构与算法》Python语言实现,机械工业出版社,Michael T.Goodrich,2018.9
A : 没有编程基础可以学习本课程。我们课程在电子科技大学校内开设。不少文科同学和大一新生也会选修本课程,且反馈受益颇深。但是,需要投入比较多的精力。我们课程不会单纯讲授python基本语法(第一章介绍了主要语法),主要是通过使用python语言逐渐理解和掌握python语言的使用。如果有python基础学习本课程会更简单,可以将精力投入问题求解上。没有编程基础的同学还需要花时间和精力熟悉python语言本身。
Q : 有c/c++/java等编程基础,可以学习本课程吗?
A : 有任何一门编程语言基础,再学习本课程就非常容易。容易不代表课程内容就简单。恰恰相反,我们对常见的数据结构从多角度进行使用和分析,最后编程实现。如果您只是想提高问题求解能力,建议了解了破案故事之后,自己分析问题并编程求解。遇到困难再看视频中老师如何分析和求解的。如果想转python语言,本课程非常适合您。可以轻松完成语言学习的转换,且不是枯燥的学习,是通过使用语言进行问题求解,这种学习事半功倍。
Q : 学习本课程能够达到什么程度?
A : 如果只是看视频,课后不花时间,学完本课程对编程有基本理解,对python语言有初步了解。如果能够在老师作业基础上完成所有作业,python核心基础已经掌握,且已经具有问题求解的能力。如果能够独立完成所有作业,拿到本课程证书,已经达到计算机专业《程序设计》《数据结构与算法》课程优秀水平。如果还能够学习第二部分,第三部分内容并在遇到任何问题,可以(独立或者学习第四部分方法)采用软件开发进行问题求解。已经具备初级工程师水平了。
Q : 后续有哪些推荐课程?
A : 《算法设计与分析》,《编译原理》,《数据库》,《计算机网络及编程》,《游戏开发》......这些都是计算机基础课程,要想扩展计算机专业知识,这些都可以学习。还可以结合你的兴趣学习信息安全相关,密码学相关,图形图像学相关,嵌入式相关,统计分析与机器学习,神经网络与深度学习等内容。