蔡永强+原创作品转载请注明出处+《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
一、学习心得
为期10周的软件工程课程落下了帷幕,回顾这段时间的学习经历,感慨颇多,奈何碍于工科生的表达能力限制,实不足以将所有感受全部转为文字,因此有不足之处还请诸位看官多多担待。
我是一个跨专业的学生,因此对于软件工程本身是陌生的,对它的认知还停留在单纯写代码的阶段。但是经过孟老师这种线上线下结合的教学之后,我对于软件工程的认知提高了一个层次(至少我自己是这么认为的)。
软件工程是什么?但凡所以以工程命名的课程,最后的目的都是回归工程本身。当我们编写一个软件时,它不同于以往我们编写一个c程序,可能代码就寥寥数百行,大多数软件的代码量都在数万、十万甚至百万以上。这样的代码量显然不是一个人能完成的,因此,需要一种工程化的思想来指导人们编写软件,指导各部分以及各成员之间相互的合作。软件工程就是这样一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
回归到课程上来,线上主要是从基础的代码和概念写起,层层推进,最后完成了一个稍显稚嫩但却运用到了很多软件工程思想的menu小程序。线下主要是讲解软件工程的核心思想和框架,并结合线下的实验来理解并运用这种思想。好的软件讲究代码的规范、设计的规范、模块化的思想以及线程之间的安全和子系统接口的重用性等多个方面的内容。这绝不是一朝一夕就能吃透这些思想并运用到工作中去的,需要我们不断的积累,当代码量达到一定层次时,再回过头来看我们学过的这些内容,收获一定会更多。因此我觉得这门课是一个很好的引导课程,引导我们打开软件工程的大门,用工程化的思想去编写软件,当我们工作时也能更好的上手公司的项目。
二、实验报告汇总
第六周的课为在线测试,因此没有实验报告。
实验一:写一个hello world小程序
https://www.shiyanlou.com/courses/reports/1290169
实验二:实验二:命令行菜单小程序V1.0
https://www.shiyanlou.com/courses/reports/1291465
实验三:内部模块化的命令行菜单小程序V2.0
https://www.shiyanlou.com/courses/reports/1293565
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
https://www.shiyanlou.com/courses/reports/1296166
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
https://www.shiyanlou.com/courses/reports/1298949
实验七:将menu设计为可重用的子系统
https://www.shiyanlou.com/courses/reports/1304260
三、总结
自打这门课开始的两个月以来,由于自身代码基础薄弱,所以几乎是在磕磕绊绊中学习,编程能力的提高和预期存在落差,不过仔细一想也是,软件工程是工程化的学科,所以动手能力永远是摆在第一位的,我不可能仅仅依靠两个月的学习去抹平和别人四年的差距。抹平差距的唯一办法就是不断的自我学习进步去缩小它,现在网络资源这么丰富,因此我有很多的机会去提升自己,对于自我学习能力的培养我想也是孟老师着重想向我们传达的吧。
总的来说,《软件工程(C编码实践篇)》这门课主要阐述的是代码设计规范和模块化。规范设计包括:1)KISS原则,一个方法或者函数只做一件事情;2)遵循“不和陌生人说话”的原则;3)学会用数据结构、控制结构来简化代码;4)要有错误处理机制。模块化则讲究的是写代码要遵循高内聚低耦合的原则。
很高兴能有机会学习这门课程,也感谢孟老师和线下的两位助教老师的辛勤付出,是你们的指导,才让我们有这么良好的学习机会和氛围。最后套用一句屈原的话,“路漫漫其修远兮,吾将上下而求索”,愿你我共勉。