20162317 2016-2017-2《程序设计与数据结构》课程总结
总目录
每周作业链接汇总
每周作业目录
- 第一周作业
- 这一周我们主要学了:
- 算法复杂度的定义和计算
- 算法和效率的关系
- 算法的特点
- 时间复杂度和空间复杂度
- 这一周我们主要学了:
- 第二周作业
- 这一周我们主要学了:
- 泛型的使用
- 小组对构建之法的总结
- 这一周我们主要学了:
- 第三周作业
- 这一周我们主要学了:
- 查找的方法
- 不同查找方法的时间复杂度
- 排序的方法
- 不同排序方法的时间复杂度
- 这一周我们主要学了:
- 第四周作业
- 这一周我们主要做的是实验一
- 第五周作业
- 这一周我们主要学了:
- 集合
- 栈
- 数组实现栈
- 链表实现栈
- 这一周我们主要学了:
- 第六周作业
- 这一周我们主要学了:
- 队列
- 数组实现队列
- 链表实现队列
- 这一周我们主要学了:
- 第七周作业
- 这一周我们主要学了:
- 树
- 树的类型
- 数的实现
- 这一周我们主要学了:
- 第九周作业
- 这一周我们主要学了:
- 堆的定义
- 堆的作用
- 堆的应用
- 堆的实现
- 这一周我们主要学了:
- 第十周作业
- 这一周我们主要学了:
- 图的定义
- 图的类型
- 图的实现
- 这一周我们主要学了:
- 第十一作业
- 这一周我们主要学了:
- 哈希算法的类型
- 冲突以及解决冲突
- 装载因子
- 这一周我们主要学了:
实验报告链接汇总
> **实验报告目录** > - [实验一](#report1) > - [实验二](#report2) > - [实验三](#report3) > - [实验四](#report4) > - [实验五](#report5) > > [返回总目录](#mainindex)
- 实验一
- 简要介绍:线性结构
- 实验二
- 简要介绍:树
- 实验三
- 简要介绍:查找和排序
- 实验四
- 简要介绍:图的实现与应用
- 实验五
- 简要介绍:数据结构的综合应用
团队项目报告链接汇总
团队项目报告
- Java演绎法 第一周
- 简要内容:《构建之法》的阅读和读后感汇报
- Java演绎法 第二周
- 简要内容:关于Android游戏开发的讨论
- Java演绎法 第三周
- 简要内容:
- 团队展示
- 团队开发项目的调查
- 简要内容:
- Java演绎法 第四五周
- 简要内容:撰写《需求规格说明书》
- Java演绎法 第六七周
- 简要内容:完善《需求规格说明书》
- Java演绎法 第八周
- 简要内容:UML设计
- Java演绎法 【Alpha版本】- Day1 - 启航
- 简要内容:软件开发冲刺第一天实现的功能以及未来计划
- Java演绎法 【Alpha版本】- Day2 - 漂流
- 简要内容:软件开发冲刺第二天实现的功能以及未来计划
- Java演绎法 【Alpha版本】- Day3 - 逆风
- 简要内容:软件开发冲刺第三天实现的功能以及未来计划
- Java演绎法 【Alpha版本】- Day4 - 加速
- 简要内容:软件开发冲刺第四天实现的功能以及未来的计划
- Java演绎法 【Alpha版本】- Day5 - 破浪
- 简要内容:软件开发冲刺第五天实现的功能以及未来的计划
- Java演绎法 【Alpha版本】- Day6 - 乘风
- 简要内容:软件开发冲刺第六天实现的功能以及未来的计划
- Java演绎法 【Alpha版本】- Day7 - 靠泊
- 简要内容:软件开发冲刺第七天实现的功能以及未来的计划
代码托管链接
> 本学期目标已达成
加点代码,改点代码是理解的最好方式,谈谈你的心得
- 对待一段代码,如果只是读懂,这并不是真正的理解。要试着加点代码,改点代码。加点代码,意味着运用原代码中提供的变量、方法、逻辑来尝试实现新的功能。当且仅当理解代码的人才能够敢加代码。改点代码也是,我们看的原代码也是人敲出来的,这些代码的排布可能不是最优化的。虽然这些代码已经实现了一些功能的实现,解决了需求,但不代表它是最优的。代码中可能存在着垃圾代码,垃圾变量,也可能逻辑不清,绕来绕去,又或者说是零零散散的,不够模块化。根据《编程的智慧》,我们的代码不应该只停留在实现功能上,我们要写出优雅的代码,流畅的代码,模块化的代码,可读的代码。若能够将看的代码优化且不影响原来的作用,这种就是真正地读懂代码。
积极主动敲代码做到没?教材实践上有什么经验教训?
- 自上个学期自知代码水平不高后,这学期自己便有一定的意识去主动敲代码。有时候一个知识点它可以有不同方面的拓展,这就需要自己积极主动地去设例子,用代码去尝试,因此这学期除了教材上的代码,为了学习知识,积极主动敲的代码也不少。个人感觉这样的学习方法进步很大,拓宽了自己在java中的视野,对某种方法或者是知识点的理解程度更深,记的程度也更深了。教材上的实践让我认识到了,教材中教的毕竟是有限。很多时候教材后的实践需要用到对应章节更深层次的用法,这时就需要我们去网上找该知识点的扩展用法或者是事例。同时,教材上的实践很多都是几个章节的知识点的联动,这时就需要我们对之前学的知识有很好的消化,会用联系的观点去看题目。
课堂项目实践或课后作业
- [算法复杂度](http://www.cnblogs.com/VersionP1/p/7585843.html) - 实践要求:用 Java语言实现下列算法并进行单元测试, 请给出算法的时间复杂度。 1. 求一个整数二维数组Arr[N][N]的所有元素之和。 2. 对于输入的任意 3 个整数, 将它们按从小到大的顺序输出。 3. 对于输入的任意 n 个整数, 输出其中的最大和最小元素。- 仿ArrayList
- 实践要求:使用Java代码来实现ArrayList中的几个功能:
- getCountSize():获取列表中存放元素的个数
- isEmpty():判断列表是否为空
- add(Object newEntry):往列表中添加元素
- remove(Object anEntry):移除列表中指定的元素
- clear():将列表清空
- getFrequencyOf(Object anEntry):获取数组中某元素的个数
- contains(Object anEntry):检验某元素是否包含在这列表中
- 实践要求:使用Java代码来实现ArrayList中的几个功能:
- 队列课下作业
- 实践要求:
- 用自己完成的队列(链队,循环数组队列)实现模拟票务柜台排队功能
- 用JDB或IDEA单步跟踪排队情况,画出队列变化图
- 实践要求:
- 使用队列实现杨辉三角
- 实践要求:
- 如题
- 实践要求:
- 对二叉树遍历操作的深入思考
- 实践要求:
- 已知某种遍历序列,试着确定唯一的一棵树
- 实践要求:
- 课堂实践对提高应用能力有帮助吗?
- 我认为非常有,当场的检验是最能考验一个人能力的有效方法。这样可以看出自己平时还有哪些还没完全熟悉,从而可以更好地提高自己的短缺方面。
- 课堂实践上对自己有什么经验教训?
- 平时能够做到的在现场检验不一定能够做到,总有一个方面自己还不是很熟悉,总有一个方面自己还有继续提升的空间。因此现场的检验要重视起来,通过课堂实践来更好地进行自我的提高和升值。
- 课堂实践上对老师有什么教学建议?
- 方法很好,请继续保持
课堂的收获和不足
- 自己的收获(投入,效率,效果等)
- 这学期在编程这方面投入得挺多的。毕竟上学期觉得自己不够努力,而且在朋友圈上被喂了很多鸡汤,于是下了决心要把编程学好。自己投入得感觉够多了,为了编码熬到2点,3点,4点都试过,但感觉这学期还是比较吃力。一方面我逻辑思维不是很好,很多弯都转不过来,恰好这学期学的是数据结构,感觉是学到了,但感觉不够深入身心,不能很好地融入自己的一部分中。
- 自己需要改进的地方
- 对于代码的理解我觉得我现在问题不大,问题就在于如何做到这一步。因此自己的逻辑思维能力还需要提高,同时也需要更多的练习和项目来给自己锻炼。
- 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
- 这个学期结队并不明显,但让我印象深刻的是小组项目。说实话,我虽然是个组长,但组织者当之无愧是刘伟康,他能够很好地将我们集中在一起,发布各自该负责的任务。小组成员各司其职,我也感觉到我们做的小项目前所未有的顺利。做完之后让我们每个人都很有成就感。这种模式很好,希望老师以后可以继续保持以这样的形式来做项目。
问卷调查
- 你平均每周投入到本课程有效学习时间有多少?
- 少的话会有16小时,多的话会有22个小时
- 每周的学习效率有提高吗?你是怎么衡量的?
- 有,看自己能够用多少天的时间看懂该周要学的章节喂衡量标准。
- 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 有,这种倒计时式的学习非常有利于促进我们学习的动力。我的建议是:每周小测不要是中文
- 你觉得这门课老师应该继续做哪一件事情?
- 小组的学习模式
- 你觉得这门课老师应该停止做哪一件事情?
- 英语出题
- 出门门票
- 你觉得这门课老师应该开始做什么新的事情?
- 无太多想法,请继续保持即可。
-你如何评价出门门票和做笔记的要求? - 无必要,只是存粹地为了做笔记而做笔记,形式化。
- 无太多想法,请继续保持即可。