20172325 2018-2019-1《程序设计与数据结构》课程总结

20172325 2018-2019-1《程序设计与数据结构》课程总结

每周作业链接汇总

第一周作业:初步了解数据结构相关知识,软件质量、数据结构、算法分析、时间复杂度分析等;

第二周作业:学习第一种数据结构——栈,包括栈的原理,栈的结构,以及用链表和数组两种实现栈的方法;

第三周作业:学习第二种数据结构——队列,包括队列的原理,队列的结构,以及两种实现队列的方法,这周还加上了队列与栈的区别与优劣;

第四周作业:列表的一些基本知识和方法,无序线性表与有序线性表的区别,以及两种线性表的三种操作的具体实现方法;

第五周作业:查找和排序——查找(静态查找、泛型查找、线性查找、二分查找),排序(选择排序、插入排序、冒泡排序、快速排序、归并排序);

第六周作业:学习第一种非线性数据结构——树,包括树的原理、树的分类、树的实现策略、树的四种遍历方法以及简单二叉树;

第七周作业:深入学习二叉树,主要是AVL树和红黑树的相关知识;

第八周作业:堆得学习,包括堆得原理和用链表和数组实现堆;

第九周作业:图的相关知识,包括网络、最小生成树、图的遍历(深度优先和广度优先搜索);

自认为写得最好一篇博客是?为什么?

  • 自认为写得最好的一篇是第六周博客,因为那一周有很多时间用来学习相关知识,于是在知识的广度和深度方面相较于其他博客会更加具体详细一些。

作业中阅读量最高的一篇博客是?谈谈经验

我的博客其实都差不太多,阅读量最高的应该是第一周博客。经验?!

  • (1)第一:抓住刚开学老师、同学们的学习积极性,他们会积极查阅博客;第二:抓住时间的尾巴,时间越长,阅读量越高。
  • (2)第一条纯属瞎扯,阅读量要高博客一定要有东西才行,客观来说你要有足够充实的知识,主观来讲,你要有自己的见解和思考。

实验报告链接汇总

实验一 :对链表和数组的操作进行实践学习,要求实现插入、删除、输出等操作;

实验二 :对树的知识进行相关实践,要求掌握实现二叉树、决策树、二叉查找树、红黑树等;

实验三 :对查找和排序等知识进行进一步的学习和掌握,回顾一学期的数据结构的知识;

团队项目报告链接汇总

团队作业--第一次

-团队展示

-团队选题:
- 确定选题 ;
- 初步制定完成计划;
- 向有经验的学长采访问答,得到有益的帮助;

  • 需求规格说明书

团队作业--第二次

  • 需求规格说明书的改变

  • 编码规范

  • 数据库设计与ER图

  • 后端架构设计

  • 确定团队分工

  • 组员在上述任务中的分工和工作量比例。

选择困难症的福音——团队Scrum冲刺阶段-Day 1领航
选择困难症的福音——团队Scrum冲刺阶段-Day 2
选择困难症的福音——团队Scrum冲刺阶段-Day 3
选择困难症的福音——团队Scrum冲刺阶段-Day 4
选择困难症的福音——团队Scrum冲刺阶段-Day 5
选择困难症的福音——团队Scrum冲刺阶段-Day 6
选择困难症的福音——团队Scrum冲刺阶段-Day 7

代码托管链接:

给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?

  • 这学期的目标已顺利达到。

加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得

  • 理解的最好方式是实践。在我看来,之所以不懂,是因为不是自己创造编写的,这个时候,通过适当的改动,去看运行或者输出的结果有何变化,通过差别来发现实际的作用的意义是最为简单有效的理解方式,之后可以通过添加适当的注释,或者在命名的时候稍加解释会起到行之有效的理解效果。

积极主动敲代码做到没?教材实践上有什么经验教训?

  • 这个学期在代码的实践上和上个学期相比较有略微的退步,可能由于缺乏新鲜感和惰性的原因导致了这个结果,更多的通过阅读理解教材来学习知识解决问题,在这个过程中我发现自学真的很重要,自学也很讲究方式方法,要学会自己主动的查阅教材外的信息,教材上的知识在很大程度上只起到讲解基础的作用,也就是“师傅领进门,学成靠自身。”

