谢志强 _ 原创作品转载请注明出处 _ 《软件工程(C编码实践篇)》_ MOOC课程http://mooc.study.163.com/course/USTC-1000002006
本科学习的是计算机科学与技术专业,然后通过考研来到中科大攻读软件工程专业学位。本科因为是计算机科技专业,学的东西比较广泛而又偏重理论方面的知识,也选修了软件工程这门专业课。但是本科阶段多是学习理论知识,缺乏必要的变成实践能力。来到中科大之后继续选修了“高级软件工程”这门课,比本科的课程高了高级“”两个字,两个多月的学习之后,的确也让我学习到了这门课高明之处。
历年来的学习资料可以在孟老师的主页(http://staff.ustc.edu.cn/~mengning/)看到。高级软件工程这门课主要分为线上线下两个环节,教学的详细步骤可以参见(https://coding.net/u/mengning/p/mengning/git/blob/master/ase/ase2017fall.md)。线上过程以在线MOOC方式授课,我们和社会上的学习者一同学习,线上成绩最后会根据网易云课堂昵称来统计。这门课程主要实验都在Linux环境(我们可以使用自己的linux环境或实验楼)下演示,如果之前从来没有接触过Linux系统或者不熟悉Linux Shell的基本命令,可以通过参考http://www.cnblogs.com/laov/p/3541414.html来获取linux学习的基础知识。
这门课可以说是我来中科大这两个月以后学习最充实收获最多的一门课程,在这门课程里,更加加深了解了linux一些基本命令行操作,对linux下编写开发C语言程序了解更加深刻。整个实验以实现命令行菜单程序为主线,从编写hello word一步步深入学习不断完善命令行菜单。
以下是我历次实验总结报告、实验代码以及github地址:
实验一:写一个hello world小程序。了解实验楼的操作指南、linux基本指令并实现hello world小程序。git clone “github网址”将github克隆至实验楼本地,cd 进入版本库,mkdir创建一个文件夹,vi 创建程序文件,i 进入insert编辑模式,Esc 退回到一般模式,在一般模式下“shift + ;”然后 wq 操作写保存并退出。完成代码后在文件夹下 git add “...”添加需要上传的文件,然后 git commit ,git push,打包上传本次实验代码进 github。这是每次实验的基本步骤。可以说是每次必须经历的步骤。
实验报告:https://www.shiyanlou.com/courses/reports/1290204
github地址:https://github.com/tianxieeryang/hello-world/tree/master/lab1
实验二:命令行菜单小程序V1.0。实现一个命令行的菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,实现的命令个数不少于8个;类似ftp的help目录或者bash的help目录;程序循环、接收用户的命令,如help、others等命令;可以广泛通用的命令行菜单子系统组件,可方便地定制而嵌入到其他系统。
实验报告:https://www.shiyanlou.com/courses/reports/1290929
github地址:https://github.com/tianxieeryang/Command_line
实验三:内部模块化的命令行菜单小程序V2.0。代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储。主要考察代码风格规范,借鉴代码设计规范的方法,代码的业务逻辑和数据存储使用不同的源文件实现,即有2个.c和一个.h作为接口文件。
实验报告:https://www.shiyanlou.com/courses/reports/1292699
github地址:https://github.com/tianxieeryang/Command_line/tree/master/lab3
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5。用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,链表模块的接口设计要足够通用,命令行菜单小程序的功能保持不变,可以将通用的Linktable模块集成到我们的menu程序中,接口书写规范。主要还是对代码的规范操作。
实验报告:https://www.shiyanlou.com/courses/reports/1295904
github地址:https://github.com/tianxieeryang/Command_line/tree/master/lab4
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8。本次试验主要学会使用callback函数参数使Linktable的查询接口更加通用,以及对接口的信息隐藏等相关操作。解决了老师遗留的bug,在lab4的基础上实验,通过callback机制使linktable具有通用性,同时隐藏接口的信息,使通用模块接口进一步得到保护。
实验报告:https://www.shiyanlou.com/courses/reports/1297145
github地址:https://github.com/tianxieeryang/Command_line/tree/master/lab5
实验七:将menu设计为可重用的子系统。为menu子系统设计接口,并写用户范例代码来实现原来的功能使用make和make clean来编译程序和清理自动生成的文件使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令,可以使用getopt函数获取命令行参数。通过写一个Makefile工程文件,来规范代码,Makefile文件以all开始,将文件的编译写入Makefile文件中,只需要在编译时执行make就行,使得代码更加灵活健壮。
实验报告:https://www.shiyanlou.com/courses/reports/1303528
github地址:https://github.com/tianxieeryang/Command_line/tree/master/lab7
以上是本学习两个月实验过程中线上课程的全部实验。线下课程的 vuex 学习不在本次博客的讲述之内。在本课程中学到了编码技巧,以及linux一些很实用的基本操作,对命令行的改进,callback机制的讲解是至今仍让我历历在目的一个知识点。
学习完的收获:孟老师讲课诙谐幽默,循序渐进,讲课很注重课程实用性,对于励志成为技术小咖的我来说还是挺受用的,毕竟选择计算机,从事计算机,编码能力肯定是第一位的。只有拥有规范的编码风格,实力强劲的编码能力使我们走出学校进入社会的第一把利剑。为以后的人生发展奠定基础。
学习完的遗憾:时间太少,两个月时间,只是跟着孟老师学了一点皮毛知识,希望今后能够多多加强。
最后,感谢孟老师两个月来的教学。收获甚多。
谢志强 _ 原创作品转载请注明出处 _ 《软件工程(C编码实践篇)》_ MOOC课程http://mooc.study.163.com/course/USTC-1000002006