20172303 2017-2018-2《程序设计与数据结构》课程总结
20172303 2017-2018-2《程序设计与数据结构》课程总结
- 课程:《程序设计与数据结构》
- 班级: 1723
- 姓名: 范雯琪
- 学号:20172303
- 教师:王志强
- 助教:张旭升/刘伟康
- 必修/选修: 必修
每周作业链接汇总
- 预备作业01
- 简要内容:上学期总结;对专业的认识和期望;期望的师生关系;谈一下从小到大对你帮助/影响最大的老师和原因。
- 预备作业02
- 简要内容:有什么技能比大多数人更好?获取此技能的经验?本专业课的学习目标。
- 预备作业03
- 简要内容:安装Linux操作系统,学习Linux命令。
- 第一周总结
- 简要内容:初步接触java;下载相关软件;学习一些简单的java程序编写;登陆Linux时提示储存空间不足的解决方法。
- 第二周总结
- 简要内容:java的8种基本数据类型;运算符的使用;数据类型的转换;Scanner类命令。
- 第三周总结
- 简要内容:String类命令;Random类命令;NumberFormate类和DecimalFormat类命令;虚拟机蓝屏的解决方法。
- 第四周总结
- 简要内容:UML类图的使用;this引用;接口的相关方法;静态变量和实例变量的区别。
- 第五周总结
- 简要内容:条件语句和循环语句;break和contin语句;迭代器和ArrayList类。
- 第六周总结
- 简要内容:数组及其类型和使用;命令行形参和实参;类/对象/变量/参数的含义和区别和联系;IDEA上git push失败,显示让merge的解决方法。
- 第七周总结
- 简要内容:继承的实现方法;类层次结构;Java修饰符的类型和区别。
- 第八周总结
- 简要内容:多态性的接口方式和继承方式;两种排序方法;两种搜索方法。
- 第九周总结
- 简要内容:异常的相关内容;文件读写的相关内容;递归;标识符的命名规范;文件读写分行的方法。
- 第十周内容
- 简要内容:集合;动态数据结构;线性数据结构;arraylist和linkedlist的区别;队列、树、图如何用代码来实现。
- 第十一周内容
- 简要内容:Android的初步了解;活动的生命周期;UI组件;AS下载过程中遇到的相关问题及解决方法。
自认为写得最好一篇博客是?为什么?
- 个人觉得写的最好的博客是第10周学习总结。因为我觉得这周的博客中是我整个java学习中学习过程最完整,且体现得最好的一篇。
- 首先从写博客开始,教材内容学习写的比较认真,问题记录也都比较详细。其次,本周是我和结对伙伴结对情况最好的一周,互评积极且内容有意义,不是什么很水的排版好啊内容详细之类的泛泛之谈。最后,本周的博客不是写完就写完了,然后就再也不管了,在看了结对伙伴的博客之后,我又对博客内容进行了一定的修改和添加,是一个再次学习的过程,而不是就像完成一个任务一样,本周的完成了,好,我去做下周的,这周做的好不好怎么样还有没有可以补充的这些就全都不管了。我觉得学习的过程中是不能缺少反复的过程的。
- 除此之外,我非常喜欢我在这篇博客中写到的那句话:珍惜天赋,保存悲悯。
作业中阅读量最高的一篇博客是?谈谈经验?
- 阅读量最高的一篇博客是预备作业02。说实话,我觉得这篇博客阅读量高的原因主要有两个,一个是因为当初这篇博客我是第一个交的,大家在写博客的时候都喜欢先看看写完的人是怎么写的,所以早写完的博客普遍阅读量要高于后写完的。其次,因为我写的内容是关于背单词的,引起了很多老师的关注,在这篇博客里邹欣老师和娄嘉鹏老师都对我的博客进行了评价,所以阅读量比较高。
- 但我觉得我的博客本身没有什么技术含量也没有什么特别值得学习的地方。其实现在来看的话,我觉得当时写这篇博客的我是个狂妄自大的“小屁孩”,因为我很少能找到有人比我背单词的天数更多的,但是可能我太拘泥于数量了,所以就觉得自己背的天数多就很厉害了,但其实我的英语水平还是局限于把英语考试考好而已,并不是真正掌握一门语言。
- 但很欣慰的一点是,当时邹欣老师给我的建议是可以开始读英文原版书了,本来我是在扇贝上看文章的,后来发现这个过于靠自觉了觉得我开学之后肯定坚持不下来,于是我在本学期报了一期薄荷阅读,现在已经读到第三本英文原版书了。
一个很大的感觉就是真的并不是你认识的单词多了考试考得好就是你学会英语了,在读第一本书的时候我感觉还好,但当到了第二本难度提升了之后,我就发现有很多句子我要反反复复看很多遍才能看懂,因为它不像考试那样系统完整,很多句子是很有本土风格的(我实在不知道怎么组织语言),就是那种只有把它作为第一语言的人才能写出来的句子,不拘泥于语法结构,能省略就省略,能简单就简单,读起来真的很有感觉。
实验报告链接汇总
- 实验一 Java开发环境的熟悉(Linux + Eclipse)
- 简要内容:学习JDB调试;下载并学会使用IDEA。
- 实验二 Java面向对象程序设计
- 简要内容:学会使用JUnit测试;学会使用UML建模;熟悉S.O.L.I.D原则。
- 共设置了五个节点:
- (一)完成单元测试的学习,提交最后三个JUnit测试用例
- (二)以 TDD的方式研究学习StringBuffer
- (三)用自己的学号%6进行取余运算,根据结果进行代码扩充
- (四)以TDD的方式开发一个复数类Complex,定义四种公有方法:加减乘除
- (五)使用StarUML对实验二中的代码进行建模
- 实验三 敏捷开发与XP实践
- 简要内容:代码规范;JUnit测试;重构练习;密码学相关。
- 共设置了四个节点:
- (一)安装alibaba程序并运行,解决代码规范
- (二)复习JUnit单元测试
- (三)使用编码规范扫描规范结对伙伴的代码
- (四)结合重构与结对伙伴共同学习密码学相关内容
- 实验四 Android程序设计
- 简要内容:Android Stuidio的安装测试;Activity测试;UI测试;布局测试;事件处理测试;如何将代码导入AS;R文件变红的解决方法;修改码云地址后如何上传。
- 实验五 网络编程与安全
- 简要内容:Java Socket应用;密码学相关内容实践。
- 共设置了五个任务:
- 任务一:实现中缀转后缀并计算结果的功能
- 任务二:基于Java Socket实现客户端/服务器功能
- 任务三:基于任务二,使用3DES或AES算法将后缀表达式进行加密
- 任务四:基于任务三,使用DH进行密钥交换
- 任务五:基于任务四,使用MD5将明文加密
团队项目报告链接汇总
- 结对编程项目-四则运算
- 简要内容:初期的需求分析、设计思路;中缀转后缀以及计算的初步实现。
- 结对编程项目-四则运算 第二周
- 简要内容:实现拓展需求(实现文件处理);团队贡献度划分。
- 结对编程项目-四则运算 项目总结
- 简要内容:完成相关类的测试;项目总结。
代码托管链接
给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
- 因为我的码云当初出过问题虚拟机上的代码统计有问题(第七周博客中有提到),所以这里放IDEA里的代码统计结果,这个是正确的。
- 代码量目标我想我们班大多数同学应该是都达到了,很多人可能一学期的代码量已经达到了两学期总共要求的一万行了,所以说我还要多多努力啊!!!!
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
- 我觉得在这篇博客里有一段话我非常喜欢:
有位文豪说得好:“看一个作家的水平,不是看他发表了多少文字,而要看他的废纸篓里扔掉了多少。” 我觉得同样的理论适用于编程。好的程序员,他们删掉的代码,比留下来的还要多很多。如果你看见一个人写了很多代码,却没有删掉多少,那他的代码一定有很多垃圾。
- 我记得有一次做课堂实验,本来我第一次花了半天写好了,但是晚上运行的时候张旭升学长说我这个结果不符合要求,然后我就去改代码,改了一天半,是写代码时间的三倍。然后就觉得,改代码比写代码难多了。而且越到后面这种感觉越明显,感觉自己就在不停地使用
ctrl+z
和ctrl+/
改来改去删来删去,虽然最后可能就会剩下几十行代码,但在这几十行最后形成之前,其实有比它多好几倍的代码曾经被删除过或者改过。
积极主动敲代码做到没?教材实践上有什么经验教训?
- 我觉得我还是算做到了吧,刚开始的时候是为了追求代码量所以能多敲就多敲,到了后面对代码量看得比较淡了之后就开始想办法用尽量简洁的代码把程序写出了。但是积极主动敲代码看得又不是敲代码的量而是态度,所以我觉得是做到了。
- 绝对不要100%地去相信课本,对什么有疑问有怀疑的时候一定要自己去测试。然后就是不要仅仅局限把在教材上的代码敲一遍,应该去学学老师,自己根据代码做一些修改,充分发挥一下自己的“脑洞”。
课堂项目实践
- 参考蓝墨云班课
课堂实践链接
- 命令行参数测试:从命令行传入学号、课程的成绩,计算平均成绩并输出,使用边长参数列表实现。
- 继承-练习:已知抽象类Animal,定义Cow类和Sheep类,继承Animal类,并测试。
- 排序:使用选择和插入排序法,写出3 1 9 3 6 2 10第3次排序的结果。
- IO操作及异常处理:从键盘写入任意个整数到文件中,从文件中读取后排序再次写入原文件,使用try-catch语句处理IO异常。
- 递归:输入一个数n,使用递归计算F(n)的值,并将计算结果写入文件中。
- 链表插入和删除:完成P397页例题中的节点删除和插入操作,并测试。
- 数据库操作实践:下载相关软件;编写程序,查询世界上超过“你学号前边七位并把最后一位加到最高位,最高位为0时置1”;编写程序,查询哪个国家的平均寿命最长,哪个国家的平均寿命最短; 编写程序,查询世界上的所有中东国家的总人口。
- Android课堂实践:在Android平台上开发移动程序,模拟栈的操作:Push、Pop。
- Android-中缀转后缀:开发一个Android应用程序,要求:输入一个中缀表达式,输出后缀表达式。
- Android表达式计算:在上一个实验的基础上,计算后缀表达式的计算结果,并显示栈的变化过程,使用控件显示。
- Socket编程:伙伴1编写服务器端程序,接收客户端发送的数据,将其排序后,发回给客户端。伙伴2编写客户端程序,将一串字符串发送给服务器端,接收排序后的程序,并显示。
课堂实践对提高应用能力有帮助吗?
- 当然有了,一般老师出的课堂实践都是他自己想的,从网上查都查不到只能自己做。经常为了一个课堂实践活动把一整天都花在java上,去不停地敲啊改啊,但我觉得真的是对能力的一种考察,而且是对所学知识一个很好的应用。就和学会英语要看原版书一样,知道怎么去应用才是真正学会了你想要学的东西。
课堂实践上自己有什么经验教训?
- 上课要好好听老师讲怎么做,好好看老师的代码是怎么敲的。光上课听一遍常常记不住也学不会,可以上课的时候用手机录下来下课之后找时间慢慢扣慢慢学,亲测有效~
课堂实践上对老师有什么教学建议?
- 其实我觉得王老师做的已经很好了,建议的话希望课堂实践占比再多一点,比如评小黄衫的时候可以把课堂实践的完成速度和完成情况做一个占比多一点的参考。
课程收获与不足
自己的收获(投入,效率,效果等)
- 首先,语言表述能力、知识总结能力和记录问题的能力因为写博客的缘故有了很大提升,然后在效率方面感觉自己在做课堂实践的时候花的时间总是比较长效率不高,觉得还是学得不够精细的缘故,最后效果的话自我感觉良好,能学到东西并且能会去用我就很满足了。
- 这个学期最大的感觉就是自己把大部分的精力和时间都放在java学习上了,它也确实是一门非常有意思而且让人很有成就感的课。经常因为一个什么程序有错误或者代码实现不了纠结上几个小时甚至几天,过程中真的很难受也很难过,但每每熬到最后成功之后总是会开心非常非常久,感觉之前再多的苦再多的累都是值得的。
自己需要改进的地方
- 对学过的内容上点心,不要学到后面把前面的忘了又去返工重看。
- 养成写代码及时加注释的习惯,不要每次都等别人来提醒才去加。
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
- 我觉得我和我的结对伙伴在前期结对学习效果不是很好,但是越往后面两个人越来越认真,结对评价也越来越细致,还是不错的。
- 我和我的结对伙伴在敲代码的过程中互相帮助都有的,但我的结对伙伴在敲代码之外的一些事情上对我帮助极大,比如如何在IDEA中查代码量,怎么把代码复制到Android Studio中等等,都是他教会我的。
问卷调查
你平均每周投入到本课程有效学习时间有多少?
- 二十个小时左右吧。
每周的学习效率有提高吗?你是怎么衡量的?
- 我觉得后期肯定是比前期好的,从每周的博客总结中就可以看出,感觉后期的博客更加条理而且细致,前期的话有时候有些赶工的感觉。
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 非常有。希望视频可以自动调节时长,有时候想看到自己想看的东西前面要等好久,如果不小心在没看完之前关了的话又要重新开始看很浪费时间。
你觉得这门课老师应该继续做哪一件事情?
- 继续进行一些课堂实践。
你觉得这门课老师应该停止做哪一件事情?
- “以博客写的好坏论高低”。其实就是希望博客写得怎么样的评价在总分中的占比能降低一些,每周的博客写得好能在总分中加一分,这个比重其实是非常大的了,我也因为这个“受益”了好多,有几次博客加分,成绩会高点,但我自认为并没有某些博客写的不是很精美但编程能力强的同学学得好,良好的学习过程记录确实很重要,但我觉得程序设计还是实践应用更重要一些。如果大家都为了得到那一分的加分而把时间花在把博客写的更整齐,把界面弄得更好看上,就有些本末倒置了。
你觉得这门课老师应该开始做什么新的事情?
- 学的东西和我们将来要干的事情结合得再深一点,不希望学了整整两学期的东西在离开了学校之后用得不多。
写在最后
- 刚开始学的时候感觉特别迷茫和混沌,不知道自己学的是什么,该在哪方面下功夫,寒假写预备作业的时候以为Linux操作系统就是我们这学期要学的主要内容,找了个有一百多个视频的学习教程慢慢看,还做了笔记,结果开学之后发现它不是我们要花一学期去学的东西,就只是一个铺垫,那会儿感觉特难受,感觉自己白费功夫了...但是回顾这一个学期,其实我学会了好多东西,发现自己从一个什么都不会的小白变成了一个稍微会写点代码的半小白了。
- 这个学习的过程累吗?累,说不累那都是骗人的。但这并不妨碍它同时是一个很快乐的过程,我觉得这就像我最喜欢的一句诗一样:
雄关漫道真如铁,而今迈步从头越。
- 下个学期继续努力吧。
给出你的总结中涉及到的链接的二维码
- 预备作业
预备作业01
预备作业02
预备作业03
- 教材学习
第一周
第二周
第三周
第四周
第五周
第六周
第七周
第八周
第九周
第十周
第十一周
- 实验
实验一
实验二
实验三
实验四
实验五
- 结对编程项目
四则运算 第一周
四则运算 第二周
四则运算 项目总结
- 码云链接
Java项目
Android项目
四则运算
- 课堂实践
命令行参数测试
继承练习
排序练习
IO操作及异常处理
递归
链表插入和删除
数据库操作实践
Android课堂实践
Android-中缀转后缀
Android-表达式计算
Socket编程