课堂项目实践

  • 时间复杂度分析:时间复杂度分析,用大O记法写出时间复杂度。

  • ArrayStack的实现和测试: 完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。

  • 链表实践:链表练习,要求实现链表的插入、删除、输出等功能。

  • 第四章代码:运行PP28,PP28页的程序

  • LinkedStack补全: 给出size、isEmpty和toString等方法的定义,以完成LinkedStack类的实现。

  • 凯撒密码: 代码检查'凯撒密码程序。

  • 第六章代码检查: 运行PP6.8和PP6.11的程序

  • 线性表实践: 定义一个商品类Product,需要包括商品名称、价格等信息,使用链式存储结构实现一个线性表,存储商店中的商品。支持插入、删除、选择排序、查找等功能,并进行简单测试。

  • ASL测试: 已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
    输出后缀表达式。

  • 三种查找算法练习

  • 哈希冲突处理实践: 把自己的学号加21,例如学号为1,把22添加到序列后面,使用链地址法,解决冲突。编程实现,并测试。

  • 希尔排序测试:

  • 树计算题

  • 中序和先序计算二叉树结构:若已知中序和先序序列,计算二叉树结构

  • 堆排序测试: 根据关键字序列:36,30,18,40,32,45,22,50,利用数组构造一颗大顶堆,并排序。

  • 十一链表练习: 画出十一链表结构。

  • 最小生成树:
    1.画出Prim算法的最小生成树的生成过程
    2.画出Kruscal算法的最小生成树的生成过程
    3.计算最小权值

  • Dijkstra(迪杰斯特拉)算法测试: 使用Dijkstra(迪杰斯特拉)算法计算单源(V1出发)最短路径。

  • AOE练习:
    1、求关键路径,v1和ve的值并写出具体步骤
    2、画出图一可能的拓扑序列
    3、画出图二所示无向图的邻接矩阵、邻接链表,并列出深度优先和广度优先遍历图所得的顶点序列。
    4、写出图三的邻接矩阵,并用prim算法求最小生成树,画出产生过程

  • 哈夫曼测试:
    (1)准备一个包含26个英文字母的英文文件(可以不包含标点符号等),统计各个字符的概率
    (2)构造哈夫曼树
    (3)对英文文件进行编码,输出一个编码后的文件
    (4)对编码文件进行解码,输出一个解码后的文件

课堂实践对提高应用能力有帮助吗?

  • 个人觉得有一定的帮助,但是更多的是检测学习的结果,对于能力的提升作用不大,因为在课堂上有限的时间内不能够得出既实现目的得方法,又简洁有效的编程思路。

课堂实践上自己有什么经验教训?

  • 我的经验是课前课上一定要熟练掌握所学知识,这样才能事半功倍。

课堂实践上对老师有什么教学建议?

  • 我建议课堂实践可以更改为课后实践,在课后紧接着给定有限的时间用于实践,这样一来能够即起到学完马上巩固,有给了足够的时间让有疑问或者不太明白的同学进一步学习的时间。

课程收获与不足

  • 收货:本学期的学习让我对数据结构有了基础的了解和运用,在编程的思路和操作上更进一步;
  • 不足:这学期的学习没有上一学期积极,代码量不太够,可能在一些方法的掌握上还存在不小的漏洞。

自己的收获

  • 经过又一学期的学习,我更加坚信投入的时间和精力与自己所得的收获是成正比的,尤其发现效率是学习至关重要的因素,在有限的时间内投入更多的精力与思考能够学的更多更好。

自己需要改进的地方

  • 学习效率还在不够高,积极主动敲代码做的还不够好。

结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议

  • 贯彻的不错,在有一个人懒惰或有疑问的时候,结对伙伴能够及时的起到监督和帮助的作用。

问卷调查

你平均每周投入到本课程有效学习时间有多少?
10个小时

每周的学习效率有提高吗?你是怎么衡量的?
学习效率起伏不定,我衡量的方法是在熟练掌握运用知识的前提下,花费更少的时间则效率更高。

蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
我觉得有,但是我觉得在时间的控制上可以再稍加斟酌,毕竟有的时候自学时间会比较多,但有的时候还有其他科目的学习任务。

你觉得这门课老师应该继续做哪一件事情?
课堂实践

你觉得这门课老师应该停止做哪一件事情?
博客,这能是博客,造福于学弟学妹

给出你的总结中涉及到的链接的二维码

第一周作业:

第二周作业:

第三周作业:

第四周作业:

第五周作业:

第六周作业:

第七周作业:

第八周作业:

第九周作业:

实验一:

实验二:

实验三:

团队作业一:

团队作业二:

时间复杂度分析:

ArrayStack的实现和测试:

链表实践:

第四章代码:

posted @ 2018-12-31 11:51  20172325  阅读(126)  评论(0编辑  收藏  举报