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

学号:20182329 2018-2019-1《程序设计与数据结构》课程总结

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

    • 第一周作业:https://www.cnblogs.com/lyz182329/p/11509311.html
    • 简要内容:git代码托管代码,Java的基本编程,jdb代码调试.主要是linex的学习,它的一些基本命令和规则。
    • 第二、三周作业:https://www.cnblogs.com/lyz182329/p/11569786.html
    • 简要内容:条件语句和循环语句的使用,输入语句和输出语局应用,基本数据类型的转换和应用,各种类的使用方法,以及格式化输出的方法,基本的类的编写。
    • 第四周作业:https://www.cnblogs.com/lyz182329/p/11614215.html
    • 简要内容:学会使用单元测试进行测试代码。学会TDD代码测试。学会是使用编写类,用public、void等编写,调用类的方法进行运算。学习类与类的关系,继承,聚合,关联等等,来厘清关系。学习UML图,设定方法、类、数据。学会方法调用和包装方法的使用。学会类与类的继承,还有接口的选择。
    • 第五周作业:https://www.cnblogs.com/lyz182329/p/11632582.html
    • 简要内容:首先学习Java Socket的编程,后面实验45都要用到,来传递数据。学习凯撒密码的使用方法学习Java密码的DES算法和RSA算法还有HD算法编写简单计算器(有理数计算器)。使用试验1里面的方法和实验三代码,编写客户端,客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果学习类于类的抽象方法继承。
    • 第六周作业:https://www.cnblogs.com/lyz182329/p/11668904.html
    • 简要内容:学习处理异常的基本方法捕获异常,学习try-catch语句,还有finally的特点。异常传播现象和异常的层次。throw、throws语句和异常的免检、必检。IO异常,以及文件的输入输出。多态的运用,继承的多态。接口和多态接口的使用,还有接口的层次。建立两个目录A和B,模拟需要秘密通信的A、B双方,由于DH算法需要A和B各自生成DH公钥和私钥,因此在这两个目录下都拷贝编译后文件Key_DH。
    • 第七周作业:https://www.cnblogs.com/lyz182329/p/11749842.html
    • 简要内容:学习Android 应用程序的基本构成。下载Android Studio,用安卓打开项目,更改支持的库。理解活动的程序,明白清单、活动、java文件之间的关系。学习按钮的使用方法,以及按钮连接文件的方法,调节按钮的方法。
      UI组件的,UI工具的使用。Toast消息的编辑、发送。安卓布局的调整,Linear、Reiativel、Frame、Table、Grid监听器的编辑。栈的方法,栈的ADT,栈使用后缀表达式。
      用栈实现链,关于链的节点的插入、删除、排序。队列的ADT,以及队列的数组实现以及链的实现。队列的插入,以及队列防止假溢出的方法。安卓布局的调整,Linear、Reiativel、Frame、Table、Grid这些基本的布局,其实还有很多布局。
    • 第八周作业:https://www.cnblogs.com/lyz182329/p/11794076.html
    • 简要内容:用链表实现队列,以及队列的出入、删除、交换等等操作。用数组实现队列,同样实现上述操作。学习查找的ASL算法,对比出更加高效的算法,同时学会鉴别算法的稳定性。学会最简单的线性查找,以及二分法查找。学会在查找的基础上进行简单排排序,学会并实现选择排序。插入排序是将元素插入已有列表。学习冒泡排序,但是冒泡是一种算法非常复杂的。学习快速排序和归并排序。
    • 第九周作业:https://www.cnblogs.com/lyz182329/p/11876329.html
    • 简要内容:编写一个二叉树。创建NODE的ATD结构,以及Link的ATD结构以适应树的建立。学会使用树的先序遍历、中序遍历、后序遍历,来查找、后者是建立树。学习决策树的的定义和实现方法,可以参照完全二叉树的建立。用链定义一串字符,学会链的构成和查找学习顺序查找、二分法查找、差值查找,被学会在链或者数组的情况下实现。学习斐波那契数列的查找方法,也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。学习二叉树的排序方法,并运用二叉树查找。编写二叉树以收纳一组数据,可以运用中序遍历、前序遍历、后序遍历来进行查找。简单学习二叉树方面的红黑数。学习分块查找、哈希查找在链表上的实现方法。学习堆的定义和结构,并完成堆的实现,学会在堆立面进行查找、添加删除等操作
    • 第二周作业:https://www.cnblogs.com/lyz182329/p/11922407.html
    • 简要内容:实现二叉排序树,并学会编写删除、添加、插入,还有二叉排序树的遍历学习图的有关知识,了解有向图和无向图的区别,学习带权图,学会计算带权图的算法,最佳的算法。学习图的各种遍历,比如深度优先遍历和广度优先遍历。学习生成最小树的方法学会生成图的邻接矩阵的方法,还有计算每个节点的出度入度方法实现
  • 自认为写得最好一篇博客是?为什么?

  • 我认为我第九周学习总结写的最好。首先我在那一周将树的所有知识点学习完毕,从最基本的树的生成到数电遍历到排序、查找、删除、添加等等,完成一些列的知识点学习,而且将前面的各个知识点汇总到一块,将自己1的知识生成一个体系,在整个总结博客中,我王权总结了树的各个方面,建立树的时候,一定要规定好他的结构,说书是一个非线性结构,其元素组织是层次结构,在进行遍历的时候,一定得注意数的左右子树的关系,以及数的构建方法。斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,及n=F(k)-1;

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

    • 第六周学习总结是我阅读量最高的一片博客。首先我这篇博客交的比较早,可能会提供比较有借鉴意义的内容,其次我在这篇博客中提及了那周博客可能会有的作业比较常见的各种错误,以及解决方法。还有我对于Android的一些思考和方法,在学习Android 的过程中Android 让我一点也摸不到头脑,啥是活动、清单、界面,一个都不知道就都一股脑涌过来,后来从Android 书的一开始看,发现原来不是从24章开始,而是跟前面。慢慢的理解Android 各个部件的关系,也慢慢完成实验练习。
  • (按顺序)实验报告链接汇总

    • 实验一 实验名称:https://www.cnblogs.com/lyz182329/p/11524877.html
    • 简要内容:基于命令行和IDE进行简单的Java程序编辑、编译、运行;)
      练习Linux基本命令;
      学习Java程序的JDB调试技能:
      编写简单的Java程序。
    • 实验二 实验名称:https://www.cnblogs.com/lyz182329/p/11568893.html
    • 简要内容:编写简单的计算器,完成加减乘除模运算。
      要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
      编写测试代码,测试验证。首先预习课本第二第五章内容,学习Scanner输入方法,条件语句和循环语句,以及输出语句。
      在计算器编写上使用循环语句控制是否继续进行计算,条件语句判断循环条件,用switch区别运算符。
      编写测试代码时,保留原计算器的计算部分,将输入变量的部分放到测试的Java文件中,输入不同数值和运算符进行测试。
    • 实验三 实验名称:https://www.cnblogs.com/lyz182329/p/11613176.html
    • 简要内容:提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
      以 TDD的方式研究学习StringBuffer。提交你的单元测试用例和测试通过的截图,截图要加上学号水印
      对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
      以TDD的方式开发一个复数类Complex
      使用StarUML对实验二中的代码进行建模,发类图的截图,加上学号水印,类图中只少两个类
      类,继承,接口实现,组合在UML中表达
    • 实验四 实验名称:https://www.cnblogs.com/lyz182329/p/11632686.html
    • 简要内容:首先学习Java Socket的编程,后面实验45都要用到,来传递数据。
      学习凯撒密码的使用方法
      学习Java密码的DES算法和RSA算法还有HD算法
      编写简单计算器(有理数计算器)。
      使用试验1里面的方法和实验三代码,编写客户端,客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。
    • 实验五 实验名称:https://www.cnblogs.com/lyz182329/p/11723202.html
    • 简要内容:学习Android 应用程序的基本构成。
      下载Android Studio,用安卓打开项目,更改支持的库。
      理解活动的程序,明白清单、活动、java文件之间的关系。
      学习按钮的使用方法,以及按钮连接文件的方法,调节按钮的方法。
      UI组件的,UI工具的使用。
      Toast消息的编辑、发送。
      安卓布局的调整,Linear、Reiativel、Frame、Table、Grid
      监听器的编辑。
    • 实验六 实验名称:https://www.cnblogs.com/lyz182329/p/11768773.html
    • 简要内容:学习使用链表,构建链表,记下元素。
      在链的基础上,学会实现节点插入、删除、输出操作;
      学会使用链表的排序方法,比如:冒泡法、选择排序法。
      学会在Android 上构建活动去实现链。
    • 实验七 实验名称:https://www.cnblogs.com/lyz182329/p/11875451.html
    • 简要内容:用链定义一串字符,学会链的构成和查找
      学习顺序查找、二分法查找、差值查找,被学会在链或者数组的情况下实现。
      学习斐波那契数列的查找方法,也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。
      学习二叉树的排序方法,并运用二叉树查找。
      编写二叉树以收纳一组数据,可以运用中序遍历、前序遍历、后序遍历来进行查找。
      简单学习二叉树方面的红黑数。
      学习分块查找、哈希查找在链表上的实现方法。
    • 实验八 实验名称:https://www.cnblogs.com/lyz182329/p/11994388.html
    • 简要内容:实现二叉排序树,并学会编写删除、添加、插入,还有二叉排序树的遍历
      学习图的有关知识,了解有向图和无向图的区别,
      学习带权图,学会计算带权图的算法,最佳的算法。
      学习图的各种遍历,比如深度优先遍历和广度优先遍历。
      学习生成最小树的方法
      学会生成图的邻接矩阵的方法,还有计算每个节点的出度入度方法实现
      学会每个图的计算度的方法,还有不通过遍历进行的。
      完成有向图的单源最短路径求解(迪杰斯特拉算法)
  • (按顺序)团队项目报告链接汇总

    • 第一周:简要内容
    • 第二周:简要内容
  • 代码托管链接: https://gitee.com/besti1823/20182329lyz

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

  • 本学期老师首先给我们设置了20000行代码的标准,但这是两个学期的工作量,所以我设置了10000行代码的目标,一开始我认为这是非常多的,上学期我C的代码量一共才2600多行,这已经在我看来非常多了,所以我在这学期一开始每周只有几百行代码时是非常着急的,后来随着压力逐渐变大我的代码量不断飞升,在开始使用IDEA并且不断熟悉之后,这时候我的代码浪才不断增多,我认为这12000代码十分让我满意。

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

    • 在我看来代码只要能完成任务,不论怎样写都可以,但是代码最终要的提高运算速度,在一开始,在我看来是对C语言知识在Java程序上的套用,首先条件语句和循环语句几乎和C语言一模一样,各种if语句,while语句等等都一样;其次测试代码就像C语言中的主函数和分函数一样,在期间传递对象的值。其次我对Java学习渐渐有了心得,不外乎就是多练和多看,多练可以熟悉掌握不会忘记,多问可以排查知识点漏洞,这样java学习可以更加得心应手。
  • 积极主动敲代码做到没?教材实践上有什么经验教训?

    • 基本做到的。教材上的实践大多数是课本上的代码改变运算目的,改变一些类,或者竭诚的父类,就可以改变类的作用,但是大多数都要自己编写方法,,非常考验自己的思维能力。
  • 课堂项目实践

    • 参考2018-2019-1 《Java 程序设计》课堂实践项目
    • 课堂实践对提高应用能力有帮助吗?
      • 有帮助,这样的实践在课堂上进行,在悠闲地时间里完成一定的代码编辑,或是完成课堂考试,一方面会检测自己的学习知识点是否牢靠,自己只是的运用是否顺手,自己学习的漏洞在哪里,这一切都会在课堂上暴露出来。
    • 课堂实践上自己有什么经验教训?
      • 上课认真听讲真的非常非常非常重要,这个学期有时候还因为感觉听不懂所以听不进去,所以经常用下课问同学的方法来弥补,但是当我每一堂课都认认真真听下来后,发现收获很大。课堂时间就是对自己能力的以此检验,时间的压力会逼迫自己潜力,更加快速的掌握所学的知识。
    • 课堂实践上对老师有什么教学建议?
      • 我认为课堂实践上老师应该让同学更加有压力,通过增加惩罚机制让学生更加努力。
  • 课程收获与不足

    • 自己的收获(投入,效率,效果等)
      -感觉这个学期的Java课让我有一种回到高三最后一学期的感觉,无时不刻都在追赶和学习,而且只学习一门课,但是他和我其他三门课的投入时间是一样的。同样获取的知识也是对等的。并且在学习中形成了一套固定的而且相对而言比较成熟的学习模式,就是先把教材内容看完,然后敲代码做课后题,最后再写博客。这样每一个知识点都进行了从学习到运用,在从运用到纠错,从纠错到发散,的指一些列学习进程,真正意义上的融会贯通。
    • 自己需要改进的地方
      • 对于在java学习后期,因为后期学习的时间有所减少以及课程压力不断加大,所以对于教材上的内容深究的不多,很多东西都只是浮于表面,只是单纯的学会运用,没有去了解为什么,在今后的学习中一定要努力避免这种情况。
    • 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
      • 个人认为结对伙伴在java的学习中有帮助,但是在学习进入后半不凡的时候,结对伙伴的作用就不是很大了,你和结对伙伴在一起学习的时间地点都可能不同,所以不一定结对伙伴的好出就能体现出来,我个人认为不如弄一个结对帮扶宿舍,以宿舍为单位进行学习。
  • 问卷调查

    • 你平均每周投入到本课程有效学习时间有多少?
      • 大约每周二十多个小时。
    • 每周的学习效率有提高吗?你是怎么衡量的?
      • 我是根据代码量来判断自己的学习效率有没有提高,我能感觉到自己学习java的能力在不断提高,每一个知识点都可以进行性的完成。
    • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
      • 有,可以将所学习的教学资源整合起来,方便查看和学习。而且蓝墨云班课有检测题可以进行测试,可以更有效的帮助记忆。
    • 你觉得这门课老师应该继续做哪一件事情?
      • 使用蓝墨云检验学习成果
    • 你觉得这门课老师应该停止做哪一件事情?
      • 你说的都对。
  • 出你的总结中涉及到的链接的二维码

  • 码云项目链接: 二维码

  • 实验 :二维码

posted @ 2019-12-29 22:53  李一卓  阅读(170)  评论(0编辑  收藏  举报