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

作者:lalalouye(20172329王文彬)
2018-2019年大二Java程序设计与数据结构课程总目录:第一周 第二周 第三周 第四周 第五周 第六周 第七周 第八周 第九周 实验一 实验二 实验三 Java哈夫曼编码实验

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

又过了一个学期的Java课程的学习,数据结构的了解也随着这学期的学习逐渐变得深入,自己的编码水平也得到了一些提升,虽然这学习在学习Java的过程中发生了一些意外,发现自己在学习一些知识的细节点的时候,理解会出现一些问题导致自己在后面的几次做题中发生了滑铁卢,因此发现学习编程并不是只需要会编程,理论指导实践这句话是没错的。加油!

每周作业链接汇总

  • 第一周总结
  • 初步接触软件开发与数据结构的基本内容,了解到软件=程序+软件工程,同时学习到如何对于算法效率进行分析,大O记法的表示,时间复杂度的学习,其中时间复杂度的分析为重点!
  • 第二周总结
  • 在第二周,接触到了在上学期在四则运算变成中涉及的一个数据结构,栈——先进后出的数据结构,在这一章我们不仅仅需要学会用栈,而且还用之前学习的数组与链表进行对于栈的实现
  • 第三周总结
  • 在第三周学习了一种新的数据结构——队列,先进先出的一种数据结构,同时运用数组和链表进行对于队列进行实现,同时学习了双端队列,循环数组。
  • 第四周总结
  • 在第四周学习了对于列表数据结构的学习,运用数组和链表进行实现,
  • 第五周总结
  • 学习了多种排序和查找算法,并进行运用之前学过的方法进行重新编写,并且运用到例子中。
  • 第六周总结
  • 了解了树这一种数据结构,这是我们接触的第一个非线性数据结构。
  • 第七周总结
  • 学习了树这种数据结构中的一个特例,二叉查找树,并运用之前学习的知识对其进行实现。
  • 第八周总结
  • 学习了优先队列和堆的相关知识,并运用之前的方法对其进行实现。
  • 第九周总结
  • 学习了图的相关知识,并且了解了很多种算法,比如Prim算法,Dijkstra算法。

THE BEST AND THE MOST

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

  • 在这学期新的一学期对于编程的学习,让我更加了解到编程的魅力,自己可以写一些自己想写的东西,而且我觉得其实在编程的过程更像是一种在描绘自己世界的状态,因为当我们充分处于自己的逻辑世界中,发现自己就是这一片地方的霸主,很多在如今我们在想尽办法改变的规则,比如在玩游戏中我们就是开发者,不需要去花钱去玩,自己就可以体验到很棒的体验,或者又是因为自己能力如今的还不是很熟练,就觉得还有很多地方可以探索,怀揣着这份兴趣感,所以更要加油,既然要选出一篇自我感觉最好的博客,我觉得应该是这一篇:2018-2019-20172329 《Java软件结构与数据结构》第五周学习总结
  • 这篇博客是在学习排序和查找这一章节以后所写的,这一章的内容很多,而且很多知识点也很难理解,这一周我是花了很多时间去学习这一章节的,因为查找算法的编写,一些很容易就可以理解,但是还有一些算法始终在一部分就很让我感觉到学习过程很困难,我也是找了很多资料和老师之前给我们的网站进行动态图的理解从而理解这些排序和查找算法,因为当我们搞懂这些算法的原理的时候,也就是当我们逻辑变得清晰的时候,往往在编写代码的时候就会变得容易。

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

  • 在这学期中,我的作业中阅读量最多的是:2018-2019-20172329 《Java软件结构与数据结构》第一周学习总结.

  • 阅读量有94次。

  • 为什么阅读量会有94次呢,其中因为博客园本身对于这个次数的计算,我自己的阅读量也会算进去,并且重复阅读也会将这个次数增加,因此,博客的阅读量本身就存在一定的可刷性,但我的确没有刷,然后呢,我觉得还有可能因为方式提交的比较早,所以大家都有个习惯,看到有人在很早发布就会去看看,第二天发现还是很少人,就在看一遍,慢慢阅读量就上去了,另一个原因可能因为第一篇的排版以及内容比较充实,简单易懂。

