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

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

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

  • 第一周作业:学习命令行使用、vi编辑器、编写简单Java程序、理解面向对象程序设计基本概念
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第1张图片

  • 第二周、第三周作业 :在第二章中,学习了字符串的使用,学会了定义、赋值、使用各种数据类型的变量,掌握了如何使用Scanner类提供的不同方法输入数据。第三章中,我学到了由类创建对象(即实例化对象),并用点运算符调用包括String,Random,Math,Numberformat,Decimalformat类的丰富方法来满足来满足程序设计的需求
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第2张图片

  • 第四周作业 :本周我们学习了使用并编写我们自己的类、通过实例化对象使用类里的所有方法、熟悉封装和接口概念、使用可见性修饰符。
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第3张图片

  • 第五周作业 :本周解释了继承的概念、继承是从已有类派生新类的一个过程,是支持软件复用思想的一种方法。继承在子类与父类之间建立了"is a"关系,继承是单向的,不允许多重继承
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第4张图片

  • 第六周作业 :本周学习多态,多态引用可以在不同时间指向不同类型对象,即运行一致性的方法出现不一致的行为。使用父类声明的引用变量可以指向子类的对象,接口也可以实现多态。学习使用try-catch来实现未捕获的异常的处理与自定义异常
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第5张图片

  • 第七周作业 :本周开始学习数据结构,首先是时间复杂度分析,熟悉栈、链表、队列的概念与具体实现
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第6张图片

  • 第八周作业 :本周学习查找与排序。查找学习了基础的线性查找、二分查找,同时也学习了哈希线性查找、哈希链表查找、二叉树查找以及它们的具体实现,同时也学习了五种排序算法:选择排序 、冒泡排序、插入排序、快速排序以及归并排序,了解了算法稳定性、ASL(平均查找性能分析)
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第7张图片

  • 第九周作业 :本周我们学习了树和树的遍历,以及代码具体实现
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第8张图片

  • 第十周作业 :本周我们学习了图的概念与表示,并着重实现了图的各种遍历方法
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第9张图片

  • 自认为写得最好一篇博客是?为什么?
    • 第十周作业 总体写的比较认真细致,图文并茂。我尽量完整罗列和梳理知识点,将不熟悉的内容从头到尾整理了一下,较为完整的呈现了图这一章的概念,将几个图的算法完整实现了,并附上了实现的概念、思路、代码
  • 作业中阅读量最高的一篇博客是?谈谈经验
    • 作业中阅读量最高的一篇博客是实验三,单纯是交的比较早,大家写自己的博客时会拿交作业同学的博客参考一下

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

  • 实验一 Linux基础与Java开发环境
    • 基于命令行和IDE(Intellj IDEA 简易教程](http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑、编译、运行和调试。(本次实验主要使用命令行的方式)
    • 练习Linux基本命令
    • 学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html
    • 编写简单的Java程序
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第10张图片
  • 实验二 Java基础(数据/表达式、判定/循环语句)
    • 编写简单的计算器,完成加减乘除模运算
    • 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出
    • 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html)
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第11张图片
  • 实验三 面向对象程序设计
    • 下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)
    • 初步掌握单元测试和TDD
    • 理解并掌握面向对象三要素:封装、继承、多态(自己去学!)
    • 初步掌握UML建模
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第12张图片
  • 实验四 Java Socket编程
    • Java Socket编程
    • Java和密码学
    • 编写有理数/复数计算器
    • 远程有理数计算器
    • 远程复数计算器
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第13张图片
  • 实验五 Android程序设计
    • Android Stuidio的安装测试
    • Activity测试
    • UI测试
    • 布局测试
    • 事件处理测试
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第14张图片
  • 实验六 线性结构之链表
    • 建立链表,按要求补全链表功能
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第15张图片
  • 实验七 查找与排序
    • 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
      要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
      提交运行结果图。
    • 重构你的代码,把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
      把测试代码放test包中,重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
    • 参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试,提交运行结果截图
    • 补充实现课上讲过的排序方法
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第16张图片
  • 实验八 树
    • 参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
    • 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
    • 自己设计并实现一颗决策树;提交测试代码运行截图,要全屏,包含自己的学号信息
    • 输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第17张图片
  • 实验九
    • 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)
    • 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)
    • 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)
    • 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)
    • 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第18张图片

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

