20162330 2017-2018-1《程序设计与数据结构》课程总结
2017-2018-1 学习总结目录: 1 2 3 5 6 7 9 10 11 12
前言
转眼间一年过去了,在这一年间《程序设计与数据结构》这门课带给我们的有痛苦,也有欢乐,有疲惫,也有收获。不论我们收获了多少,我们都是在不断尝试,老师在不断尝试新的教学方法,我们也在尝试着不断接受。这个学期我们主要针对数据结构的内容进行学习。在结对互助的基础上,还开设了团队项目,虽然总体效果不太理想,但是不论怎样我们尝试了一次团队合作,留下了较为深刻的印象。总之,作为信管专业的学生,能够有幸接触了解到一些软件工程的相关内容,也算是一笔额外的财富。这篇博客是我对本学期学习内容的总结,也是作业性质的最后一篇博客,就用这篇博客为本课程画上圆满的句号吧。
目录
- 博客两问
- 1. 自认为写得最好一篇博客是?为什么?
- 2. 作业中阅读量最高的一篇博客是?谈谈经验.
- 代码托管链接
- 1. 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
- 2. 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得.
- 3. 积极主动敲代码做到没?教材实践上有什么经验教训?
- 课堂项目实践
- 1. 课堂实践链接
- 2. 课堂实践对提高应用能力有帮助吗?
- 3. 课堂实践上自己有什么经验教训?
- 4. 课堂实践上对老师有什么教学建议?
- 课程收获与不足
- 1. 自己的收获
- 2. 自己需要改进的地方
- 3. 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议.
- 问卷调查
- 1. 你平均每周投入到本课程有效学习时间有多少?
- 2. 每周的学习效率有提高吗?你是怎么衡量的?
- 3. 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 4. 你觉得这门课老师应该继续做哪一件事情?
- 5. 你觉得这门课老师应该停止做哪一件事情?
- 6. 你觉得这门课老师应该开始做什么新的事情?
每周作业链接汇总
-
第一周作业:了解算法效率、增长函数及其比较、大O符号;
-
第二周作业:了解敏捷的团队,Comparable接口与Comparator接口、泛型的使用;
-
第三周作业:了解一些查找和排序的算法;
-
第五周作业:了解集合,掌握并实现栈集合;
-
第六周作业:了解队列的应用,掌握并实现队列集合;
-
第七周作业:了解树的基本结构,树的遍历方式;
-
第九周作业:掌握并实现堆,哈夫曼树的基本结构;
-
第十周作业:掌握图的基本概念及实现方法;
-
第十一周作业:实现图的遍历方法、最短路径等问题,了解哈希方法。
(单周必写博客,双周博客选做)
博客两问
1.自认为写得最好一篇博客是?为什么?
本学期我一共写了 36 篇博客(不包括这篇、上一篇和暑假写的四篇),平均每 3 天写一篇博客,其中包括 9 篇课程总结,5 篇实验,6 篇实践和 16 篇团队博客。如果不回过头看看还真不知道自己已经写了这么多篇博客:
其实我觉得本学期自己总体的博客质量有些下降,主要是因为自己在解决问题这方面没有像上学期那样下到功夫,所以在每周的学习总结博客中往往是教材学习的内容占据了大部分篇幅,当然还是有几篇博客比较精彩的。以学习是否深入、解决问题的过程是否记录得足够详细为标准,自认为有三篇个人博客达到了要求:第一周学习总结,实验二 树 以及 泛型类-Bag 练习。
第一篇博客属于周总结性质的博客,相比起同类的其他总结博客,其篇幅不长,但是全面性更强一些,提出的问题比较具体、完整,并且我还在“其他”标题下增加了“教材中涉及的英文”,也尝试了新的字体和排版格式,基本上以后的每篇周总结博客都套用了这个排版格式;第二篇博客属于实验报告性质的博客,这篇博客从实验的过程记录到解决问题的过程记录都是比较详细的,我还借鉴了比较多的参考资料,算是实验报告里最用心的一篇了;第三篇博客属于实践性质的博客,遇到的问题和解决过程记录得更详细一些,并且当时还处于十一休假期间 _ ,能完全独立思考并写出这样的博客本身就很难得,所以值得一提。
除了以上三篇个人博客之外,还有一篇团队博客也写的不错,只不过团队博客总结性质偏多,而且我整理的是整个团队的学习内容,涉及的个人内容较少。在Alpha冲刺阶段,我根据我们团队每次冲刺的不同情况给每篇冲刺博客都加上了一个后缀名,其中第七篇冲刺博客 Day7 - 靠泊 算是总结得非常精彩的一篇,按照当时的提交要求,该有的都有了,并且还汇聚了每名组员的感想(这个最重要(•̀ᴗ•́)و)、计算了每名组员的贡献比例,在所有团队博客中,这一篇我印象最深,所以特意将其选出来。
以上的四篇博客,可以说是各有千秋,分不出哪篇最好,每一篇我都倾注了大量时间和精力完成。对于个人博客,更多时间运用在提炼学习内容和记录解决问题的过程上;对于团队博客,更多时间运用在总结整理和排版设计上。综上所述,我认为这四篇博客都是本学期写得最好的!
2.作业中阅读量最高的一篇博客是?谈谈经验.
我的作业中阅读量最高的是上学期写得一篇博客:Android程序设计 实验报告,其阅读量已破 700,超出了我的预料,大概是因为移动平台的安卓开发一直比较火热,当然我这篇博客的质量也是比较高的,虽然比较基础,只是大致地叙述了一下Android开发的内容,但是里面还提及了 Android Studio 的安装过程,可能对于新手来说是一篇不错的参考:
除此之外,我在暑假写的 第一周 学习总结 阅读量第二,属于非作业性质的博客中阅读量最高的一篇,也是目前得到推荐数量最多的一篇,主要可能是因为之前得到了娄老师在群里的推荐。另外,我也会常常看看这篇博客,看看当时努力的我是否已成了回忆。
说完以上两篇博客,来说说我这学期的博客,我这学期博客的阅读量并不高,可能是因为发表时间太短,不过有一篇昨天(12.23)才发表的博客阅读量今天已破百,并且直接成了我这学期阅读量最高的博客:如何对博客进行备份和还原?
这篇博客之所以阅读量这么多,是因为博客园昨天将其筛选在首页:
这篇博客并没有什么高质量的内容,但是可以让读者从中学到东西,并且是我的一篇非作业性质的原创。可能大家在写博客的过程中,都忽略了备份博客这个重要环节,对于一个认真对待博客的人这个习惯尤为重要!可能这也是被选入首页的原因吧。
最后我想说说本学期作业性质的阅读量最高的一篇博客:Java演绎法 第一周 作业
这篇博客是团队的第一篇博客,当时因为回复娄老师比较及时,内容又比较充实、全面,得到了娄老师的两次推荐,所以阅读量也跟着上去了,也是目前的团队博客中阅读量最高的一篇:
实验报告链接汇总
-
实验一 线性结构:ArrayList和LinkedList的方法实现和测试,源码分析;
-
实验二 树:二叉树、构造二叉树、决策树、表达式树、二叉查找树、红黑树分析;
-
实验三 查找与排序:查找排序算法的补充与测试;
-
实验四 图的实现与应用:使用邻接矩阵和十字链表实现图,图的最短路径问题;
-
实验五 数据结构综合应用:团队项目的编译、运行、测试,代码修改与分析。
团队项目报告链接汇总
-
第一周作业:共同学习《构建之法》,内容、问题、交流;
-
第二周作业:选取了一个游戏软件并回答问题,交流;
-
第三周作业:展示个人风采,选取团队项目,交流;
-
第四五周作业:撰写《需求规格说明书》,交流;
-
第六七周作业:后端架构设计图、ER图、WBS图、TODOList及燃尽图,交流;
-
第八周作业:UML各种设计图:用例图、类图、活动图、状态图,交流;
-
【Alpha版本】冲刺阶段 - Day1 - 启航:Alpha 阶段分工,贡献值计算规则,交流等;
-
【Alpha版本】冲刺阶段 - Day2 - 漂流:今日进展、问题困难、明日任务,会议,TODOList及项目燃尽图;
-
【Alpha版本】冲刺阶段 - Day3 - 逆风:今日进展、问题困难、明日任务,会议,TODOList及项目燃尽图;
-
【Alpha版本】冲刺阶段 - Day4 - 加速:今日进展、问题困难、明日任务,会议,TODOList及项目燃尽图;
-
【Alpha版本】冲刺阶段 - Day5 - 破浪:今日进展、问题困难、明日任务,会议,TODOList及项目燃尽图;
-
【Alpha版本】冲刺阶段 - Day6 - 乘风:今日进展、问题困难、明日任务,会议,TODOList及项目燃尽图;
-
【Alpha版本】冲刺阶段 - Day7 - 靠泊:阶段总结,贡献量汇总,发布说明,感想,交流等;
-
【Alpha阶段】后期测试及补充(第十一、十二周):项目测试,成果展示,交流;
-
团队会议及交互汇总:每周的小组会议交互记录;
-
团队成员贡献量汇总:本学期小组成员贡献量汇总。
(前13篇属于作业,最后3篇属于组内总结,非作业性质)
代码托管链接
1.给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?
两个学期我的代码总数是 12816 行,上学期的代码量是 7341 行,所以本学期的代码量一共 5475 行,达到了一学期 5000 行和一年 10000 行的目标。但是我觉得对于数据结构这部分内容我们只达到了所谓的代码量是远远不够的,更何况有些代码是从网上参考的,自己熟练应用才是最重要的,比如说:对于二分查找,相比起线性查找有什么优点,主要适用于什么场景,除了查找这一个功能之外还能用二分法做什么,大致思路是什么,具体要如何实现等等。仅仅一个算法就可以引申出这么多问题,所以一个冷冰冰的代码量并不能从主观上说明什么,可能只是起到了客观的督促提醒的作用吧。
除此之外,我还特意看了一下我在码云上的提交次数和频率,保持地不错,在此纪念一下:
2.加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得.
对于一个合格的程序员来说,能够对自己写出的代码进行不断推敲、不断修改至关重要,所谓的“艺术的代码”并不是那么容易就可以写出的。即使是一个不起眼的函数都需要考虑它的命名、形参、格式、是否符合整体的设计原则,等等。本学期娄老师建议我们要经常阅读源码,多找找自己写的方法跟源码中的方法的区别,多想想为什么这个方法在源码中要这么设计,相信同学们在阅读源码或者阅读一些源码分析资料的过程中就可以渐渐发现源码中一些“艺术的代码”。
总之,想要在代码上真正做到“精通”除了需要投入大量的时间之外,还需要更多的推敲与思考,这个过程只能靠自己去完成。老师讲得再多可自己“敲而不思”,这样也不会有什么收获,也就可能对你的应试有点用。所以不如自己多亲自动手尝试,这可能也是娄老师在编程教学领域提倡“做中学”的原因吧。作为学生,我们不需要以合格的程序员标准对待自己,也不需要做到多精通,只需要用心体会这个过程就足够了。
3.积极主动敲代码做到没?教材实践上有什么经验教训?
首先回答这个问题,没做到。如果再细化一点的话,做到了1/3。积极主动这一点在我身上更多体现在团队博客上,我之所以对博客有些热衷是因为markdown的实用性,简洁性以及兼容性。可我至今为止也没有找到一段时间是非常想积极主动敲代码的。可以说,积极主动在我身上是间断性的,大概只有在写博客技术含量很低,没有素材时才会去主动敲敲代码,不然的话就一直按着教学进程走了。
对于教材实践,我觉得和阅读源码的过程差不多,参考课本上的代码的时候,多去想思路和设计原则。不论是看那本书都一样,不需要逐字逐句地阅读,可以先从代码设计入手,当然这只是我的个人观点。举个例子:本学期的实验我有几个不会做,就借来几本书阅读相关内容,主要看的就是代码思路以及分析过程,尤其是对于数据结构,这样就可以使你尽可能快地理解这部分内容。除此之外,遇到的问题要及时记录,这可能是我在实践方面积累的唯一经验,还是很老套的 (;¬_¬)。
课堂项目实践
1.课堂实践链接汇总:
-
第三周 蓝墨云班课 算法复杂度练习:根据题目设计简易算法,分析时间复杂度;
-
第三周 蓝墨云班课 泛型类-Bag 练习:继承接口类,实现泛型类,并对方法进行测试;
-
第六周 蓝墨云班课 队列课下作业:用队列(链队,循环数组队列)实现模拟票务柜台排队功能;
-
第六周 蓝墨云班课 队列加分项:用循环队列打印杨辉三角;
-
第十周 蓝墨云班课 十字链表:画出有向图的十字链表;
-
第十二周 蓝墨云班课 hash:画出hash函数用开放寻址法和拉链法得到的存储状态。
2.课堂实践对提高应用能力有帮助吗?
肯定是有帮助的,有的时候可能会因为没有认真听课,或者没有预习到位,或者缺少实践能力而导致在课堂上不能按时完成实践。虽然拖到课下完成需要消耗更多精力,但是不论怎么样我都学到了,详细记录自己实践的过程也是一种乐趣,每次自己做出实践的那种成就感大概可以和我发表一篇满意的博客时的成就感相媲美,所以课堂实践不仅起到了督促的作用,也可以增加我们学习的动力,前提是自己尽可能独立地完成了这个实践。
3.课堂实践上自己有什么经验教训?
上一个问题中有提到在课堂上不能按时完成实践的原因,所以想要高效地完成课堂实践首先就需要认真听讲,不管老师讲什么,有些同学觉得老师讲的少可是课堂上也没怎么听,有的时候可能老师布置的实践和讲的内容不太相符。但不论怎样,我们都应该尽力尝试,并尽可能独立思考。像 泛型类-Bag 练习 我就是独立思考完成的,虽然没能在课堂上完成,下去花了将近一天的时间,但是我至今仍然能感受到当时茅塞顿开的欣喜。
4.课堂实践上对老师有什么教学建议?
大体上挺好的,只是有时候布置了一些与讲述内容不太相关的实践,导致我们有些无从下手,当然从个人的角度考虑,是我没有做好预习工作。除此之外,希望课堂实践的频率能均衡一些,这学期有的时候一节课两个实践,有的时候一两个星期没有一次实践,我觉得平均一个星期一个 代码实践 比较合适,其他的课堂小测,画个图什么的可以随时安排,这一点老师做得很好。
课程收获与不足
1.自己的收获
首先谈谈课程收获,学到了数据结构的知识,也了解了一些数据结构在各个领域的运用。数据结构的代码实现是个体力活,更是个脑力活,不论怎样我也掌握了一部分。对于本学期讲到的各种算法,二分查找和线性查找和一些基础的排序算法算是比较熟悉了,团队的合作项目让我了解到一个软件的发布流程原来这么麻烦,却又这么充实。
其次说说其他方面的收获,因为团队博客有涉及到一些工具软件的使用,我在使用一些工具时也收获了一些经验和使用技巧,在和团队协作的过程中也有从团队的其他成员那里学到一些优秀的品质。他们的那种做任何事都一鼓作气的氛围感染了我,也偶尔带动着整个团队,不论我们的项目做得怎么样,我们都尽力了。并且我可以保证我们团队是累积贡献量和收获量最多的团队。
除此之外,我体验了一年的“做中学”,在代码上的感触之前有提及, 泛型类-Bag 练习 这篇博客足以说明“做中学”的价值。在不断查找资料的过程中,我的“搜商”也有提高。除了将一些 做的时间 运用在代码上之外,我还将较多的时间运用在了博客上,为了使博客尽可能地呈现出精美的效果并且要与选择的模板相映衬,每次有时间逛博客园时,我都会去额外地了解其他的一些语言(比较基础),并做出各种尝试,每次看别人的博客时,总是不忘看看排版格式。现在,我可以自己设计markdown三级标题的效果了。有的博客侧边栏也很丰富,我的侧边栏原来也挺丰富,现在觉得写博客有时不应该太分心,所以只留下了一个,其他的都去掉了。
2.自己需要改进的地方
首先还是多思考,多把时间花在自己相对弱的地方。学习任何技术都需要持之以恒,代码这东西不能断,时不时练一下是很有必要的。博客也要认真对待,我打算一直写下去,以后的频率大概是一个月一篇。此外,我需要特别训练一下自己的专注力,可能是因为我有一些完美主义倾向,导致做什么事注意力都有些分散,从而导致了很多事都是拖延完成的。
3.结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议.
结对学习情况属实,上学期,我主要接受队友张旭升的帮助。这学期,我主要帮助了我的结对伙伴 —— 莫礼钟,在此期间大概每周都会花1~2个小时结对,主要讨论一些本周讲过的内容。在学习数据结构的时候,每周老师都会讲一个数据结构,有时候莫礼钟遇到不太熟悉的方法会主动问我,而我如果熟悉这个方法,可以再回顾一遍。如果不熟悉,就会先看一些资料,或者思考一阵,然后再和莫礼钟讨论,代码方面主要是他的前结对伙伴杨京典和我共同帮助他,理论内容我们可以一起讨论。后期讲到关于图的算法时,他也有主动给我讲过自己的思路,有些问题很基础,有些问题值得思考,同时也让我更了解他。
莫礼钟本学期的学习状态不好,主要是因为太沉迷游戏,但是他与生俱来的幽默感也为我和他相处的过程增添了很多乐趣。可能大学的学习制度确实不太适合莫礼钟,我觉得他比较适合做演员。当然,他对待我出门门票上的问题还是比较负责的,也会偶尔展现一下自己在学习上优秀的一面:http://www.cnblogs.com/Mosemonkey/p/8001732.html 这篇博客,值得表扬。
结对这件事,我想说老师的初衷是好的,但是到目前为止,能够真正参与的同学越来越少,我知道结对的重要性所以落实了,但是可能有的同学即使知道重要性还是觉得没有必要,或者其他的一些原因。所以建议可以把结对设置为加分项目,如果两个人每周的结对都有落实,都有总结,可以考虑适当加分。
问卷调查
1.你平均每周投入到本课程有效学习时间有多少?
没有实验的话大概每周12个小时,有实验大概每周18小时,中间的时候加入了团队项目,因此每周要花费20多个小时,后期学完课本、做完前四个实验后相对轻松一些,下降到每周12小时。总的来说,平均每周投入18小时,有效学习时间 大概有6小时。
2.每周的学习效率有提高吗?你是怎么衡量的?
应该有一点提高,因为这学期我们团队的博客由我负责,所以每周的博客任务有增加,我就不得不减少完成每篇博客的时间,虽然个人博客质量有些下滑,但是总体看来,写博客的效率还是提高了一点。除此之外,在查找资料时,感觉我的“搜商”也有提高,从而提高了一点学习效率。
3.蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
蓝墨云班课上可以时时刻刻监督我有没有学习,从这学期新增加的机器人“小蓝”每周都会按时向老师和我们汇报上周的学习情况之后更是如此,同时也增加了一些趣味性。对于老师,蓝墨云班课是教学的好助手,但是对于一些学生可能就不是这样了。虽然有的学生很排斥这种使用APP管理学生的教学方式,但是我并不反对这种方式,通过排行榜中的经验值随时督促自己,我觉得这是一种不错的学习方式。偶尔翻看一下课程圈,看看其他大学学生们的生活,同时还可以加入其他大学老师的一些班课,这个设计确实不错。
不过我有时会过度频繁地翻看这个APP,生怕错过什么活动。所以建议老师除了上课发布资源之外,可以在每周找一个固定的时间一次性地将本周的资源、活动发布完。
4.你觉得这门课老师应该继续做哪一件事情?
继续课堂实践,写博客,课堂上的随时随机提问也可以继续。
5.你觉得这门课老师应该停止做哪一件事情?
停止出门门票的设定,结对编程或者团队项目,留一个认真落实就好。
6.你觉得这门课老师应该开始做什么新的事情?
(1)考虑到结对的效果,建议可以把结对设置为加分项目,如果两个人每周的结对都有落实,都有总结,可以考虑适当加分;
(2)写博客这件事是要坚持做下去,但是建议把每个人写博客的频率控制在一周最多一篇,我的意思是有实验的时候可以取消本周的总结博客,如果有同学因为课堂实践项目没有完成需要下去补博客,那么可以让他在本周的任务博客和实践博客中选择性地写一篇,写的一般就过了,写的好就加 0.5 分,如果一篇都写不好可以适当扣分。博客一定要重质,有时候一周有一篇团队博客,一篇实验博客,一篇个人总结博客,一篇实践博客,结果 4 篇中有 2 篇都写得匆匆忙忙,质量真的不敢保证。一旦“不重质”的习惯养成,是很难再写好博客的!
(3)建议老师可以每隔一星期抽出一些时间 当面 解答一下同学们在学习课本内容时,或者在云班课做每周测试时遇到的问题,注意是问学生而不是直接选择错误率高的讲解。翻转课堂的缺点就是师生间面对面的交流太少,这样难免会间接地增加学生和老师之间的隔阂,比如说上学期在博客园小组、云班课上问问题的同学挺多,而这学期几乎无人通过网络提问,有问题也是当面解决。不论怎么说,面对面交流的过程在我看来非常重要,所以希望娄老师能增加和 大部分 学生交流的次数。
(4)如果团队项目能够继续开展,建议老师在布置团队任务的时候提前说明一下一些工具的使用、XXX图怎么画(比如说架构图)等。有的时候完全借鉴其他大学软件工程发布的任务确实有些不适合我们,比如说这次 Alpha 冲刺阶段匆匆忙忙做了 7 天,并且在 Alpha 冲刺阶段之后就没有其他任务了?我大致观察了一下,除了我们小组之外其他组的博客 当天 好像没有一个按要求写全的。所以希望老师在发布团队任务的时候也能像发布个人任务一样,仔细考虑一下我们是否有能力完成,是否有足够的时间完成,是否需要一些软件工程方面的指导等。
(5)如果团队项目能够继续开展,希望老师能够将判断成绩的标准再“过程化”一些,仅凭借 Alpha 阶段的一次展示说明不了什么,只是一个结果而已,何况又只是个人展示。首先在Alpha阶段之前做了很多准备,这些过程有没有及时记录、团队每个成员是否都对此项目有了解,等等,可以从这方面来衡量比较全面。最后一次课说是要答辩,但是真正实行的时候却只是一个人汇报成果?!如何确保其他成员对团队项目有了解,我想这个过程才是最重要的,如同“做中学”,所以如果团队项目能够继续开展,建议每周任选一个组员对照博客或者代码做一下汇报。
你如何评价出门门票和做笔记的要求?
我开始是支持这个要求的。但是后来感觉有些形式化。做笔记的初衷是没问题的,出门门票的初衷也是没有问题的,关键在于方式,这种出门门票的方式和规定(康奈尔笔记法、按时交)可能只适合少部分同学,但是另外一部分同学可能会感觉到极度的不适应。但因为这是个加分项目,或者说没交笔记要扣分,所以只能强迫性地做好笔记,哪怕牺牲了一部分听课时间。用这种方式确实可以做好笔记,但是会有多少人下去看这份笔记呢?做笔记可以定期抽查,不一定要用这样一种强制性的“扣分”方式。
这种方式让我想到学校之前规定的跑操。老师支持这个政策,我开始也支持,可是结果怎么样呢?大部分同学都不适应,跑操的时候开始都挺守纪,两个星期之后,2系一共 90 多人,为什么出席跑操的人数越来越少呢?为什么坚持跑完 3 圈的人从最初的几十个人减少到只剩 5、6 个人了呢?可能一些同学不想在早晨运动,觉得上课会困。而我之所以不反对跑操是因为我一天运动的时间很少,跑操可以强制性地增加我每天的运动量,但是对于一些习惯在其他时间段运动的同学就不一样了。“放手机”政策也是同样的道理,现在外面的手机柜一节课大概只有那么2、3个非空吧,少数同学支持这些政策并可以认真履行,但是对于大部分同学不适用,是不是应该考虑取消这种方式,或者换一种方式呢?
对于做笔记,不一定要用康奈尔笔记法,每个人都有自己的方式,还有每次的问题和总结,建议把这个留到课后做,赶在下课之前交最多只能保证笔记质量,提升不了学习效果,所以换一种方式,可以定期抽查课本或者笔记,不一定是每节课。不过结对伙伴互相解答问题的这个设计很好,可以继续保持。
对王志强老师的工作给予评价或建议
王志强老师担任了我们课程一年的助教,工作负责,亲和力强,本学期为了计算我们的成绩花费了大量的时间和精力。说实话,我以前觉得量化成绩是一件挺简单的事,直到我亲自计算了我们小组成员的成绩之后,第一次是在Alpha冲刺阶段后期,当时完成表格后我的内心是崩溃的:
这张图我做了足足几个小时,主要考虑了贡献量的计算规则以及各种因素,最后相对合理地计算出结果,每日的贡献量是从每篇冲刺博客中依次检查核对过的。除了这张表之外,我还在小组成员贡献量汇总这篇博客中计算了每个成员的总贡献比例,博客写了将近一天,下面这张表我做了有半天时间:
这张表的markdown真是眼花缭乱,然而我们团队只有 6 个人,而我们班却有30个人,而需要计算的成绩包括每周课下测试、博客加分、实验、课堂实践、出门门票等,看看 这篇博客 大致就能体会老师的工作量之大,对于一些大项目(比如实验),还需要更细化地计算分数,真是要算分算到爆炸:
除了算分数之外,王志强老师还针对我们每周的总结博客以及实验博客做出了总结,每次总结他都会把这次的问题一一列出来:
此外,点评博客、批改博客、批改蓝墨云班课中的活动也由王志强老师负责,虽然有时批改博客有些拖延给某些同学留足了补博客的时间,但是能够遇到在教学上这么用心的助教,我觉得很幸福。唯一的一点建议就是评分机制可以再完善一些,开始就规定好,这样也不至于总是改来改去太耗时。
本学期团队项目的感想、总结
对于团队项目,令我印象最深刻的是Alpha阶段,以下是我对Alpha冲刺阶段的感想,选自:【Alpha版本】冲刺阶段 - Day7 - 靠泊
Alpha 阶段是什么,在上周一早上看到这样一个任务之后,我产生了这样的疑问,于是查了查资料,看了看《构建之法》,大致了解了。我又看了看具体的任务,哇!竟然要在两周内冲刺7天,我迅速通知团队并且当天就制定了计划,在第一次冲刺会议上也给组员做了相关介绍。其实我们本来打算从上周一开始冲刺,但是当时我考虑到计划得不完整,准备得也不充分,因此就特意花费了一天时间来准备冲刺,周二才正式开始。在这冲刺的7天中,由于我充当了我们团队的管理者、会议策划者、分工策划者以及整理博客者这个多重角色。想要做好这个角色,尤其是管理整个团队、推动整体进程,确实不太容易。对于我们这所学校的这个专业,想要模仿软工团队做一个项目还是一件挺有挑战的事,但是我就喜欢这种挑战,新鲜、刺激、前无古人,如果能够带领一个团队前进,并不断取得一定的成就,这种感觉在大学中比一些功利性的东西更为重要和真实。最初可能是受到团队中袁逸灏和刘先润的影响,我的拖延症稍微好一点了。转眼间,我们这个团队已经成立2个多月了,团队中谁做事积极我最清楚,因为每次的团队任务都是我来汇总,所以这也是一个向其他组员相互学习的机会。
不由自主地扯了一些团队之前的情况,接下来回归正轨,说说 Alpha 阶段的事。在这个阶段中,我们一次次地商定计划,一次次地磨合计划,虽然在这个过程中有一些组员划了几天水或者承担了较少的任务,但是在我的催促下,都能够以端正的态度对待团队任务。在冲刺的7天中,我几乎每天写博客或者感到无助时都会去反复查阅其他大学的博客,在看懂了一些流程之后才去决定组员们每天的任务,每天应该提交什么,在做这个任务时要注意什么,每次指定分工或者召开会议都是一次经验,这7天,我们 实打实地 开了7次站立式会议,虽然有一两次会议有些混乱,但是每次会议的大体内容我都讲到了。每次会议我是有提前准备的,只有准备好讨论内容,站立式会议才有效率:
(请自动忽略我字迹潦草的问题,毕竟这是草稿纸)
其实我们团队的每次会议都是比较轻松的,讨论前,人没到,就先吃点零食,等待一会。人到齐了,还要拉一个拍照的人,我们团队的大部分会议是在寝室开,有一次是在实验室开的,所以在这里要感谢之前给我们团队拍照的春旺,张旭升和张师瑜。
说完了小组会议,再来说说分工问题,我们团队这次的分工情况不太合理,主要因为我没能考虑到一些情况,本来想要全组的人都了解代码的,结果之前的测试规范没完成,就指定了一个测试组(2人)完成,另一人基础不太好,所以开始就分配了 2 人负责代码工作,没想到测试组的规范写了 7 天,这之中我也了解他们的困难,主要是测试方法和测试工具的选择问题,这些问题没能得到及时的讨论解决,加上 alpha 阶段的主要任务没有集中在测试这方面,才会一直拖延到后期,测试组最终的测试规范质量较高,参考了挺多的资料。所以整个 alpha 阶段,我们组只有 2 个人在负责代码工作,到后期我才意识到不合理,于是我也开始抽时间弥补Android基础,这几天又建议组员再看看代码,建议莫礼钟借几本书弥补代码基础。总的来说,Alpha 阶段的分工由我负责,我这一次做得不太好,没能让全组成员都适当参与敲代码工作,大致的分工泳道图如下:
最后总结一下我们在Alpha阶段的项目,基本功能已经实现,虽然是小游戏,但是真的耗费了相当多的精力,袁逸灏为代码熬过一次夜,我也曾经为了尝试码云上“奇特”的markdown格式熬过夜,我们都是为了团队,虽然组员们没能全部参与代码工作,但是项目的commit推送还是挺积极的,目前为止我们的项目一共有 266次 commit 提交记录,每次说明书修改图片,或者加一行功能说明等等,组员在这件事上比较积极,我们6个都参与了进来:
我因为不断尝试markdown格式和整理md文件内容所以推送次数较多,袁逸灏和刘先润大部分是每次的代码文件推送,马军、刘诚昊负责测试规范等内容,莫礼钟也在我的监督下为团队commit了一次,继续努力。在博客方面,我也体会了一次两周写 8 篇博客的爽快感,我还特意根据我们团队的进度添加了后缀名,具体为什么是这个后缀名读了每次的会议总结就会知道:
总之,在这样一个过程中,包含着奋斗的经历、熬夜的经历、一次次开会讨论的经历,当然还有几次划水的经历,拥有如此丰富经历的团队留下了一段值得回忆的光辉岁月,虽然和其他大学的软工团队相比还有一定的距离,但是我们坚持不懈,能够一次次进步,而且组内总有一些优秀的人积极地带动起在电科院难得的活力和气氛,这也算是一次过程的享受吧。
我们小组的每一篇博客,我都倾注了很多时间整理,看得出来,其他组员们也是很用心的。因此不论最终结果如何,我们是在认认真真地体会这个过程。
后记
《程序设计与数据结构》课程到此告一段落,我当然会有些不舍,感谢娄老师、王志强老师两个学期的辛勤付出,其实我对娄老师还是有点敬畏的。不论怎样我都想说,娄老师的教学方式是很先进的教学方式,同学们口中的抱怨往往只是偷懒和不想尝试、不想改变的借口,如果适用在其他大学,可能效果就不一样了。总之,在教学上我是一直支持娄老师的,虽然娄老师也有一些不合理的做法,但是娄老师在不断地尝试和改进。我始终坚信:严师出高徒!这一年来,“得到APP”是您推荐给我们的,“做中学”的方式也是您提倡的,给同学们请最好的助教、花钱请我们阅读吴军的硅谷来信、在课堂上分享您听过的书、认真对待教学博客,一点一滴都可以看出您的良苦用心,您总是想让我们学得更多更好,这种程度的用心远远超过了其他老师,人生中总有几位老师让你感激不尽。所以看到这里的同学,如果你在大学中有幸选到了娄老师的课程,希望你一定用心去对待。