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

  • (按顺序)每周作业链接汇总
    • 预备作业:掌握Markdown格式的排版、注册博客园并加入班级、注册码云并加入班级、下载并注册蓝墨云并加入班级。
    • 第一周作业:认真学习考核方式,理解成绩构成
      认真学习课前准备,掌握学习方法
      作业一定按教学进程中的模板提交
    • 第二周和第三周作业:掌握Java数据类型(8种基本数据类型、对象、包装类等),理解封装概念,学会输入输出、条件、循环迭代等基本语句的使用。
    • 第四周作业:学习类与对象、类之间的关系、修饰符、静态方法等。学会画UML类图。
    • 第五周作业:继承机制(方法重写和方法重载、protected关键字、super方法、接口的多重继承),和抽象类的使用。
    • 第六周作业:多态与后绑定。学习类通过继承和接口实现多态、异常和异常处理。
    • 第七周作业:学习数据结构。学习计算算法效率、时间复杂度(可以用来检验程序设计得是否优质高效);线性集合和非线性集合;栈、链表、列表的实现。
    • 第八周作业:总结整理排序与查找的各类方法并实现。
    • 第九周作业:树的基本概念、树的实现、树的递归和非递归遍历实现。
    • 第十周作业:图的基本概念、基于邻接矩阵、邻接链表的实现、计算出入度、遍历,带权图的最短路径和最小生成树。
  • 自认为写得最好一篇博客是?为什么?
    • 我自认为写的最好的是第九周作业,原因如下
      • :这次是我这学期博客完成的最快的一次,花的时间少。但是,这里的快并不代表着内容粗糙、带有水分。而是代表这周我的学习积极性最高和时间安排的最为合理。
      • :教材学习总结也很丰富形象。对于书中和课上的疑问,自己解决的也很全面。
      • :博客的作用就是为了更好的总结和理解,我认为这周的博客是最符合这个意义的,所以自认为写的最好。
  • 作业中阅读量最高的一篇博客是?谈谈经验
    • 预备作业
    • 我认为这篇博客阅读量多应该在于我发表得比较早,所以吸引了很多读者。所以想要阅读量高,博客一定要交的早,这样后面的同学就可以向着看一下别人写的博客,这样阅读量就上去了。
  • (按顺序)实验报告链接汇总
    • 实验一 Linux基础与Java开发环境:基于命令行和IDEA简易教程进行简单的JAVA程序编辑,编译,运行和调试
    • 实验二 Java基础(数据/表达式、判定/循环语句)::编写计算器
    • 实验三 面向对象程序设计:初步掌握单元测试和TDD,理解并掌握面向对象三要素:封装、继承、多态(自己去学!)
      ,初步掌握UML建模
    • 实验四 Java Socket编程:实现socket通信,学习密码学相关知识,编写远程加密计算器
    • 实验五 Android程序设计:Android Studio的使用
    • 实验六 线性结构之链表:链表相关练习
    • 实验七 查找与排序:查找与排序相关练习
    • 实验八 树:树的相关练习,决策树,后缀表达式
    • 哈夫曼编码测试:哈夫曼编码测试
    • 实验九 图:图的相关练习
  • (按顺序)团队项目报告链接汇总
    • 团队作业第一周
    • 团队作业第二周
    • 《记忆边缘》——团队冲刺阶段--领航篇(First Day)
    • 《记忆边缘》——团队冲刺阶段--Second Day
    • 《记忆边缘》——团队冲刺阶段--Third Day
  • 代码托管链接:
    • 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
    • 部分代码:
    • 20182322 2018-2019-1《程序设计与数据结构》课程总结_第1张图片
    • 达到了
    • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
      • :学会改代码是一个新手必须要掌握的,就比如,你做一个app软件,但是样例代码却看不懂。这时候就需要修改部分代码再运行样例程序,查看哪部分发生了什么变化,通过修改变量等方式了解代码的功能。然后将修改过的代码加上你自己的理解及注释,就会对你的代码阅读理解能力有大幅提升。
      • :加代码,是对代码的优化,是对格式的规范。并不是最短的代码才是最好的。比如if语句的花括号不可以省略,else语句尽量写。条件判断和循环更加详细。
      • :改代码,则是对代码的升华,是对思路的调整。我们的代码并不是无懈可击的,我们需要修改,臻于完美。
    • 积极主动敲代码做到没?教材实践上有什么经验教训?
      • :对于本学期来说,基本做到了积极主动敲代码,布置作业就会去完成。虽然有的时候还是有些松懈,但一个学期总的来说还是做到了积极敲代码。
      • :教材实践刚开始能给我提供很多思路,我可以根据书上的例子来编写自己的程序。同样,尽信书则不如无书,教材中也是存在错误的,有时候往往实践才是检验真理的唯一标准。
  • 课堂项目实践
    • 课堂实践项目
      • Scanner&JDB练习:输入两个数,计算两个数的加、减、乘、除运算结果,并输出。
      • 类的编写实践:编写一个Book类
      • Random和NumberFormat测试:生成-10~10之间的随机数,并格式化输出(0.###)
      • Interface实践:定义一个接口People,并定义另外一个Student类,实现该接口。
        并做简单的测试(StudentTest)
      • 复数/有理数计算器(接口):编写支持复数和有理数(分数)的计算器
      • 文件读写:文件读写
      • 期中测试
      • 时间复杂度分析:时间复杂度分析,用大O记法写出下面各题的时间复杂度
      • ArrayStack类的实现和测试:完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。
      • 后缀表达式求值:从命令行输出一个后缀表达式:
        7 4 -3 * 1 5 + / *
        利用栈计算该表达式的值。
      • 出门条-栈-数组实现栈:写下本次课学到的知识点和内容。
      • 链表插入:写出链表中节点插入的操作代码
      • 链表实践:链表练习,要求实现下列功能:
        (1)通过键盘输入一些整数,建立一个链表;
        (2)实现节点插入、删除、输出操作,3个知识点根据实际情况酌情扣分);
        (3)使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;
      • 链栈补全(LinkedStack补全)size\isEmpty\toString\Push:给出size、isEmpty和toString等方法的定义,以完成LinkedStack 类的实现
      • CircularArrayQueue方法补全:完成CircularArrayQueue类的实现,包括所有的方法
      • 线性表实践(ArrayList、LinkedList):在Android平台上实现添加、删除、修改等操作(数据可以自己定义),并实现倒置
      • 查找及ASL作业(编程+计算):给定关键字序列19 14 23 1 68 20 84 27 55 11 10 79,试分别用顺序查找、折半查找、二叉排序树查找、散列查找(用线性探查法和链地址法)来实现查找。试画出它们的对应存储形式(顺序查找的顺序表,二分查找的判定树,二叉排序树查找的二叉排序树,两种散列查找的散列表),并求出每一种查找的成功平均查找长度。其中,散列函数H(k)=k%11。
      • 二分查找(折半查找)实践:给Searching类添加二分查找算法的递归实现方法。创建驱动程序来演示这个实现机制
      • 快速排序测试(必须有中间过程):{49,38,65,97,76,13,27,49,55,04}
        快速排序第一趟的结果是?
      • 选择排序最坏情况:用一个例子分析,为什么选择排序元素移动次数的最坏情况是3(n-1)次?
      • 树-计算题:计算
      • 中序和先序计算二叉树结构:若已知中序和先序序列,计算二叉树结构
      • 二叉树的建立和层序遍历法实践:(1)给定一个序列AB#CD###E#F##建立一颗树,根据“二叉树的生成”算法构造这颗树。
        (2)使用层序遍历方法完成遍历并测试。
      • 递归前中后序和非递归前中序遍历实践:给定一个序列AB#CD###E#F##建立了一颗树。
        在此基础上,分别实现:
        (1)递归方法实现前序遍历、中序遍历、后序遍历。
        (2)非递归方法实现前序遍历和中序遍历。
      • 堆排序过程测试:写出图中后续排序过程
      • 二叉排序树实践:建立一颗二叉排序树,完成相关要求
      • 哈夫曼编码测试:画出哈夫曼树,写出各个叶子节点的编码
      • 图实践:图的存储表示以及计算结点的度
      • 十字链表练习:画出十一链表结构
      • 图的DFS和BFS测试:写出图的BFS和DFS遍历序列
      • 考试安排冲突问题(画图):根据附件的题目,画出图
      • 最小生成树测试:1.画出Prim算法的最小生成树的生成过程
        2.画出Kruscal算法的最小生成树的生成过程
        3.计算最小权值
      • Dijkstra(迪杰斯特拉)算法测试:使用Dijkstra(迪杰斯特拉)算法计算单源(V1出发)最短路径
      • AOE/AOV练习:1、求关键路径,v1和ve的值并写出具体步骤
        2、画出图一可能的拓扑序列
        3、画出图二所示无向图的邻接矩阵、邻接链表,并列出深度优先和广度优先遍历图所得的顶点序列。
        4、写出图三的邻接矩阵,并用prim算法求最小生成树,画出产生过程
      • 拓扑排序实践测试:编程实践:
        (1)编写代码初始化有向无环图和有向有环图(见附件1和2),使用邻接表初始化图
        (2)使用堆栈实现拓扑排序算法,输出附件1图的拓扑排序序列且没有环,检测附件图2存在环
    • 课堂实践对提高应用能力有帮助吗?
      • 课堂实践对提高应用能力是有帮助的,在规定时间内迅速做出反应完成任务对于动手敲代码的能力要求,对于知识的熟悉程度的要求是很高的。
      • 课堂实践的内容都是一些比较简单的编程时间或者代码检查,对于知识的理解有帮助,对于应用能力的提高也有一定的作用。
    • 课堂实践上自己有什么经验教训?
      • 上课一定要认真听讲,特别是书上没有的知识,不认真听课上实践做起来有一些困难。
      • 还有课堂实践中若发现有不懂的地方,课下应花功夫研究学习弄懂。
    • 课堂实践上对老师有什么教学建议?
      • 建议老师在课后能够公布一个课堂实践的参考答案之类的,感觉课堂实践也就是每次在蓝墨云班课中提交了,提交之后便没有反馈了,我们不知道自己做的对错。也就是在过了很久之后才给了一个成绩,那个时候我们都已经忘记课堂实践的内容了。
  • 课程收获与不足

    • 自己的收获(投入,效率,效果等)

      • 总结一下,本学期的收获分为一下几个方面:
        • 第一,有关学习方法。
          • 我在最开始就说过,我学习这门课程最希望的不是学到这门课中的知识,而是学到一些学习方法。总结一下本学期学到的学习方法:
          • 阅读教材。
          • 向老师,同学求助。
          • 学会在网上查阅资料。
          • 不清楚类和方法的使用时,查阅帮助文档。
          • 以写博客的方式将自己所学记录下来。
          • 有趣的编程模式——结对编程。
        • 第二,写博客提高了写作能力。
          • 本课程的学习成果都以写博客的方式体现出来,最初觉得这写博客特别形式主义,并没有多大用,不过现在回过头看来,写博客可以阶段性得复习,就在现在我回顾我本学期所写的博客的时候,就像小时候有段时间坚持写日记,回过头来读之前的日记的时候就会体会到的那种充实感。同时,自然也提高了我的写作能力。
        • 第三,自然就是本学期所学到的丰富的知识了。这在之前博客中就有体现了,这里就不赘述了。
    • 自己需要改进的地方
      • 遇到问题还是喜欢找理由,不习惯去直面问题。同时也有一些懒惰的心理。还有要在课上应更加认真听讲,提高课堂效率。
    • 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
      • 我觉得不是百分百贯彻,但相对来说还是贯彻了。
      • 我们在日常的学习会互相给对方讲对方没有听懂的知识,也会对对方的一些代码提出建议,对于一些大型的任务也会分工合作,效果还可以。
  • 问卷调查
    • 你平均每周投入到本课程有效学习时间有多少?
      • 我平均每周投入到本课程有效学习时间大约为10-12小时。后期团队项目这块的投入的学习时间会更多。
    • 每周的学习效率有提高吗?你是怎么衡量的?
      • 有提高。是从学习时间和学习效果两方面衡量的。
    • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
      • 是有一定的促进作用的。蓝墨云班课能提醒我需要完成的学习任务,老师发布的资源也能很方便地随时查阅,课堂的签到、随机点人回答问题等都是很好的功能,有提交时间限制的“活动”功能使课堂实践更好地实现。
    • 你觉得这门课老师应该继续做哪一件事情?
      • 老师应继续使用蓝墨云班课教学,继续课堂实践。
    • 你觉得这门课老师应该停止做哪一件事情?
      • 建议老师弱化博客部分,更加强调代码的实际编写。
  • 出你的总结中涉及到的链接的二维码
    • 码云项目链接: 20182322 2018-2019-1《程序设计与数据结构》课程总结_第2张图片

    • 预备作业: 20182322 2018-2019-1《程序设计与数据结构》课程总结_第3张图片

    • 第一周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第4张图片

    • 第二·三周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第5张图片

    • 第四周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第6张图片

    • 第五周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第7张图片

    • 第六周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第8张图片

    • 第七周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第9张图片

    • 第八周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第10张图片

    • 第九周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第11张图片

    • 第十周作业:20182322 2018-2019-1《程序设计与数据结构》课程总结_第12张图片

    • 实验一:20182322 2018-2019-1《程序设计与数据结构》课程总结_第13张图片

    • 实验二:20182322 2018-2019-1《程序设计与数据结构》课程总结_第14张图片

    • 实验三:20182322 2018-2019-1《程序设计与数据结构》课程总结_第15张图片

    • 实验四:20182322 2018-2019-1《程序设计与数据结构》课程总结_第16张图片

    • 实验五:20182322 2018-2019-1《程序设计与数据结构》课程总结_第17张图片

    • 实验六:20182322 2018-2019-1《程序设计与数据结构》课程总结_第18张图片

    • 实验七:20182322 2018-2019-1《程序设计与数据结构》课程总结_第19张图片

    • 实验八:20182322 2018-2019-1《程序设计与数据结构》课程总结_第20张图片

    • 哈夫曼编码测试:20182322 2018-2019-1《程序设计与数据结构》课程总结_第21张图片

    • 实验九:20182322 2018-2019-1《程序设计与数据结构》课程总结_第22张图片

    • 团队Day1:20182322 2018-2019-1《程序设计与数据结构》课程总结_第23张图片

    • 团队Day2:20182322 2018-2019-1《程序设计与数据结构》课程总结_第24张图片

    • 冲刺1:20182322 2018-2019-1《程序设计与数据结构》课程总结_第25张图片

    • 冲刺2:20182322 2018-2019-1《程序设计与数据结构》课程总结_第26张图片

    • 冲刺3:20182322 2018-2019-1《程序设计与数据结构》课程总结_第27张图片

  • 结语
    • 20182322 2018-2019-1《程序设计与数据结构》课程总结_第28张图片

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