第一周:简要内容
第二周:简要内容
……

代码:

  • 码云托管链接
  • 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第19张图片
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第20张图片

    • 本学期的代码目标是达到了,还比预期多一些。一方面我按要求敲了书上很多源代码,另一方面数据结构的实践和实验中有些代码相当复杂,实现起来代码量特别大,所以代码速度增长是较快的
  • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
    • 我十分认同这个观点,有时我们使用书上和网络上的代码时,只是好像大致知道代码思路与结构,实际上并不确定我们是否真的理解掌握。如果我们稍微改变一点代码,程序还可以正常按照我们预设的思路运行,说明程序可以为我们所用,我们对程序的理解是到位的;如果程序无法正常运行,说明我们的理解存在问题,这时我们需要进一步阅读相应代码、进行单步调试,使代码正常运行,这时我们对代码的理解才比较深入
  • 积极主动敲代码做到没?教材实践上有什么经验教训?
    • 我在Java前半个学期学习主动性还不错,主动敲了一些代码。学期中的时候事情比较多,数据结构部分例如树的实现又很复杂,实践和实验任务也很重,就没心情和时间积极敲代码了。教材实践方面,经验教训是要注意审题,我有一次题目看错了导致代码功能不对;另一方面书上的代码也存在着一些问题,一些类根本没有实现。尽信书不如无书,我们不能迷信书本,出现问题要及时上网搜索解决。同时还要多动手敲代码尝试,否则无法牢固理解书中内容

