软件工程(C编码实践篇)课程总结

     课程内容来自网易云课堂中科大孟宁老师的软件工程(C编码实践篇)课程。linux

课程页面 git

     我以为本门课程的设置很是科学,每一周课程都是基于上一周课程的进一步抽象,使得学习者可以按部就班,逐渐加深对软件工程的理解。程序员

      1. 第一周:熟悉Linux实验环境;要求 实验一:写一个hello world小程序。编程

实验报告连接+git代码库连接小程序

     总结:hello world自己很容易,可是linux下工做方式和windows下彻底不一样,会给不熟悉linux的人带来很多问题。首先vi没有Windows下的IDE智能化,不能实时纠正语法错误,编译是会产生很多语法错误,须要细心调试。其次,linux的诸多命令和参数,须要更长时间练习操做才能熟练掌握。最后,初学者每每不熟悉git,须要必定时间研究版本控制系统。这3点是liunx初学者须要克服的困难。windows

      2. 第二周:代码风格规范;要求 实验二:命令行菜单小程序V1.0。安全

实验报告连接+git代码库连接 网络

     总结:初步接触了模块化设计思想,理解了代码风格的重要性,学会了将命令封装成函数供使用者调用。数据结构

     3. 第三周:基本的模块化设计;要求 实验三:内部模块化的命令行菜单小程序V2.0。多线程

实验报告连接+git代码库连接 

     总结:初步实现了业务逻辑与数据结构的分离,加深了对模块化思想的理解。并且此次本身作死创造难度,采用了AVL树作数据结构,static函数声明,函数指针作参数实现call -back;以及实现了在Windows IDE下编程,共享到Linux虚拟机编译运行,最后从本身的Vmware11的Ubuntu虚拟机向实验楼git代码。从而进一步提升了自身的水平。

     4. 第四周:可重用模块的接口设计;要求 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5。

实验报告连接+git代码库连接 

     总结:本次对于数据结构,我参考了Linux内核源代码中双向链表的实现,移植其功能接口集成到menu菜单程序中。而在Linux内核链表的设计中,为了达到最高运行效率,使用了宏定义和内联函数完成全部功能的设计实现,全部代码集成在其设计的接口头文件中。Linux内核源代码博大精深,其通用的设计思想和高效的实现方式,值得C/C++程序员认真阅读,即便不去作内核相关的工做,阅读精彩的代码对程序员自我修养的提升也是大有裨益的。

     5. 第五周:可重用模块的接口设计(callback函数);要求 实验五:用callback加强链表模块来实现命令行菜单小程序V2.8。

实验报告连接+git代码库连接  

     总结:本次实验经过Debug调试的使用加强了代码调试的能力,利用函数指针参数化上下文,以最小化信息隐藏的标准,设计了更加 通用好用 的API接口。

     6. 第六周:函数的可重入性(reentrant)及线程安全浅析;本次没有实验,老师主要介绍了多线程编程和线程安全方面的知识。

     总结:多线程编程和并行编程是将来技术的发展趋势,尽管这方面的内容博大精深,但倒是一个优秀的软件工程师核心竞争力的体现。关于这方面知识的进一步学习,我推荐2套最新更新出版的经典书籍:《Linux/UNIX系统编程手册》和《UNIX环境高级编程(第3版)》。我认为若是掌握好这2套书的内容,将会在技术竞争力上有绝对优点。

     7. 第七周:子系统的可重用设计;要求 实验七:将menu设计为可重用的子系统。

实验报告连接+git代码库连接 

     总结:本次实验难点在于Liunx系统函数getopt的理解和使用。getopt自己参数众多,难以理解,极易用错。作为最后一次实验,综合了前面所学知识,完成目标须要全面设计和仔细分析调试。

     8. 第八周:代码背后的设计思想;本次没有实验,老师主要总结了前面的课程,论述了软件工程的一些理论知识。

     总结:本次课程主要讲述了 不一样的质量视角,各类设计方法论,和几个重要的设计指导原则;为进一步学习后续课程打下良好的基础。

     经过一学期的学习,使得本身对软件工程有一个初步了解和认识,找到了进一步提升能力的方向。回想起一学期的历程,最大的收获是:抽象能力的提升和模块化思想的实践。很是期待软件工程系列课程的 后续2门课程。最大的遗憾是课程时间比较短,不足以深刻学习多线程编程方面的内容。这方面网络上视频稀缺,而书籍比较晦涩难懂,自学难度较大,期待老师之后有时间能制做多线程和并行编程方面的课程。

     真实姓名:薛镇(与最后申请证书的姓名务必一致) + 原创做品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

相关文章
相关标签/搜索