实验报告链接汇总

  • 实验一报告
  • 关于在之前学习的几种数据结构的熟悉以及对于学习过的排序算法的运用。
  • 实验二报告
  • 对于树这一种数据结构的深入学习,包括了如何去建立一颗二叉树,决策树,以及对于红黑树代码的分析以及算法的理解。
  • 实验三报告
  • 对于查找算法以及排序算法的再理解以及新的几种算法的补充以及实现。
  • 哈夫曼编码实验
  • 关于哈夫曼树的建立以及通过哈夫曼树进行编码并且对于一段文档进行加密的实现。

团队项目报告链接汇总(乌诺纸牌)

代码托管链接:码云链接:20172329王文彬

statistic.sh的运行结果:

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

  • 每一次看都有每一次的体会,去年看了这片文章后,醍醐灌顶,这让我想起了之前同学说的一句话,是你写了10000行代码还是把1行代码重复了10000遍,我觉得这句话说的真的非常棒,说决定一个程序员能力水平的是代码量,其实也没有什么问题,就像在学习英语过程中,词汇量是一个很大的坎,但是程序之所以区别于其他学科,因为它的可重复性很高,或者就是一个人真实的编码水平其实假如不让他去写程序,能力只有他自己知道,学习是一个持久的过程,假如一昧靠资质,就会成为伤仲永的故事,编码本身就是一个长期学习的过程,程序员本身就是一个很耗神的工作,所以我们要学会自己去写一些代码,用自己的方法,或者真正去理解代码的逻辑。

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

  • 这学期我觉得我很明显的一个改变,一旦老师布置一个实践任务,不再像是过去一样,发现一无所知就去看别人的博客,自己的自我思考过程是一个非常幸福的时刻,当一个人去体验思考的过程的时候是幸福的。
  • 很幸运自己在这学期可以用自己所学去完成一些项目或者大作业,也得到了一些肯定。

课堂项目实践

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

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

  • 链表插入:写出链表中节点插入的操作代码。

  • 链表实践:链表练习,要求实现下列功能:
    (1)通过键盘输入一些整数,建立一个链表
    (2)实现节点插入、删除、输出操作
    (3)使用冒泡排序法或者选择排序法根据数值大小对链表进行排序

  • 第四章代码检查:运行PP28,PP28页的程序,根据个人学号输入后缀表达式并计算。

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

  • 第五章代码检查-凯撒密码:代码检查P72-P73,凯撒密码程序。

  • 杨辉三角:使用循环队列输出杨辉三角。

  • 栈队列测试

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

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

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

  • 三种查找算法练习

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

  • 希尔排序测试

  • 树计算题:计算题:
    1.有1023个结点的完全二叉树,其高度是多少?叶结点数是多少?
    2.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?

  • 树的深度和叶子个数计算:计算课本中背部疼痛诊断器中决策树的叶子节点个数?根据课堂介绍的递归树深度计算算法,计算决策树的深度。

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

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

  • 堆构造与排序:根据关键字序列:36,30,18,40,32,45,22,50,构造一颗小顶堆,并排序?

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

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

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

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

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

  • 哈夫曼编码测试:设有字符集: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个英文字母的文件,统计每个字符出现的概率,根据计算的概率构造一颗哈夫曼树。
    并完成对英文文件的编码和解码。

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

    • 相比于写博客,我更喜欢课堂实践,因为它不仅仅可以让我们对于知识的理解变得更加深刻,还可以让我们对于知识点的理解更加清晰,因为让一个知识点变得熟练的过程就是实践和联系的过程。同时还可以学习到新的东西,加强自己的自我动手能力。
  • 课堂实践上自己有什么经验教训?

    • 一是,一定在课堂上要跟上老师的思路,同时自己一定要理清逻辑,程序设计本身就是一个考验逻辑的学科,如果在课上连原理听的都觉得很晕,编程就更加困难了;二是,在不知道自己到底会不会的时候一定要先进行自我的思考,否则直接看别人的代码或者直接去查资料会让自己以为自己会了,其实什么都不懂。
  • 课堂实践上对老师有什么教学建议?

    • 与上学期的建议相同,我建议老师可以分层次布置作业,按能力分配课堂上所要完成的任务,避免成绩好的人早早做完没事干,学习差的人又久久不能做出来,带最后又发生抄袭代码甚至抄袭截图的情况。二是,我认为可以将博客作业的比重降下来,或者基于实践作业的难度再布置博客作业,因为很多人在两个事情的时间分配存在很大的问题,因此假如没有能力的人肯定会先写博客,但是博客又不知道写什么就开始胡编,所以没有什么意义!!!!!!!!!!!!!!!!!!!!!!!!我希望可以被看到!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

