SA17225237 骆祯梓
原创作品转载请注明出处
《软件工程(C编码实践篇)》MOOC课程
http://mooc.study.163.com/course/USTC-1000002006
学习心得
本学期非常荣幸的选上了孟宁老师的高级软件工程,相比于之前上过的课,本门课程配套了这一个线上课程,并且还有实验,觉得这种模式才是大部分计算机专业课应该效仿的,就像老师课上说过的,如果是传统的课堂授课模式,那跟上政治课没什么区别。
在这次线上课程中,我熟悉了 Linux 开发环境以及 git 的使用,了解了代码规范的意义以及具体规范,学习了模块化、接口化、回调函数、线程安全、可重用设计等丰富的内容,课程时间虽然不长,但内容确实是干货满满的。
历次实验
实验一:写一个 hello world 小程序
- 实验报告:https://www.shiyanlou.com/courses/reports/1290236
- 实验代码:https://github.com/LuoZhenzi/SE/tree/master/lab1
- 实验收获:在本次实验熟悉了 Linux 命令行环境下的操作,以及 git 的基本操作,这些在以后的学习工作中都会有很大的用处。
实验二:命令行菜单小程序 V1.0
- 实验报告:https://www.shiyanlou.com/courses/reports/1291798
- 实验代码:https://github.com/LuoZhenzi/SE/tree/master/lab2
- 实验收获:本次实验规范了自己的代码风格,进一步熟悉了 git 操作和 Linux 命令行环境。
实验三:内部模块化的命令行菜单小程序 V2.0
- 实验报告:https://www.shiyanlou.com/courses/reports/1293030
- 实验代码:https://github.com/LuoZhenzi/SE/tree/master/lab3
- 实验收获:通过本次实验,学习到了代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储。
实验四:用可重用的链表模块来实现命令行菜单小程序 V2.5
- 实验报告:https://www.shiyanlou.com/courses/reports/1295855
- 实验代码:https://github.com/LuoZhenzi/SE/tree/master/lab4
- 实验收获:这次实验中,我们设计了一个接口规范、通用的模块,并将它集成到我们的程序中,使得程序更加的模块化。
实验五:用 callback 增强链表模块来实现命令行菜单小程序 V2.8
- 实验报告:https://www.shiyanlou.com/courses/reports/1298572
- 实验代码:https://github.com/LuoZhenzi/SE/tree/master/lab5
- 实验收获:这次实验中,我们学到了如何使用 callback 函数使得接口更加的通用。
实验六
- 这一周的课程学习的是函数的可重入性和线程安全的内容,只有一次随堂测验,没有进行实验。
实验七:将 menu 设计为可重用的子系统
- 实验报告:https://www.shiyanlou.com/courses/reports/1303767
- 实验代码:https://github.com/LuoZhenzi/SE/tree/master/lab7
- 实验收获:在这次实验中,我们为 menu 子系统设计接口,并编辑了 test.c 文件来实现原来的功能,在编译过程中,我们使用 make 和 make clean 来编译程序和清理自动生成的文件,避免输入冗长的编译命令,提高效率,在 test.c 中,我们自定义了带参数的命令,学习到了命令行参数的用法。
学习总结
时间过得很快,短短几周的学习马上就要结束了,作为本科非计算机方向的学生,这门课程对我的帮助非常大。
在这几周的课程中,我感觉自己真正开始入门了软件工程这一学科,在之前的学习中,我关注的仅仅是怎么样编写代码来实现某一目的,殊不知这种程度距离软件工程的要求还离得很远,在学习了这门课程之后,我明白了软件开发不仅仅是要实现某一功能,还要求我们在编写代码时注意代码的规范,在软件设计的过程中注意模块化、接口、信息隐藏、增量开发、抽象、一般化等原则,这对于今后的学习工作都有着深远的意义。
然而,课程时间确实也太短了,再加上自己并非科班出身,感觉自己对软件工程这一学科的了解只是冰山一角,自身基础的薄弱也导致了自己对很多东西学习的并不透彻,希望在今后的学习工作中能够继续加强自己的能力。
最后,感谢孟宁老师在本学期对我的帮助。