20162325 2016-2017-2《程序设计与数据结构》课程总结
每周作业链接汇总
1.20162325 2017-2018-2 《程序设计与数据结构》第1周学习总结:
教材第十二章:
了解问题解决的一般方法
了解软件工程基本过程
掌握算法分析的方法
理解渐进复杂度,增长函数
2.第二周作业 - 建议写博客(未完成)
开设团队项目博客
下载Java Collection API源代码,下载工具
掌握Java中泛型类,泛型方法的设计
3.20162325 2017-2018-2 《程序设计与数据结构》第3周学习总结:
教材第十三章:
初步理解穷举和分治的算法设计思想
掌握线性和二分查找算法
掌握各种排序算法
4.20162325 金立清 S2 W5 C14 - 20162325金立清 - 博客园 :
教材第十四章:
掌握Java Collections API的基本结构
理解Collection的抽象设计
掌握Collection实现的Java相关技术:继承/多态/泛型/接口
掌握栈的应用
掌握栈的实现(数组,链式)
分析Java Stack API
5.20162325 金立清 S2 W6 C15 - 20162325金立清 - 博客园 :
教材第十五章:
理解queue抽象数据类型
会用queue解决问题
掌握queue的实现(数组,链表)
分析Java Collections API中queue相关的类
队列课下作业 - 20162325金立清 - 博客园
队列课下作业:
1 补充课上没有完成的作业
2 参考15.3节,用自己完成的队列(链队,循环数组队列)实现模拟票务柜台排队功能
3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息
4 把代码推送到代码托管平台
5 把完成过程写一篇博客:重点是单步跟踪过程和遇到的问题及解决过程
6 提交博客链接
YanghuiTriangle - 20162325金立清 - 博客园
队列加分项:
1 用实现循环队列
2 参考PPT用循环队列打印杨辉三角
3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息
4 把代码推送到代码托管平台
5 把完成过程写一篇博客:重点是单步跟踪过程和遇到的问题及解决过程
6 提交博客链接
6.20162325 金立清 S2 W7 C16 - 20162325金立清 - 博客园 :
教材第十六章:
理解树抽象数据类型
会用树解决问题
掌握树的遍历方法
掌握二叉树的实现(数组,链表)
会用二叉树表示决策树
分析Java Collections API中树相关的类
7.20162325 金立清 S2 W8 C17 - 20162325金立清 - 博客园 :
教材第十七章:
理解二㕚查找树
掌握二叉查找树的实现
掌握二叉查找树的应用
理解平衡二㕚树
分析Java Collections API中树相关的类
8.20162325 金立清 S2 W9 C18 - 20162325金立清 - 博客园 :
教材第十八章:
理解堆和优先队列
理解堆和优先队列的关系
掌握堆的实现
掌握堆排序的实现
分析Java Collections API中堆和相关的类
9.20162325 金立清 S2 W10 C19 - 20162325金立清 - 博客园:
教材第十九章:
理解图与有向图、无向图
理解带权图
会应用带权图
理解图的广度优先遍历和深度优先遍历
掌握最小生成树算法
掌握图的实现
快速阅读《构建之法》及问题汇总(不定时更新) - 20162325金立清 - 博客园
10.20162325 金立清 S2 W11 C20 - 20162325金立清 - 博客园 :
教材第十九章:
掌握Hash 函数的实现
理解哈希表中的冲突问题
分析Java Collection API中的Hash 实现
11.图-实验报告 - 20162325金立清 - 博客园 :
用邻接矩阵实现无向图
用十字链表实现无向图
实现PP19.9
12.实验五 团队项目 - 20162325金立清 - 博客园 :
编译、运行、测试
代码修改
代码分析
自认为写的最好的一篇博客是:
20162325 金立清 S2 W9 C18 - 20162325金立清 - 博客园
内容丰富,图文详实,花了不少时间,查阅了不少资料
作业中阅读量最高的一篇博客是:
线性结构-实验报告 - 20162325金立清 - 博客园
理解线性表的概念
掌握用数组和链表实现线性表的方法
熟练应用线性表解决问题
实验报告链接汇总
1、线性结构-实验报告 - 20162325金立清 - 博客园 :
理解线性表的概念
掌握用数组和链表实现线性表的方法
熟练应用线性表解决问题
分析Java Collections API中ArrayList和LinkedList的实现
2、树-实验报告 - 20162325金立清 - 博客园
完成链树LinkedBinaryTree的实现
实现基于(中序,先序)序列构造唯一一棵二㕚树的功能
实现PP16.6决策树
完成PP16.8实现树
完成PP17.1二叉查找树
红黑树分析
3、查找与排序-实验报告 - 20162325金立清 - 博客园
完成教材P302 Searching.Java ,P305 Sorting.java中方法的测试
重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1623.(姓名首字母+四位学号) 包中
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图
参考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中补充查找算法并测试
提交运行结果截图
补充实现课上讲过的排序方法:希尔排序,堆排序,桶排序,二叉树排序等
测试实现的算法(正常,异常,边界)
提交运行结果截图
编写Android程序对各种查找与排序算法进行测试(未完成)
4、图-实验报告 - 20162325金立清 - 博客园
用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
用十字链表实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器
实现PP19.9——创建计算机网络路由系统,输入网络中点到点的线路,以及每条线路使用的费用,系统输出网络中各点之间最便宜的路径,指出不相通的位置
5、实验五 团队项目 - 20162325金立清 - 博客园
git clone 小组项目
编译项目,提交编译成功截图(全屏,要有学号信息)
提交运行过程中的截图(全屏,要有学号信息)
在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号
提交运行截图(全屏,要有学号信息)
在项目中找一个界面,自己复制一份命名为XXXbak,修改代码,替换原来的部分
提交运行截图(全屏,要有学号信息)
数据结构的应用情况及相关代码
排序算法的应用情况及相关代码
查找算法的应用情况及相关代码
团队项目报告链接汇总
2017-2018-1 我爱学Java 第八周 作业 - 我爱学Java - 博客园
团队分工
UML图
工具选择
2017-2018-1 我爱学Java 第六七周 作业 - 我爱学Java - 博客园
完善版需求规格说明书
制定团队编码规范
数据库设计
后端架构设计
TODOList
2017-2018-1 我爱学Java 第四五周 作业 - 我爱学Java - 博客园
描述为撰写 需求规格说明书的 工作流程、组员分工、组员工作量比例;
提供 《需求规格说明书》的码云链接 (markdown文件及pdf文件,tip:pdf可由markdown转pdf工具得到)。
2017-2018-1 我爱学Java 第三周 作业 - 我爱学Java - 博客园
团队展示
2017-2018-1 我爱学Java 第二周 作业 - 我爱学Java - 博客园
团队讨论选取Android上的一个游戏软件
2017-2018-1 我爱学Java 第一周 作业 - 我爱学Java - 博客园
团队学习分工《构建之法》和学习交流情况总结
Scrum 冲刺 第一日 - 我爱学Java - 博客园 :
Scrum 冲刺 第二日 - 我爱学Java - 博客园
Scrum 冲刺 第三日 - 我爱学Java - 博客园
Scrum 冲刺 第四日 - 我爱学Java - 博客园
Scrum 冲刺 第五日 - 我爱学Java - 博客园
Scrum 冲刺 第六日 - 我爱学Java - 博客园
Scrum 冲刺 第七日 - 我爱学Java - 博客园
Scrum 冲刺 总结 - 我爱学Java - 博客园
冲刺(7次 Scrum)
团队在日期区间[11.27,12.10]内,任选7天进行冲刺,冲刺当天晚10点前发布一篇随笔,共7篇。具体的博文规范如下:
1)第 1 篇 Scrum 冲刺博客对整个冲刺阶段起到领航作用,应该主要包含四个部分的内容:
各个成员在 Alpha 阶段认领的任务
明日各个成员的任务安排
整个项目预期的任务量(使用整数表示,与项目预估的总工作小时数一致。比如项目A预估需120小时才能完成,则任务量为120。)
团队成员贡献值的计算规则
2)第 2-7 篇 Scrum 冲刺博客是冲刺阶段的主要产出,主要包含四个部分的内容:
各个成员今日完成的任务(如果完成的任务为开发或测试任务,需给出对应的Github代码签入记录截图;如果完成的任务为调研任务,需给出对应的调研总结博客链接;如果完成的任务为学习技术任务,需给出学习总结博客链接)
各个成员遇到的问题
明日各个成员的任务安排
各个成员今日对项目的贡献量(使用整数表示,如无产出则为0,整个冲刺阶段所有成员的贡献量总和应与项目预期任务量相近)
3)第 7篇 Scrum 冲刺是对冲刺阶段的总结,主要包含两个部分的内容:
各个成员今日完成的任务(要求同上)
项目的发布说明,主要包含:本版本的新功能,软件对运行环境的要求,系统已知的问题和限制,软件的发布方式以及发布地址。
除上述博客内容外,每次 Scrum 冲刺博客都需要提供当天站立式会议照片一张,发布项目燃尽图,并描述项目整体的进展情况。
代码托管链接
statistic.sh运行结果:
- 本学期的预期代码量已达到。
积极主动敲代码做到没有?教材实践上有什么经验教训?
有,教材上的代码不够全面,在做课后PP和平常的实验时还是遇到不少实际困难,还是得借助参考网上博客和源代码。
课下测试
- 第一、三、四、六、七、九、十、十一周课下测试
课堂项目实践
第三周
泛型类-Bag(未完成)
要求:
0. 代码运行在命令行中,路径要体现学号信息,IDEA中,伪代码要体现个人学号信息
- 参见Bag的UML图,用Java继承BagInterface实现泛型类Bag,并对方法进行单元测试(JUnit),测试要涵盖正常、异常情况、边界情况。
1 /**
2 An interface that describes the operations of a bag of objects.
3
4 */
5 public interface BagInterface
算法复杂度-1&2&3
第四周
创建单链表
链表节点删除和插入
第五周
用链表实现栈
用数组实现栈
Android演示Stack
查找课堂测试
排序课堂测试
第六周
Java Queue的测试
用数组实现循环队列
用链表实现队列
第七周
树计算
遍历树1&2
中后序构建树
第九周
堆排序
构建堆
堆的概念
哈夫曼树的实现
构造哈夫曼树
第十周
图表示
十字链表
邻接表
邻接矩阵
第十一周
关键路径
Dijkstra
最小生成树
图的广度&深度优先遍历
第十二周
hash
课堂实践对提高应用能力有帮助吗?
有。
课堂实践上自己有什么经验教训?
有些知识点虽然听懂了,但真正做的时候还是有很多疑惑需要自己去找资料解决问题。
课堂实践上对老师有什么教学建议?
有些要求提的不够明确和具体,导致理解上存在困难以及偏差。
课程收获与不足
收获是发现了不少不那么枯燥但很有用的工具书,打算寒假借阅看看;不足是有些地方没彻底弄懂,就被快速的学习进度赶着往前了,还有些作业不会做或者没来得及做完,假期打算自学,以后还是很有可能用到的。
自己的收获(投入,效率,效果等)
这学期比上学期明显投入了更多的精力,也看到了一些成效,比如博客的质量高了,课下对课堂内容的理解深入了。
自己需要改进的地方
自己遇到问题还是偏向于借助他人的力量,还是得自己多尝试才行,但这也是个耗时且会遭遇屡次失败的过程。
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
没有很好地贯彻,结对伙伴张之睿同学帮助我理解了部分代码,但还有不少问题需要我自行解决。
问卷调查
你平均每周投入到本课程有效学习时间有多少?
有效时间约20小时。
每周的学习效率有提高吗?你是怎么衡量的?
有提高,通过提交博客与作业的进度。
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
有促进,比如每周的课下测试,可方便巩固知识。
你觉得这门课老师应该继续做哪一件事情?
应该继续鼓励结对学习、组队开发项目以及推荐好的教材读物给大家。
你觉得这门课老师应该停止做哪一件事情?
应该停止出门门票和对结对小伙伴的学习总结。
你觉得这门课老师应该开始做什么新的事情?
开始适当减少作业量……上课多演示
你如何评价出门门票和做笔记的要求?
我觉得为了让我们养成做笔记的好习惯这个出发点是好的,但是每个人学习的方式不尽相同,不应强制要求必须手写记录笔记,有时候没东西写,只能刻意照抄ppt 上的内容并不能有利于我们理解上课内容,反而会干扰听讲思考。