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

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

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

  • 第一周作业:学习命令行使用、vi编辑器、编写简单Java程序、理解面向对象程序设计基本概念

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

  • 第四周作业 :本周我们学习了使用并编写我们自己的类、通过实例化对象使用类里的所有方法、熟悉封装和接口概念、使用可见性修饰符。

  • 第五周作业 :本周解释了继承的概念、继承是从已有类派生新类的一个过程,是支持软件复用思想的一种方法。继承在子类与父类之间建立了"is a"关系,继承是单向的,不允许多重继承

  • 第六周作业 :本周学习多态,多态引用可以在不同时间指向不同类型对象,即运行一致性的方法出现不一致的行为。使用父类声明的引用变量可以指向子类的对象,接口也可以实现多态。学习使用try-catch来实现未捕获的异常的处理与自定义异常

  • 第七周作业 :本周开始学习数据结构,首先是时间复杂度分析,熟悉栈、链表、队列的概念与具体实现

  • 第八周作业 :本周学习查找与排序。查找学习了基础的线性查找、二分查找,同时也学习了哈希线性查找、哈希链表查找、二叉树查找以及它们的具体实现,同时也学习了五种排序算法:选择排序 、冒泡排序、插入排序、快速排序以及归并排序,了解了算法稳定性、ASL(平均查找性能分析)

  • 第九周作业 :本周我们学习了树和树的遍历,以及代码具体实现

  • 第十周作业 :本周我们学习了图的概念与表示,并着重实现了图的各种遍历方法

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

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

    • 作业中阅读量最高的一篇博客是实验三,单纯是交的比较早,大家写自己的博客时会拿交作业同学的博客参考一下

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

  • 实验一 Linux基础与Java开发环境

  • 实验二 Java基础(数据/表达式、判定/循环语句)

    • 编写简单的计算器,完成加减乘除模运算
    • 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出
    • 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html)
  • 实验三 面向对象程序设计

  • 实验四 Java Socket编程

    • Java Socket编程
    • Java和密码学
    • 编写有理数/复数计算器
    • 远程有理数计算器
    • 远程复数计算器
  • 实验五 Android程序设计

    • Android Stuidio的安装测试
    • Activity测试
    • UI测试
    • 布局测试
    • 事件处理测试
  • 实验六 线性结构之链表

    • 建立链表,按要求补全链表功能
  • 实验七 查找与排序

    • 定义一个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中补充查找算法并测试,提交运行结果截图
    • 补充实现课上讲过的排序方法
  • 实验八

    • 参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
    • 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
    • 自己设计并实现一颗决策树;提交测试代码运行截图,要全屏,包含自己的学号信息
    • 输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果
  • 实验九

    • 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)
    • 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)
    • 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)
    • 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)
    • 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)

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

代码:

  • 码云托管链接

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

    • 本学期的代码目标是达到了,还比预期多一些。一方面我按要求敲了书上很多源代码,另一方面数据结构的实践和实验中有些代码相当复杂,实现起来代码量特别大,所以代码速度增长是较快的
  • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得

    • 我十分认同这个观点,有时我们使用书上和网络上的代码时,只是好像大致知道代码思路与结构,实际上并不确定我们是否真的理解掌握。如果我们稍微改变一点代码,程序还可以正常按照我们预设的思路运行,说明程序可以为我们所用,我们对程序的理解是到位的;如果程序无法正常运行,说明我们的理解存在问题,这时我们需要进一步阅读相应代码、进行单步调试,使代码正常运行,这时我们对代码的理解才比较深入
  • 积极主动敲代码做到没?教材实践上有什么经验教训?

    • 我在Java前半个学期学习主动性还不错,主动敲了一些代码。学期中的时候事情比较多,数据结构部分例如树的实现又很复杂,实践和实验任务也很重,就没心情和时间积极敲代码了。教材实践方面,经验教训是要注意审题,我有一次题目看错了导致代码功能不对;另一方面书上的代码也存在着一些问题,一些类根本没有实现。尽信书不如无书,我们不能迷信书本,出现问题要及时上网搜索解决。同时还要多动手敲代码尝试,否则无法牢固理解书中内容

课堂项目实践

课程收获与不足

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

问卷调查

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