20162317 2016-2017-2 《程序设计与数据结构》课程总结
20162317 2016-2017-2 《程序设计与数据结构》课程总结
每周作业链接汇总
预备作业01:学会使用Markdown格式来写博客,并回答四个问题:你对专业的期望是什么?你上过的课程中老师提供最大的帮助是什么?你期望的师生关系是什么样的?我们课程要你两学期实践10000行代码,你觉得这个负担大么?
预备作业02:回答五个问题
- 你有什么技能比大多人(超过90%以上)更好?
- 针对这个技能的获取你有什么成功的经验?
- 与老师博客中的学习经验有什么共通之处?
- 你对《程序设计与数据结构》的学习有什么具体目标?
- 如何通过“做中学”实现你的目标
预备作业03:学会安装虚拟机并在实验楼中学习linux的基础。
第一周主要向我们介绍了Java的语法和架构,并让我们学习编写简单的Java程序。
第二周主要讲的是数据和表达式以及转义字符、变量,赋值等等知识点。
第三周主要说到了类和对象的问题,其中也仔细介绍了String类、Random类、Math类、NumberFormat类等类。此外也说到了与类相关的包,以及当你要使用类时用的import和其他细节。
这周主要学习了条件语句以及循环语句的使用;数组的简单声明和使用
第五周学习了类与对象,此外还学习了面向对象的学习方法。
第六周学习了子类与父类之间涉及的方法,包括继承、super、重写等。还介绍了抽象类和抽象函数以及向上转型和向下转型方法和概念。
第七周学习了多态和引用多态的方法以及接口。
第八周学习了异常的定义、特点、分类、以及与错误的区别;此外,我们还学习了如何去自定义一个异常;还有对异常的处理,包括使用try...catch语句,抛出异常。也认识了IO。
第九周学习了数据库的类型、基本操作。
自认为写得最好的一篇博客/作业中阅读量最多的一篇博客是:
20162317 2016-2017-2 《程序设计与数据结构》第5周学习总结
理由:这篇博客源于课本而又高于课本,当我发现一些无法理解的额语句的时候(像是在博客中的return 以及 private 语句)我不仅仅满足于将这个语句的含义弄明白,还要经过我自己的额外实验来验证,我让我对这个知识点熟稔于心,我让我对这个知识点通透理解。也对我以后的学习很有启示性——仅仅停留在舒适区还不够,还要上升到学习区层面,从而巩固自身的基础知识,锻炼提升自身严谨的思想。
经验:这周的博客之所以能够得到青睐还是因为态度的问题,你学习态度端正,踏踏实实,你的作业质量就能有保证,老师也会对你持着称赞的态度。因此,最重要的是要注意平时的学习态度,因为态度决定一切。
师生交互最多的一篇博客是:
20162317 20162317 《程序设计与数据结构》第4周学习总结
收获:老师作为我们程序的需求方提出虽然提出了很多挑剔的需求以及问题,但这是一个程序员不能避免的事情。娄老师说过:“程序员最后死在了需求上”,既然知道作为一名程序员要面对不断更新,难度不断提高的需求,那为何不在出去工作之前就培养面对这种需求不断更新的情况呢?现在的苦都是为了以后的轻松而作铺垫的。
实验链接汇总
IntellIJ IDEA的简易教程以及对第四周先前的作业进行检查与验收。
- 初步掌握单元测试和TDD
- 理解并掌握面向对象三要素:封装、继承、多态
- 初步掌握UML建模
- 熟悉S.O.L.I.D原则
- 敏捷开发与XP基础
- 实验二的回顾:Junit测试类
- 重构
- Java中的密码学算法
Android Studio
- 客户端与服务器
- 加密
- 代码托管链接:
以上的截图仅仅是个人项目的代码量,加上合作项目的代码量。这学期的代码量应该逼近两个学期的代码目标了。但是正如编程的智慧那样,代码量并不与我的代码水平成正比,我众多的代码中,充斥了许多无用代码,垃圾代码。编程要是仅仅满足了要求,那编程只不过是编程。但是若编程不仅满足了需求,代码也变得干净明了,那编程就是一门艺术。在你去升华你的代码的时候,首先要做的就是理解你用的代码,不然那些代码只会永远是别人的代码,永远不能被你灵活所用。因此,加点代码,改点代码就成为了理解代码的最好的方式。若你能理解代码并灵活应用,所谓的加点代码以及改点代码仅仅不过是换了个瓶子而已,你仍能看透这代码的本质,抓住要点。同时也只有抓住了要点之后,你才能升华代码,将代码变成艺术品。反之,若不能抓住代码的品质,代码换另外一种表达形势你也不懂代码传达的意思。
对于主动敲代码,我表示很惭愧。的确,刚刚接触编程的时候对编程抱有浓厚的兴趣,但随着难度的提升以及工作任务的增多,自己对编程的态度也在发生着微妙的变化,从乐于编程到迫于编程,我的积极性在不断的下降,编程能力也止步不前,甚至有些倒退。此外,因为外界的各种诱惑,周六日我大多时间都在玩耍,没有做到合理安排自己的休息时间。导致主动代码没有多敲,任务代码也没有敲好的尴尬局面。班主任曾经说过:“仅仅课堂那么点时间不够。”但我觉得“仅仅靠任务那点代码量不够”
课堂项目实践
基本工具
- 程序开发与信息安全工具箱
- 使用博客园进行学习
- 使用开源中国托管代码
- Java程序设计的DOS命令基础
- 别出心裁的Linux命令学习法
- 使用码云和博客园学习简易教程
- Intellj IDEA 简易教程
- 使用JDB调试Java程序
- 进度条和学习过程可视化
基础内容
- 实验一 Java开发环境的熟悉
- 实验二 Java面向对象程序设计
- 实验三 敏捷开发与XP实践
实验为我们学习的知识进行系统性的审核
Hello World 和 模块分解
- Hello World 是编程语言的基础
- 模块要将测试类分解出来
使我们懂得了编码的流程
数组的使用
- 遍历数组的方法
- 数组关于变量的妙用
命令行参数
- 学会利用主函数带有的args数组
递归
- 递归的定义
- 递归的用途
分支语句
- 分支语句的类型
- 分支语句的拓展
String类的使用
- 学会使用Sort
数据结构应用
- 伪代码、产品代码、测试代码
- 栈的应用
- 前缀、中缀、后缀表达式
收获:以上的课堂实践项目对我们这个学期的学习意义很大,既是帮助,也是挑战。工具大大降低我们敲代码的难度,也减少了编码的耗时,此外,还为我们的代码提供了交流的平台,提高了我们代码的水平。同时,各种各样的实验也为我们的代码也被提出更新更高的要求。这样的实践很好很有用,希望老师能在以后的教学中继续使用这种模式。
课程收获与不足
收获
收获最大的莫过于结队编程的好处。当我与我的搭档马军结队编程时,我们对问题会有更多的见解,除了我的想法以及他的想法外,通过取其长,补自短,我们还能想到两个人都想不到的方法。这也为我们对问题有区别于其他人更为独特的见解。另外,结队编程可以提高编程的速度,各自负责相应的部分后,我们每个人编的代码也要少了点,从而减轻了代码负担,也提高了效率。最重要的是:当两个人把代码给编出来时,内心深处涌上的个人以及自豪以及集体成就感更是无可比拟的,这是一个人的时候体验不到的。
不足与改进
自己也有很多不足,对学习还是不够主动积极,很多都抱着应付了事的态度,使我错过了很多提升自我的机会。在今后的专业课学习中,学了就要对这门课负责,也要对自己负责。否则,学到的知识只会肤浅于表面,而不能精通
对于结队编程
我虽然有感于结队编程,但这些感想更多的还是在实验五中体验出来的。在实验五前的结队项目,都习惯于一人战斗,导致代码质量不高。但当时我学习积极性不高,就这样了事。当遇到实验五的时候,我被迫于结队编程,但在此一试,不仅我觉得结队编程是个好东西,也让我在我的结队伙伴身上看到他的潜能,也让我后悔先前为何没有选择结队。在最后一次的试验中,我为结队伙伴展示了我的想法,也为我们的代码基本格局奠定了基础。老师一开始出的结队项目知识让我们觉得在代码量上需要两个人来完成,但结队性对我们来说还不够强,很难让我们去有效的结队。建议以后由浅入深,先培养大家的结队意识,再加大结队项目的难度。
给开学初的你和学弟学妹们的学习建议
如果重新学习这门课,怎么做才可以学的更好?
这学期已经要结束,这门课留下的悔恨,我能做的就是给新生好的建议,以免重蹈覆辙。这门课靠的不仅仅是你在课堂上学到的知识以及课下对知识的巩固。要想要学好这门课,要有积极主动的学习意识,多去找些新的代码敲,多去找一些有挑战性的题,做课本的习题固然能巩固你的知识,但不会有太大的提升。想要有大一点的提升,那就要去找些课本外的题目了做。在这个过程中必然会遇到不会的知识点,这就体现这门课的精髓了——“做中学”。网络的资源费非常丰富,当遇到不会问题,求助于网上总会有令你满意的答案。但不能仅仅查答案,还要去读懂别人的代码,拓展深入了解别人说的知识点。这门课你不花时间是不会有突出的成就的。
下学期有什么可行的计划提升学习效果?
我的本职是一名学生,学生的天职就是学习。因此下学期开始,真正做到合理安排自己的休息时间,更多的时间投入学习。对知识点不再疏于表面,而应深入研究,多主动打代码,这些所花的时间都是值的,是为后来的项目做好基础的重要步骤。
此外,还要继续注重结队精神。往后的课程难度肯定会提升,若仅仅让一个人来完成,负担肯定是不言而喻的。此外,这样一人孤军奋战肯定效率不高,质量不高,最后也只是会草草了事。因而,结队就扮演了十分重要的作用了。所以,结队编程的探索、提高、精通也是我下学期提升学习效果的重要举措。
问卷调查
你平均每周投入到本课程有效学习时间有多少?
约 18小时~22小时
每周的学习效率有提高吗?你是怎么衡量的?
提高是有,但不明显。我对自己学习效率的提高是通过自己掌握的知识量与之前几周掌握知识量来比较。
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
蓝墨云班课有它独特的教学管理系统,操作方便,相比较于博客园,蓝墨云班课能够上传的资源类型更多,所以对我的学习有很大得到促进作用。希望以后的课程也能够用蓝墨云班课作为教学的辅助软件。
你觉得这门课老师应该继续做哪一件事情?
继续使用蓝墨云班课进行授课,继续结队编程。
你觉得这门课老师应该停止做哪一件事情?
取消博客课程总结打分行为,打分对许多同学来说仅仅是一种形式。
对谢涛老师的工作给矛评价或建议
谢涛老师严谨慎重,对提高我们的代码质量做出了不可磨灭的贡献,他提出的很多建议都十分的新颖实用,他的严格要求也让我们意识到当一名合格的程序员并没有想象中的那么简单,也激发了我们向上的斗志。但是谢涛老师的项目数量对我们来说多了点。临学期末,谢涛老师并没有真正考虑到我们的复习压力,将项目延后一周并不算是什么考虑。期末降至,每人可能每天都要复习八个小时以上,并没有太多的闲暇时间去做项目。
课堂链接二维码
预备作业01