课堂项目实践

  • Scanner&JDB练习:输入两个数,计算两个数的加、减、乘、除运算结果,并输出。
  • 类的编写实践:编写一个Book类,其实例数据分别表示书名、作者、出版社以及版权日期。
  • Random和NumberFormat测试:生成-10~10之间的随机数,并格式化输出(0.###)
  • Interface实践:定义一个接口People,并定义另外一个Student类,实现该接口。
    • (https://gitee.com/besti1823/dky-zzz-java/blob/master/src/Student.java)
      20182304 2018-2019-1《程序设计与数据结构》课程总结_第21张图片
  • 复数有理数接口
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第22张图片

  • 文件读写:学习字节流和字符流,实现创建文件,采用四种方法写入和读取文件
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第23张图片

  • 时间复杂度分析:计算时间复杂度,用大O记法进行表示。
  • ArrayStack类的实现和测试:完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第24张图片

  • 后缀表达式求值:从命令行输出一个后缀表达式:7 4 -3 * 1 5 + / *利用栈计算该表达式的值。
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第25张图片

  • [链表插入:写出链表中节点插入的伪代码。]
  • 链表实践:通过键盘输入一些整数,建立一个链表;实现节点插入、删除、输出操作;使用冒泡排序法或者选择排序法根据数值大小对链表进行排序。
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第26张图片

  • 链栈补全(LinkedStack补全)size\isEmpty\toString\Push:实现size、isEmpty和toString等方法并进行测试。
  • CircularArrayQueue方法补全:PP15.2完成CircularArrayQueue类的实现,包括所有的方法。要求通过入队和出队操作,出现队空和队满的情况。
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第27张图片

  • 线性表实践(ArrayList、LinkedList):学习ArrayList和LinkedList类,并在Android平台上实现添加、删除、修改等操作(数据可以自己定义),并实现倒置。
  • 查找及ASL作业(编程+计算):给定关键字序列19 14 23 1 68 20 84 27 55 11 10 79,试分别用顺序查找、折半查找、二叉排序树查找、散列查找(用线性探查法和链地址法)来实现查找。试画出它们的对应存储形式(顺序查找的顺序表,二分查找的判定树,二叉排序树查找的二叉排序树,两种散列查找的散列表),并求出每一种查找的成功平均查找长度。其中,散列函数H(k)=k%11。
  • 二分查找(折半查找)实践
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第28张图片

  • 树-计算题:
    • 1.有1023个结点的完全二叉树,其高度是多少?叶结点数是多少?
    • 2.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?
    • 3.已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,…,nm个度为m的结点,问该树中有多少个叶结点?
  • 中序和先序计算二叉树结构:若已知中序和先序序列,计算二叉树结构
  • 二叉树的建立和层序遍历法实践:
    -(1)给定一个序列AB#CD###E#F##建立一颗树,根据“二叉树的生成”算法构造这颗树。
    -(2)使用层序遍历方法完成遍历并测试。
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第29张图片

  • 递归前中后序和非递归前中序遍历实践
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第30张图片

  • 堆排序过程测试:写出图中后续排序过程
  • 哈夫曼编码实践
    20182304 2018-2019-1《程序设计与数据结构》课程总结_第31张图片

  • 课堂实践对提高应用能力有帮助吗?
    • 有帮助。课堂实践锻炼了我们限时解决问题的能力,强制我们在短时间内快速理解并应用我们新学的知识,有力检验我们在课上是否听懂。同时也提高了我们的听课效率,使我们摸清听课重点。如果我们实践做错了,也能及时向老师同学询问,改正错误。
  • 课堂实践上自己有什么经验教训?
    • 有一次我忘记了提交代码链接,导致成绩无效。还有些我本以为课上听懂了,实践的时候却仍然没有思路,说明我的掌握还是很不牢固的。
  • 课堂实践上对老师有什么教学建议?
    • 老师应该尽力让我们大家都明白再进行实践,要合理考虑实践时间和实践题目难度

课程收获与不足

  • 自己的收获(投入,效率,效果等)
    • 收获:在上这门课之前,自己的自学能力确实比较差劲,经过一学期的锻炼,我遇到不懂的问题可以上网找博客自学。现在对面向对象编程的理论和数据结构都有了一定的理解
    • 不足:对一些数据结构的具体实现理解的不是很好,编程解决问题的能力总体来说仍不是很强
    • 我投入的时间还算可以,效率却相对很低,新学一些复杂的内容时理解起来很吃力。不过一学期下来,我还是学会了一些新的学习方法与知识
  • 自己需要改进的地方
    • 一方面是太过懒惰了,做事能拖就拖。另一方面是学习方法有问题,学东西是不能聚精会神,容易分神,导致效率很低
  • 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
    • 贯彻了一部分,我们结对学习主要体现在相互提醒完成作业与错题讲解上,合作探究较少。老师应该考虑到大家学习能力的差距,避免两极分化

      问卷调查

  • 你平均每周投入到本课程有效学习时间有多少?
    • 大约一周三十小时左右,有效时间可能二十小时多一点(学习容易走神)
  • 每周的学习效率有提高吗?你是怎么衡量的?
    • 比较一般,对学习内容熟悉后有提高,但是学到了全新的东西后,理解起来吃力,学习效率就又不行了。我按理解知识点与完成好作业的速度来衡量学习效率
  • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
    • 有促进,学习、提交作业比较方便。建议老师放的资源尽量少而精,目前很多资源要么过时了要么我们根本用不上
  • 你觉得这门课老师应该继续做哪一件事情?
    • 使用蓝墨云班课,进行随堂实践
  • 你觉得这门课老师应该停止做哪一件事情?
    • 占用宝贵的课堂时间考一大堆纯英文绕来绕去的选择题,这对概念理解帮助不大,也无法有效测试同学真正的水平

你可能感兴趣的:(20182304 2018-2019-1《程序设计与数据结构》课程总结)