1、未能通过作业的原因
第一单元第三次作业未能通过,原因在于前两次作业的架构极差,导致第三次需要完全重构。而自己对于Java编程不够熟悉,面对重构感到无从下手,因此未能在规定时间内完成作业。
第二单元第一次作业未能通过,原因在于对于多线程理解不足,未能串起整体代码的架构逻辑,导致最终代码运行不出结果,自己也难以找到原因。
第四单元第三次作业未能通过,原因与第一单元相似。前几次代码架构极差,后期需要重构代码,然而临近烤漆时间不足,因此未能在规定时间内完成。
2、补给站中的改进
第一单元第三次作业,在架构上花费大量心思,用两周时间、经历多次重构,不断整理思路,最终在老师的指导帮助下,确定了自底向上的解析思路,又用一周时间完成代码编写。将多项式解析为一个个项、再将项解析为一个个因子,对每个因子给出求导和输出方法,解析后分别求导,再加以组合。此次作业的难点在于架构设计,同时格式检查也是一个较为复杂的过程,耗时较多。
第二单元第一次作业,重点在于理清电梯运行过程是怎样的,了解多线程在其中发挥的作用。将输入、处理、输出分而治之,建立生产者-消费者模式,在生产者、托盘、消费者之间做好线程交互,以保证电梯运行。在刚开始完成本次作业时,由于将电梯运行过程想的太过复杂,包括利用LOOK算法之类,一直未能完成。经历多次重构后,最终只用最简单粗暴的ALS运行电梯,这也是作业的不完美所在。
第四单元第三次作业,我进一步学习了StarUml,并仔细阅读了源代码。然而由于突然生病加上自己怠惰,最终未能在一周时间内顺利完成作业。但是对Uml有了更深刻的了解,也认识到这是一门非常有用的语音。
3、补给站讲解的好处
一方面,每次作业讲解都是对自己作业思路的整理。在讲的过程中,我发现心中有代码和把它讲清楚之间还是有很大的差别。每次做PPT的时候,都会在整理代码的同时发现各种Bug或非必须的代码,从而进一步对代码进行优化。
另一方面,老师的指导也很给人启发。尤其是在第一单元的架构方面,老师细心的指导把“分而治之、化整为零”的思想种入我的脑海,给当时架构一团乱麻的我指明方向。在每次讲解中,老师都会给同学们的代码提出建议,这些建议往往是从工程化和可扩展性的角度出发,自己是不容易想到的。后面由于身体原因未能旁听讲解,也是补给站的遗憾了。
4、组织形式的建议
今年的线上补给站与以往组织方式不同,但可以看出老师也付出了很多心力,包括鼓励大家提出代码中的困难等。但是进入补给站的同学往往是完成作业有较大困难的,如果可以在每单元作业截止前,组织一次相关知识的复习与作业思路提示,或许可以提高大家完成作业的顺畅程度。
5、心得体会
学期中得知自己oo挂科,不亚于晴天霹雳,感谢课程组在暑假也辛勤付出,给了我挽救的机会。大半个暑假的时间和精力都放在oo这门课上,在无数次的自我怀疑和心态爆炸下,得到老师细心的关怀和指导,是我们最大的安慰。在这个过程中看到了自己代码能力不足、与人沟通合作能力很差,但也意识到不断坚持可以达到看似不可能的目标。虽然结果不算完美,但也可以用“Done is better than perfect”来自我安慰一下。再次感谢老师的付出!