20155303 2016-2017-2 《Java程序设计》课程总结
20155303 2016-2017-2 《Java程序设计》课程总结
目录
- 一、每周作业及实验报告链接汇总
- 二、关于博客
- 自认为写得最好一篇博客是?为什么?
- 作业中阅读量最高的一篇博客是?谈谈经验。
- 作业中与师生交互最多的一篇博客是?谈谈收获。
- 三、代码托管
- 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
- 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得。
- 积极主动敲代码做到没?教材实践上有什么经验教训?
- 四、课堂项目实践
- 课堂实践链接
- 课堂实践对提高应用能力有帮助吗?
- 课堂实践上自己有什么经验教训?
- 课堂实践上对老师有什么教学建议?
- 你有什么项目被加分,谈谈你的经验。
- 五、学习反思
- 自己的收获(投入,效率,效果等)。
- 自己需要改进的地方。
- 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议。
- 六、给自己和学弟学妹的建议
- 如果重新学习这门课,怎么做才可以学的更好?
- 下学期有什么可行的计划提升学习效果?
- 致学弟学妹
- 七、问卷调查
- 你平均每周投入到本课程有效学习时间有多少?
- 每周的学习效率有提高吗?你是怎么衡量的?
- 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 你觉得这门课老师应该继续做哪一件事情?
- 你觉得这门课老师应该停止做哪一件事情?
- 你觉得这门课老师应该开始做什么新的事情?
- 补充的一点建议
- 八、写在最后
- 附:二维码
一、每周作业及实验报告链接汇总
- 路行至远,砥砺前行(预备作业一):浅谈对师生关系的看法以及对未来学习生活的展望
- 《做中学》读后有感(预备作业二):学习娄老师《做中学》系列文章、C语言学习情况调查、Java课程目标
- Linux学习笔记(预备作业三):初步学习Linux,熟悉常用命令
- 2016-2017-2 《Java程序设计》第一周学习总结:初步认识Java这门语言
- 2016-2017-2 《Java程序设计》第二周学习总结:Java基本语法知识
- 2016-2017-2 《Java程序设计》第三周学习总结:对象与参考的关系,以及封装的概念与实现
- 2016-2017-2 《Java程序设计》第四周学习总结:继承与多态的关系,以及接口的多态操作
- 2016-2017-2 《Java程序设计》第五周学习总结:异常处理,使用Collection收集对象
- 2016-2017-2 《Java程序设计》第六周学习总结:字节流和字符流的继承架构,线程与并行API
- 2016-2017-2 《Java程序设计》第七周学习总结:Date与Calender
- 2016-2017-2 《Java程序设计》第八周学习总结:学习NIO、日志、正则表达式等内容,复习第六章“继承与多态”和“Linux 目录结构及文件基本操作”
- 2016-2017-2 《Java程序设计》第九周学习总结:学习数据库、反射与类加载器、自定义泛型枚举与注释等内容,复习常用命令join、cut、split和sort
- 2016-2017-2 《Java程序设计》第十周学习总结:网络编程和数据库常用命令,使用Java实现一些密码学算法
- 实验一:Java开发环境的熟悉
- 实验二:Java面向对象程序设计
- 实验三:敏捷开发与XP实践
- 实验四:Android程序设计
- 实验五:Java网络编程
二、关于博客
自认为写得最好一篇博客是?为什么?
我的每一篇博客少则八九千,多则两三万字,其中的“教材学习中遇到的问题”和“代码调试中遇到的问题”都是我学习过程的详细记录。所以平心而论我也不知道哪一篇写得最好。不过,2016-2017-2 《Java程序设计》第二周学习总结应该是写得最用心的一篇博客。因为第一次接触这种学习模式,并不太清楚博客中应该记录什么,分享什么,所以这篇博客写得比较认真,也分享了我遇到的每一个问题以及解决办法。
作业中阅读量最高的一篇博客是?谈谈经验。
阅读量比较高的是2016-2017-2 《Java程序设计》第二周学习总结和实验四:Android程序设计。前者是因为记录得比较细致,后者是因为自己提前完成了实验,供未完成的同学参考。
作业中与师生交互最多的一篇博客是?谈谈收获。
交互最多的是2016-2017-2 《Java程序设计》第二周学习总结和2016-2017-2 《Java程序设计》第五周学习总结,其中有娄老师提出的改进意见、谢涛老师抛出的问题以及我们之间的探讨过程、小组成员的打分,还有同学之间学习经验的分享。
不管是师生之间的互动,还是生生之间的互相学习,都让我受益匪浅:娄老师总是能指出我现阶段学习方面存在的问题,及时提出建议和改进办法,帮助我更快地适应新模式,更好地提升自我。谢涛老师经常从一名专业程序员的角度,针对细节抛出各种我没有考虑到的,但非常实际的问题,比如中文乱码、去注释、语言转换等等,讨论学习的过程让我收获很多。而同学们之间的讨论更是一个绝佳的学习机会,我从大家的博客中发现了很多我没有遇到的问题及解决方法,进一步拓宽了我的思维。
三、代码托管
给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
这学期一共写了6600多行代码,5000行代码的目标已经达到,发现这个目标远没有想象中那么遥不可及。
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得。
以课堂上课本代码考察为例,我认为这是一种非常好的方式,有助于加深我们对代码的理解。这学期5000行代码的任务并不难,把课本上的程序都过一遍就能达标,但对我来说,真正的提高在于以下两点:第一,每周学习过程中遇到问题时,自己动手编程验证;第二就是课堂上的课本代码考察和实践项目,简单的加加改改却考验了我们对知识的掌握程度。我想,这些是仅仅照搬书上代码所无法获得的。
积极主动敲代码做到没?教材实践上有什么经验教训?
我认为自己在积极主动敲代码方面做得并不令人非常满意。课本上的代码的确是一行一行过了一遍,但缺乏深入的思考。后来我意识到了这个问题,在学习过程中刻意强化自己的动手能力,遇到疑问编程验证,在密码学、数据结构等课程中也尝试用java实现各种算法。但我认为还远远不够,要想做到对代码信手拈来的程度,还要多思考,多练习。
四、课堂项目实践
- 我的课堂实践链接:《Java 程序设计》课堂实践项目 课后学习总结(MySort)
课堂实践对提高应用能力有帮助吗?
在我看来,课堂实践能够大大提高应用能力,让我们从“怯于写代码”逐步变为“善于写代码”。这也是一个能够考察大家的掌握情况的机会,远比简单的试卷作答更有价值。
课堂实践上自己有什么经验教训?
教材实践的内容一般老师在课上都会很细致地讲解一遍,难度并不大,所以,课后的补充学习就显得尤为重要。比如老师讲了如何实现java.util.Arrays类的sort()功能,那么如何实现java.util.Collections类中的sort()功能呢?诸如此类,如果都能做到举一反三,想必编程水平会有很大的提高。
课堂实践上对老师有什么教学建议?
可以将这种方式延伸到课下的自主学习,把每周的学习任务具体化为类似课堂实践的题目,让同学们在课下学习完课本的内容后动手实践,也算是对每周学习情况的检验。
你有什么项目被加分,谈谈你的经验。
之前老师布置了一个关于正则表达式的加分项目,正巧当时在谢涛老师的提示下,学习了正则表达式的用法,再加上自己的兴趣,就试着做了这个加分作业。
这个作业本身并不难,但要求写出不少于40个包含元字符,字符转义,重复,字符类,分枝条件,反义,分组,后向引用,贪婪与懒惰等情况的测试案例,就显得有些复杂了,需要细致全面的理解和分析。
五、学习反思
自己的收获(投入,效率,效果等)
『关于写博客』:
这是一种全新的学习方式。总结一周的学习成果,老师进行在线评论,同学之间在线互动。虽然老师的工作量大大增加,但对于学生来说百利而无一害。
程序员中有一种很流行的“小黄鸭调试法”,当程序出现bug时,对着桌上的小黄鸭叨叨一番,分析分析错误,往往问题就迎刃而解了。在我看来,写博客也能达到同样的效果。有了疑问贴到博客上,接着就要思考怎么解决呢?最佳方法是什么呢?怎样才能让叙述更加清晰明了呢?如果能让有同样疑问的人看过之后都明白,这才算是真正透彻地理解了。
另外,每周完成上万字的博客也是提高写作水平的绝佳手段,这一点对于我们而言也很重要:)
『关于如何解决问题』:
这学期我最大的收获就在于学会了如何解决问题,如何高效地自主学习。
每周学习都会产生很多大大小小的疑惑,包括教材学习过程中发现的,也有调试代码时遇到的。我根据自己的理解,将解决问题的方式分成了以下三种:
第一,上网或查阅书籍资料以及查询API文档解决。这种方式效率很高,基本上很快就能释疑,对于简单的问题不失为一种高效的方法。 第二,动手编程验证。就我而言,印象最深的,是第七周解决由clone()
产生的关于“深层复制”和“浅层复制”的疑问。疑问越挖越多,查询了很多资料还是觉得没有真正理解掌握,决定自己编写程序,尝试各种拷贝方式并查看打印结果,最终才理解了DeepCopy与ShallowCopy的真正含义。 第三,请教老师或同学。这种方法最容易,最靠谱,往往可以直接得到答案。一些根本没有思路,或是通过查询资料和动手编程都不能解决的问题,可以向他人求助。不过得到解答并不应该是最终目的,回去之后应该结合自己解决问题的尝试过程再深入分析,看看自己的理解究竟哪里出了偏差。这样才能有所提高。
『关于学习心态与自我调整』:
除了自学能力的提高,更重要的一点是学会了心态的调整。
自学过程道阻且艰,特别是第一次接触如此彻底的自学。刚开始内容比较简单,虽然多不过稍用点心就能get到课本的知识点。但越学越深,渐渐接触到Java思想的内涵和精髓,理解起来难度也就逐渐加大了。
前几周学习状态很差,常常感到焦灼浮躁。书越读越厚,知识也越学越多,但细细想来每一科的学习都浮在表面,与自己的要求相差甚远。
不过还好这些都只是一闪而过的念头,每次状态不佳都会逼自己钻进书本,不断产生疑问并解决疑问的过程才是最充实的。遇到问题就解决,方法欠妥就修正,正视自己存在的不足,迎难而上,我想没有什么做不到吧:)
另外非常感谢娄老师和谢涛老师,总能在我萎靡不振的时候给予我鼓励和支持,适时地提出解决问题的途径,让我不再迷茫~
自己需要改进的地方
这学期的学习让我意识到自己还存在很多不足,尤其是动手能力。虽然自学让我克服了畏难情绪,但自己并没有将编程与其他各科的理论知识充分结合,而一种语言的出现,初衷不就是为了解决问题吗?所以,用编程解决实际问题,这才是我们的目标,也是我接下来要刻意培养的能力。
卢肖明学长和高其学长的确非常优秀,整个学期我都是以他们为榜样,不断向他们的方向努力。但不是每个人都可以成为卢同学和高同学,他们能达到目前的高度,能得到老师们的赞扬,背后究竟付出了多少是我们不得而知的。登高必自卑,行远必自迩,做学问本来就不能奢求一蹴而就,更何况是学习IT技术。所以,一时效果不理想就开始沮丧焦虑,甚至怀疑自己,这样是不可取的。达不到他们的水平就踏踏实实做自己,专注于目前所做的每一件事,总有一天能得到自己想要的。
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
本学期有两次实验是需要结对完成的。我认为我能高效快速地完成实验,很大程度上在于我与搭档的默契配合。与我结对的马超学长之前自主完成了java课程的学习,能够指明总体的方向和要实现的目标;而我则利用学习较为细致的优势,解决实验中出现的各种问题。如此一来,两个人都发挥了自己的优势,就有了良好的效果。
偶然的机会了解到二系学弟学妹们结对编程,完成四则运算,我认为做这样的小项目是一个提升合作能力的绝佳方法。在编程过程中相互学习,相互补充,既是两人思维的碰撞,又是自身缺陷的弥补,百利而无一害。
六、给自己和学弟学妹的建议
如果重新学习这门课,怎么做才可以学的更好?
一定要好好看学习指导!一定要好好看学习指导!!一定要好好看学习指导!!!学习指导的链接戳我:D
没有认认真真按照娄老师的学习指导学习,这可能是我这学期最后悔的一件事了。开始几周不适应自学,觉得任务多压力大,所以老师在学习指导上提出的问题我没有一道题一道题地仔细思考,只关注了知识点部分。直到有一次谢涛老师在我的博客中提出如何支持多语言的问题,娄老师启发我教材上就有例子,回顾课本后发现,老师的学习指导上就有相关的思考题,只能怪自己当时学的时候没有学透彻。如果能把学习指导上的问题一个一个仔细过一遍,解决问题的能力一定会有质的飞跃:)
下学期有什么可行的计划提升学习效果?
既然认识到了自己在动手能力方面有所欠缺,就要着重训练。打算从暑假开始,提前接触下学期的课程,并补习C语言的相关知识。谢涛老师结合他自己的学习经验提出了非常好的建议,我会抽时间尝试一些ACM/ICPC的试题,提高编程水平。
致学弟学妹
除了上面提到的仔细看学习指导之外,还有几点是我想告诉你们的:
- 首先,不管你们之前是否有所耳闻,上这门课之前都要做好充足的准备,尤其是态度方面。老师会借助这门课程,带你们认识一种全新的学习方法,开拓一片更广阔的知识天地。这门课不同于我们学校的其他课程,没有什么“期末刷分”的捷径,更不存在“随便水一水就能拿高分”的可能。每一分都是你们凭借真才实学拿到的。所以你们必须绷紧这根弦,从一开始就以端正的态度学习。
- 其次,刚开始不适应没关系,因为所有人都存在这样那样的问题,包括我们以及我们的学长学姐。但要记得及时调整,而不是被畏难情绪肆意摆布。遇到问题积极寻找解决的办法。如果你由于第一次接触这种模式,还没有掌握解决的问题方法,也没关系,主动找老师沟通,让老师为你指明方向。很多时候老师一句简单的鼓励或是提醒,都会让人醍醐灌顶,信心倍增。
- 最后我想说的是,老师的认真负责你们是看得见的,而大家的努力刻苦老师也是看得见的。学习的过程实际上是一个正向激励的过程,只要你想好好学,老师所做的一切都会帮助你到达更开阔的境界,不断刷新自己的高度。所以,如果你觉得自己很努力但收效甚微,一定不要钻牛角尖,更不要抱怨什么老师管得太严制度太苛刻等等,找老师聊一聊,让老师了解到你的问题,或许只是因为努力的方向有1°偏差而已。不要因为自己的一点小情绪就自甘堕落放弃前进,那样太不值得。
七、问卷调查
- 你平均每周投入到本课程有效学习时间有多少?
- 学习阶段任务比较重,大概每周要投入20小时左右;之后复习就比较轻松了,每周花三四个小时完成老师布置的任务(比如实验)即可。这么看来,还没有达到学习初自己定下的400小时的目标。训练不足,这可能是我目前不能得心应手地运用编程解决实际问题的根本原因吧。
- 每周的学习效率有提高吗?你是怎么衡量的?
- 有很大提高。主要从接触新知识到掌握新知识这个过程的时间来衡量。刚开始遇到问题不知道怎么解决,眉毛胡子一把抓;之后渐渐掌握了学习方法,自学起来就得心应手了。
- 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 有很大的促进作用。我认为这是一个很好的平台,不仅能答疑讨论,更像是知识的聚宝盆!尤其在老师上传了各种学习资料和博客链接之后,不管是查询还是提问都方便了很多。
- 你觉得这门课老师应该继续做哪一件事情?
- 课堂实践。要想实实在在地提高动手能力,没有比这个更好的办法了:)
- 翻转课堂的题目完全可以继续使用,尤其是一些程序分析题和填空题。印象最深的是那次全英文考试,虽然我们的成绩都不理想,但不得不说,题目很有深度,能够考察同学们是否真正理解并掌握了相关知识。如果有类似的题目,不管是中文还是英文,我认为都是知识巩固和拓展再好不过的工具。毕竟这几百道题是老师积累很久的,都非常有价值,而且老师一道一道输进蓝墨云班课也很辛苦,所以题目值得发挥最大的用处,继续为以后学生的学习提供帮助。如果同学们课上没时间完成,可以作为课下作业,供同学们检测一周的学习情况。
- 你觉得这门课老师应该停止做哪一件事情?
- 博客互评可以换一种方式,比如给对方提问,或是解决对方博客里的问题之类的,既能帮助他人学习,也有助于自己的提高。
- 你觉得这门课老师应该开始做什么新的事情?
- 我们没有像学弟学妹那样,结对完成什么小项目,我觉得是挺遗憾的一件事。
八、写在最后
- 学期接近尾声,回顾这半年的学习,感触颇丰。如果我在这里谈一些自主学习的经验和方法之类的,未免有些空洞,很多同学肯定会抱怨,“这些道理都懂,但就是觉得太难了,不想学,学不会。怎么办?”
- 其实在上这门课之前,甚至已经开课一周了,我也一直是这种想法。尤其是寒假做预备作业的时候,按照实验楼的教程一条一条学习Linux命令,常常想:这是一门什么课啊?不是Java麽?为什么要学这些呢?(当时毕竟目光短浅...)学的这些应该怎么用呢?最重要的是,我到底应该怎么学才能学好呢?一位我很敬重的老师曾经说过一句话,“人的内心像是一座大门紧锁的城堡,外面再使劲地踹,不如里面轻轻一拨。”所以我深知主观能动性的决定性作用。想学好,那怎么办呢?只能靠自己。
- 如何让自己时刻保持高涨的学习热情,这正是我想谈的。第一周我还很不在状态,安装IDEA以及托管代码的过程遇到了一大堆问题,硬着头皮一个一个解决,才终于搞定。娄老师针对我们第一周的博客提出了很多建议,比如要按照模板写博客、代码量的截图不要全屏截图等等,我按照老师的要求一遍一遍修改博客,保证在当天完成并给老师回复,得到老师的肯定和鼓励,至此,我才慢慢进入状态,第二周的学习也踏实细致了许多。
- 需要强调的一点是,及时回复老师的点评对于主动性的提升非常关键。我们回复老师点评的效率和内容体现了我们的学习态度。要知道,多数情况下老师的点评指出了我们学习过程中存在的问题,就像一款我们自己开发的产品一样,如果有用户(在这里就是我们博客的读者)报产品有问题,不及时解决岂不是等着掉粉嘛?!时间一长,我们懒得处理解决,用户更懒得反映,漏洞只能越来越大,千里之堤终将溃于蚁穴。
- 所以我在学习中格外注意这一点:老师指出的错误当天更正;老师提出的意见当天修改;有时老师会抛出一些有深度的问题,也要尽快学习相关知识,并向老师汇报自己思考的情况,以求老师的补充或指正。这样一来,就形成了良性循环:我们积极思考,主动学习;老师收到及时并详细的回复后,也愿意提出更多的意见帮助我们改进。学习渐渐成为了一种乐趣。
- 当我们渐入佳境时,就会发现原来遇到问题并不可怕,因为我们总能找到解决的办法。比起查阅资料,找到根源,并最终解决问题的成就感,在IDEA上敲代码“一片红”的挫败感就微不足道了。
附:二维码
2016-2017-2 《Java程序设计》第一周学习总结:
2016-2017-2 《Java程序设计》第二周学习总结:
2016-2017-2 《Java程序设计》第三周学习总结:
2016-2017-2 《Java程序设计》第四周学习总结:
2016-2017-2 《Java程序设计》第五周学习总结:
2016-2017-2 《Java程序设计》第六周学习总结:
2016-2017-2 《Java程序设计》第七周学习总结:
2016-2017-2 《Java程序设计》第八周学习总结:
2016-2017-2 《Java程序设计》第九周学习总结:
2016-2017-2 《Java程序设计》第十周学习总结: