20172328 2018-2019-1《程序设计与数据结构》课程总结(第2学期课程总结与回顾)

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

     FROM->>TO: How are you?

    2018年9月9日->>2018年12月16日: Great!

本学期的程序数据和数据结构课程到这里就告一段落了,接下来就让我们一同回顾这学期的点点滴滴。

(按顺序)每周作业链接汇总

  • 第一周作业
    • 软件质量、数据结构以及算法分析的具体内容,主要依托于所用教材的第一章和第二章。
  • 第二周作业
    • 第三章集合概述——栈和第四章链式结构——栈。主要讨论了集合以及用于实现集合的基本数据结构,以及集合设计的相关问题和目标。本章内容以栈为例展示与集合的设计、实现和使用等有关的问题。
  • 第三周作业
    • 学习了第五章:队列。主要内容包含队列的处理过程、如何用对例如求解问题、各种队列的实现等。
  • 第四周作业
    • 列表,主要让我们认识列表以及分析各种列表实现。
  • 第五周作业
    • 学习了第九章:排序与查找,主要包括线性查找和二分查找算法和几种排序算法。我们在软件开发过程中要在某一组查找某个特定的元素或要将某一组元素按特定顺序排序,所以要学习排序与查找的多种算法。
  • 第六周作业
    • 给定关键字序列,用顺序查找、折半查找、散列查找(用线性探查法和链地址法)来实现查找。请画出他们的对应存储形式(顺序查找的顺序表和两种散列查找的散列表),并求出每一种查找的成功平均查找长度。
  • 第七周作业
    • 学习了第11章:二叉查找树。在本章中,主要探讨了二叉查找树的概念和各种二叉查找树实现,考察为二叉查找树添加和删除元素的算法以及维护平衡二叉查找树的算法。
  • 第八周作业
    • 学习了二叉树的另一种有序扩展--堆。本章将讲解堆的链表实现and数组实现,以及往堆中添加元素或从堆中删除元素的算法;还将介绍对的一些用途,包括基本使用和优先队列。
  • 第九周作业
    • 学习了无向图、有向图、带权图、常用的图算法、图的实现策略。

(按顺序)实验报告链接汇总

  • 实验一:线性结构实验报告
    • 简要内容:线性结构之链表及数组。基础链表建立、实现节点插入、删除、输出操作、实现链表的选择排序、实现数组插入、删除、输出操作、实现数组的选择排序。
  • 实验二:树
    • 简要内容:实现二叉树、中序先序序列构造二叉树、决策树、表达式树、二叉查找树、 红黑树分析。
  • 实验三:查找与排序
    • 简要内容:对排序和查找添加一些方法,重构代码,并进行测试。参考http://www.cnblogs.com/maybe2030/p/4715035.html在Searching中补充查找算法并测试、补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)测试实现的算法

蓝墨云作业&改错博客链接汇总

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

回答:
本学期自认为最好的一篇博客是第七周学习总结,原因是写这篇博客的时候很快乐,是真的感觉自己在写学到的东西,不是简单地完成机械的任务。

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

回答:
去找本学期作业里面阅读量最高的一篇博客时,排行榜上竟然没有本学期的博客,所以说明这学期确实没有上学期博客质量高。

  最后找到了实验:三种查找算法练习。这是两个学期来第一次因为课堂实验做错了而去补的博客,有点戏剧性的成为了阅读量最高的博客,究其原因恐怕是这篇改错的博客比较认真的总结了所学的知识点,对解题步骤也解释的比较清晰。

(按顺序)团队项目报告链接汇总

代码托管链接

给出statistic.sh的运行结果

减掉上学期的10000行代码,自然也是够的。

说明本学期的代码量目标达到没有?

  本学期的代码量达到了预期。

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

  回答:时隔一个学期,又来重读这篇文章,感受自然又是不同。最让我感触深的是防止过度工程中的这样一段话:“很多软件项目如此复杂。实际上没做多少事情,却为了所谓的“将来”,加入了很多不必要的复杂性。眼前的问题还没解决呢,就被“将来”给拖垮了。人们都不喜欢目光短浅的人,然而在现实的工程中,有时候你就是得看近一点,把手头的问题先搞定了,再谈以后扩展的问题。”

  其实,在我们编程过程中,总会觉得一些东西很难无从下手,这可能就是我们对于将来的考虑太多了。先从基础的,能够实现的部分入手,才可能更好的去拓展。

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

  回答:这学期的代码没有自主的敲,除了每周的作业是自己主动动手敲,教材上的代码都是直接使用了源码。

  今年的教材上有一些错误,我觉得好多地方的描述不是很清楚,比如说在学图的时候提到了拓扑排序,但是就是很简单了两行字,不易让同学们理解。还有在某一周的一些代码,我和室友们一起研究了很久才明白具体是什么逻辑。