课程收获与不足

自己的收获

  • 新的一学期,自己补充了上学期没有搞明白的一些知识点,也学到了很多新的知识,其实我觉得这一学期发现,分数是小事,最重要的是自己可以学到东西,让自己忙起来,我相信一句话饱足思淫欲,所以要让自己的欲望慢慢降下来,安心下来,做一些值得的事情,和要好的朋友多玩玩,看到吸引自己的知识就安心学一学,让自己的生活变得简单一点,让自己变得不简单一些。

自己需要改进的地方

  • 不足,我觉得就是自己很容易浮躁,情绪很不稳定,因为这学期事情很多,在事情非常多的时候,时间很难按照自己所计划的进行,就所谓计划赶不上变化,但是每当这个时候我自己就很觉得对不起自己,就辜负自己了,所以自己的情绪就会很容易失控。

结队学习是不是真正贯彻了?

  • 这个学期的结队学期相比遇上学期提高不少,大家的关系更加熟悉,然后大家的能力也彼此心知肚明,所以在团队分工上面非常明细,有问题及时讨论,效率也都提高不少,在这学期也学到很多团队工作的核心。

问卷调查

  • 你平均每周投入到本课程有效学习时间有多少?
    • 每周平均每天可能由5个小时,一周差不多保持在25-30个小时左右的时间进行学习。
  • 每周的学习效率有提高吗?你是怎么衡量的?
    • 学习效率是不相同的,因为到了大二,时间的分配需要偏重,但没有全部投入,时间对于这学期的我是非常珍贵的资源,所以我非常珍惜,如何去衡量在这学期的学习效率,通过我随身背书包带电脑的时间就可以知道,我的电脑几乎是不离身的,所以不仅仅是学习,还有工作。
  • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
    • 蓝墨云在这学期没有发挥出他应当发挥出的能力,我们不能够及时知道自己在课堂实践得到的分数,再是假如给予我们扣分也没有表面我们到底出现错误在哪里,所以我觉得存在很大问题!!!!!!!!!!!!!!!!!!!!!!!
  • 你觉得这门课老师应该继续做哪一件事情?
    • 课堂实践,可以提高我们的能力。
  • 你觉得这门课老师应该停止做哪一件事情?
    • 繁琐复杂的博客,并不是取消,但可以让学生了解到写博客是为了自己学习过程的记录而不该成为评比的对象,导致我们这学期在博客总结上大家对于知识点的总结越写越多。
  • 你觉得这门课老师应该开始做什么新的事情?
    • 假如在课堂有空余时间,我建议可以让学生在断网的情况下,进行自我编码,测试水平。

任意发挥

  • 计算机知识的学习还有很多,我希望自己可以安下心来,学习更多知识,让自己以后能够在社会中有一技之长。

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

课程总结

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

实验报告

实验一 实验二 实验三 哈夫曼编码实验

结对编程练习

第一周博客 第二周博客 冲刺博客一 冲刺博客二 冲刺博客三 冲刺博客四 冲刺博客五 冲刺博客六 冲刺博客七
posted @ 2018-12-22 14:29  lalalaouye  阅读(333)  评论(0编辑  收藏  举报