20162301 2016-2017-2《程序设计与数据结构》课程总结
每周作业链接汇总
- 第一周作业: 算法分析、算法效率、增长函数和大O符号、比较增长函数。
- 第二周作业:泛型、Java Collections API源码分析。
- 第三周作业:探讨线性及二分查找算法、探讨选择、插入、冒泡、快速及归并排序算法、讨论算法的复杂度分析技术。
- 第五周作业:栈集合、栈的ADT、使用数组实现栈、将引用作为链。
- 第六周作业:队列ADT、使用队列、实现队列。
- 第七周作业:树、树的分类、树的遍历、树的实现策略、树的特点、二叉树。
- 第八周作业:二叉查找树、二叉查找树的实现、平衡二叉查找树
- 第九周作业:堆、堆的实现、堆排列、优先队列、哈夫曼树、CRC
- 第十周作业:无向图、有向图、常用的图算法图的实现策略
- 第十一周作业:哈希方法、哈希函数、解决冲突、从哈希表中删除元素
自认为写得最好一篇博客是?为什么?
- 自认为最好的一篇是第十一周作业,因为这篇博客写的比较详细,将书本上的知识和课堂所学的知识都整理了下来,其中还包括了两篇实践博客。内容比较充实。
作业中阅读量最高的一篇博客是?谈谈经验
- 阅读量最高的第一周作业。可能因为是第一周博客,所以同学之间互相学习的情况更多一点。然而在我看来这篇博客写的并不好。
实验报告链接汇总
实验一 线性结构:用Junit对ArrayList和LinkedList的方法进行测试,用Java的ArrayList和LinkedList实现有序线性表的合并,用数组实现线性表List,用链表实现线性表List,对Java的ArrayList,LinkedList进行源码分析。
实验二 树:完成链树LinkedBinaryTree的实现,基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二?树的功能,决策树,表达式树,二叉查找树,对Java中的红黑树(TreeMap,HashMap)进行源码分析。
实验三 查找与排序:完成 Searching.Java ,P305 Sorting.java中方法的测试,重构代码,在Searching中补充查找算法并测试,补充希尔排序,堆排序,桶排序,二叉树排序。
实验四 图的实现与应用:用邻接矩阵实现无向图,用十字链表实现无向图,创建计算机网络路由系统。
实验五 数据结构综合应用:分析系统架构,编译、运行、测试系统,修改系统,分析数据结构、排序、查找算法的应用。
团队项目报告链接汇总
第一周:《构建之法》学习笔记及团队成员介绍
第二周:关于游戏软件的问题
第三周:团队展示,团队初步合作,团队选题。
第四、五周:需求说明书
第六、七周:修改需求规格说明书,后端架构,代码规范
第八周:类图、用例图、状态图、活动图
团队冲刺博客7篇:记录团队冲刺阶段的工作内容。
代码托管链接
给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
- 这一年来的个人总代码量为21219行,每学期10000行的代码量目标已经达到。
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
- 《编程的智慧中》让我印象最深刻的话是:“有些人喜欢炫耀自己写了多少多少万行的代码,仿佛代码的数量是衡量编程水平的标准。然而,如果你总是匆匆写出代码,却从来不回头去推敲,修改和提炼,其实是不可能提高编程水平的。你会制造出越来越多平庸甚至糟糕的代码。”作为学生,在不断改代码的过程,能更多的加强巩固已有的知识,也在不断发掘掌握新技能。
积极主动敲代码做到没?教材实践上有什么经验教训?
- 在上学期的课程总结中,我提到了自己比较遗憾学习中没有做到积极主动敲代码。这一学期,在自己比较主动的逼迫下,我觉得这个问题有所改善。第一学期觉得敲代码是一件比较痛苦的事情,这学期慢慢感受到了其中的乐趣,特别是自己解决了一个问题以后,那种成就感很强烈。我们所用的教材上,每一章节的代码比较详细,例如很多排序算法都是已经有的,我们只要会用就可以了。虽然对我们学习的时候觉得很方便很轻松,但我觉得少了一部分思考的过程。到了后面图的那一部分,代码不再是完整的给出来,而是给了一部分思路让自己写,这个时候感觉很痛苦。所以教训就是,书上的代码不能一味的抄过来,而是要尝试自己还原,这样效果更好,能学习到的东西也更多。
课堂项目实践
课堂实践对提高应用能力有帮助吗?
- 可以说是有很大的帮助,促使我不断的复习与学习新的知识。
课堂实践上自己有什么经验教训?
- 基础知识一定要牢固,要积极主动敲代码。
课堂实践上对老师有什么教学建议?
- 学期的后部分课堂实践内容变得太少了,应该保持两周一次或者一周一次的频率。
课程收获与不足
自己的收获(投入,效率,效果等
- 学习效率提高了,上学期博客要用一天甚至更多的时间,这学期基本在周一到周五学习,然后半天不到完成博客。
自己需要改进的地方
- 多思考多动手,虽然这学期动手实践的次数多很多很多,但是比起先上网找思路,要更多的试着自己想。
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
- 这学期的经历好像都用在了课堂实践实验,还有后半段的团队项目上了,老实说结对学习并不贯彻。我的结对伙伴也是我团队项目中的一员,在团队项目中学习到了很多。
问卷调查
你平均每周投入到本课程有效学习时间有多少?
- 平时正常的话是12小时,有的时候实验用的时间比较长了也有30个小时的时候(其中的有效时间不好确定,基本都在思考或者学习,我觉得都算有效),到学期的后面带领大家做团队项目的时候时间也是每周20小时左右。
每周的学习效率有提高吗?你是怎么衡量的?
- 有提高。我是通过我博客完成的时间来衡量的。因为我的学习博客都是我学习完本周的内容以后再开始写,所以博客完成的越早,就说明我这周学习的越快,效率越高。
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 有促进。相较于传统的学习方式,结合蓝墨云班课的使用能够大幅度提高我们的实践能力,而不是仅仅局限于理论知识的学习。课堂实践,实验,单元测试等等都可以在上面提交很方便。但是有一个我认为很重要的建议是,每一次课堂学了一个知识以后马上测试,因为对知识的掌握程度不够,很多时候是不清楚自己写的对不对的。而我们提交完以后,也不知道正确答案是什么,自己答的对不对。
你觉得这门课老师应该继续做哪一件事情?
- 坚持课堂实践。
你觉得这门课老师应该停止做哪一件事情?你如何评价出门门票和做笔记的要求?
- 出门门票!!这个东西的初衷是好的,是希望我们在课堂学习中更加专注,但是因为写的多就算听讲的认真这一点我觉得是不合理的。这样会导致同学上课的时候不在乎老师讲的内容,只是埋头抄PPT了,并没有达到目的。而且出门门票应该只是一种监督,但像给写的多的来加分,我觉得加分和一个实验或者实践的1分比起来含金量完全不对等。
你觉得这门课老师应该开始做什么新的事情?
- 对比上一条,我觉得如果想让同学集中于上课,而不会出现只抄笔记的现象的话,可以让同学记笔记在自己的笔记本上,然后隔周或者一个月检查一次。
二维码
写在最后
没想到本以为特别难熬的一年就这么过去了,想着以后可能不会有再有每周博客的硬性规定,老师也可能不会再用蓝墨云班课来教学了,想想这些占据了我学习生活中很大部分的东西不在是我生活中的一部分,心里竟有一丝不舍。作为第一门接触的编程语言,这一门科目不仅仅教给了我单纯的Java知识,还有很多很多包括像组织团队项目等书本以外的内容,让我发现原来学习生活不是局限于刷题中。虽然有的时候确实很痛苦,比如课上突如其来的实践,单周躲不过的实验,每周早上睁眼看到新的学习内容,还有最后不知怎么组织的团队项目等等等等。但是结束了才发现,原来走出“舒适区”真的能得到更多的收获。希望自己能将这样的学习方式运用到以后的生活中。This is not the end, it is just a new beginning~
感恩老师不辞辛劳夜以继日地检查我们的每一项作业每一次博客,感恩每一位为我提供帮助互相鼓励的“战友”。