课堂项目实践

  • 1.时间复杂度分析,用大O记法写出下面各题的时间复杂度。
(1)for(i=1;i<=n;i++) 
      for(j=1;j<=i;j++) 
           for(k=1;k<=j;k++)  
(2)void fun(int n) {
   int i=l;
   while(i<=n)
       i=i*10;}
(3)int i, j,sum;
i=0;
j=0;
sum = i+j;
(4)void fun (int n){
   int i=0;
   while(i*i*i<=n)
       i++;}
  • 2.ArrayStack类的实现和测试
    • 具体内容:完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。
  • 3.链表插入
    • 具体内容:写出链表中节点插入的操作代码:
public static void InsertNode(Student2 Head, Student2 node){}
  • 4.链表实践

    • 具体内容:链表练习,要求实现下列功能:
      (1)通过键盘输入一些整数,建立一个链表(1分);
      (2)实现节点插入、删除、输出操作(2分,3个知识点根据实际情况酌情扣分);
      (3)使用冒泡排序法或者选择排序法根据数值大小对链表进行排序(2分);
  • 5.第4章代码检查

    • 具体内容 :运行PP28,PP28页的程序,根据个人学号输入后缀表达式并计算。(例如,学号172301,输入1 7 + 2 3 0 1 - + *)
  • 6.LinkedStack补全

    • 具体内容:给出size、isEmpty和toString等方法的定义,以完成LinkedStack类的实现。要求:1.能够运行2.需要测试各个方法 3.把代码上传到码云,并将关键代码和运行结果截图加水印(学号)上传。
  • 7.第5章代码检查-凯撒密码

    • 具体内容:代码检查P72-P73,凯撒密码程序。
      运行代码并截图,添加学号水印,上传到码云。
  • 8.杨辉三角(选做题)

    • 具体内容:使用循环队列输出杨辉三角
      (1)用数组实现循环队列(要考虑扩容问题,否则不加分);
      (2)输出杨辉三角;
      (3)代码运行结果添加学号水印,并上传;代码传到码云,附上码云链接。
  • 9.栈队列测试题

    • 具体内容:分析过程:当出现的是E2、E4、E3、E6、E5、E1的时候,说明栈底元素一定为E1。弹栈顺序应该为E2出栈、E3、E4进栈然后出栈,E5、E6随后进栈出栈,最后弹出E1.所以至少栈的容量是三个。
  • 10:第6章代码检查

    • 具体内容:运行PP6.8和PP6.11的程序,把结果截图,加学号水印,上传到蓝墨云。
  • 11.线性表实践

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

    • 具体内容:已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
  • 13.三种查找算法练习

    • 具体内容:每种算法2分,包括画出存储形式和asl的计算。
  • 14.哈希冲突处理实践

    • 具体内容:把自己的学号加21,例如学号为1,把22添加到序列后面,使用链地址法,解决冲突。
      编程实现,并测试。
      要求计算asl,输出冲突次数。
  • 15.希尔排序测试

    • 具体内容:D2等于2时,第2趟排序结果是?
  • 16.树计算题

    • 具体内容:
      1.有1023个结点的完全二叉树,其高度是多少?叶结点数是多少?
      2.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?
  • 17.树的深度和叶子个数计算

    • 具体内容:计算课本中背部疼痛诊断器中决策树的叶子节点个数?根据课堂介绍的递归树深度计算算法,计算决策树的深度。
  • 18.中序和先序计算二叉树结构

    • 具体内容:若已知中序和先序序列,计算二叉树结构
  • 19.层次遍历法实践

    • 具体内容:使用递归实现层次遍历背部疼痛决策树,并按照层次顺序输出每个节点内容。非递归的层次遍历法算法如下:根结点入队;从队头取元素,并执行如下3个动作:
      (1)访问该结点;
      (2)如果该元素有左孩子,则左孩子入队;
      (3)如果该元素有右孩子,则右孩子入队;
      重复执行上述过程,直至队列为空。 此时,二叉树遍历结束。
      按照上述算法,编程实现层序遍历,按照层序的方法,遍历并依次输出每个节点内容。
  • 20.堆构造与排序

    • 具体内容:根据关键字序列:36,30,18,40,32,45,22,50,构造一颗小顶堆,并排序
  • 21.堆排序测试

    • 具体内容:根据关键字序列:36,30,18,40,32,45,22,50,利用数组构造一颗大顶堆,并排序。
  • 22.十字链表练习

    • 具体内容:画出十一链表结构。
  • 23.最小生成树

    • 具体内容:1.画出Prim算法的最小生成树的生成过程2.画出Kruscal算法的最小生成树的生成过程3.计算最小权值
  • 24.Dijkstra(迪杰斯特拉)算法测试

    • 具体内容:使用Dijkstra(迪杰斯特拉)算法计算单源(V1出发)最短路径。
  • 25.AOE练习

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

    • 具体内容:设有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。给定一个包含26个英文字母的文件,统计每个字符出现的概率,根据计算的概率构造一颗哈夫曼树。并完成对英文文件的编码和解码。

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

  回答:有的,课堂项目实践能够快速对所学知识进行检测,具有及时性和反应性。

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

  回答:我本身是一个有点慢热的人,这学期随着课程逐渐深入,自己很多地方做的还有欠缺,也是补了两次课堂实践的博客,还做错了好几道题被扣了分。所以,快实践不仅能够锻炼同学们的学习能力,还能锻炼像我这种慢热型同学的心理承受能力。|*´Å`)ノ

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

  回答:我觉得这学期老师有很认真的备课,大家参与性和积极度也都挺好。教学上的建议暂时没有,继续保持这种教学模式相当不错。

课程收获与不足

  课程收获:这学期学到了不少新东西,在数学建模与数学实验课程、离散数学课程都有用到这门课带来的知识。而且最后能够应用到实际场景中,就让我觉得此行不虚了。

  课程不足:课时可能还不够多,安排也不够合理。有时每周一节,有时每周三节,而且基本都不在早上一二节课,所以效率可能会有影响。周五上课,周末就可能会放松。所以课程内容衔接、复习和继续学习都有一定间隔。

自己的收获(投入,效率,效果等)&
自己需要改进的地方

  自我不足:这学期我的学习热情和动力各方面较上学期都表现的较为疲懒,课程上很多知识点掌握的不够牢靠,很容易忘又没有安排及时的复习,所以这学期对自己的表现不太满意。

  需要改进:继续努力,保持热情,认真对待。

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

  回答:我觉得没有很好的贯彻,我们小组几乎没有单独一起组队学习,讨论问题也都放到了课堂紧紧张张的时间。当然主要原因出在我们自己身上。

  我觉得可以真的把这个单独提出来作为一个自选项,这样可能我们的积极性更高。

问卷调查

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

  • 回答:大概晚上都会抽出时间来学习吧,具体大概每周25小时左右。

2.每周的学习效率有提高吗?你是怎么衡量的?

  • 回答:我觉得没有明显反应,有时候状态比较好,可能那周的学习效率就比较高,反之则不太好。

3.蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?

  • 回答:有促进,我觉得资源和作业布置都很方便也能在手机上及时查收消息。

4.你觉得这门课老师应该继续做哪一件事情?

  • 回答:继续让我们多练习、多实践。虽然很虐,即使很虐,尽管很虐···

6.你觉得这门课老师应该开始做什么新的事情?

  • 回答:能够给同学们一些固定时间地点答疑,这样能够让比较害羞不好意思主动麻烦老师的同学能够去答疑。还有也可以让助教答疑。

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

周节作业二维码

第一周 第二周 第三周 第四周 第五周 第六周 第七周 第八周 第九周

项目app的二维码:

UNO的博客链接汇总

三个实验的二维码:

实验一 实验二 实验三

蓝墨云作业&改错博客的二维码:

哈夫曼编码测试 暑假作业之Enjoy-all 十字链表画法—实践改错 实验:三种查找算法练习
posted @ 2018-12-23 15:08  虹澄清晓  阅读(342)  评论(0编辑  收藏  举报
页尾