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

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

课程页面

我觉得本门课程的设置非常科学,每一周课程都是基于上一周课程的进一步抽象,使得学习者能够循序渐进,逐渐加深对软件工程的理解。

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

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

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

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

时间: 2024-08-02 11:02:45

软件工程(C编码实践篇)课程总结的相关文章

软件工程(C编码实践篇)学习小结

陈康荣  +<软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 学习心得: 转眼间,软件工程这门课程就要结束了,忽然有种怅然若失的感觉.刚开始接触这门课的时候,感觉仿佛置身于知识的海洋,如鱼儿一般畅快遨游:置身于学术的天空,似鸟儿那样自由飞翔:置身于代码的花园,像花苗一样汲取阳光.人生有幸,得遇良师. 实验报告: 实验一:写一个hello world小程序https://www.shiyanlou.com/c

网易云课堂-软件工程(C编码实践篇)

网易云课堂-软件工程(C编程实践篇) 识别代码工程质量: 代码风格: 封装接口: 可重用代码: 可重入函数和线程安全: 代码风格的原则:简明.易读.无二义性:代码风格原则在团队交流过程中非常重要.

软件工程(C编码实践篇)课程总结——我的第一次代码实战之路

课程内容来自网易云课堂-软件工程(C编码实践篇)--中国科学技术大学孟宁老师主讲! 作者:魏红 魏红<软件工程(C编码实践篇)>MOOC课程作业http://mooc.study.163.com/learn/USTC-1000002006 一.心得体会 在写这篇博客时,我的心情不是想象中的如释重负,而是感慨和激动.作为一名理科生,代码对于我来说,陌生.遥远.不曾触及,所以当我开始接触到实验,需要自己动手的时候,我就崩溃了.哪怕是最简单的hello world小程序,我都折腾了好久,第一次的实验

记一次网易云课堂MOOC课程学习经历——《软件工程(C编码实践篇)》

刘东晓 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 一.对课程的简要理解 正如计算机业内的一个非常经典的等式所言: 程序     =算法+数据结构 软件     =程序+软件工程 软件企业    =软件+商业模式 现代软件企业的成功离不开优秀的软件以及杰出的商业模式,同时,作为企业运营核心的软件亦离不开软件工程的指导. 作为商业软件而言,程序是软件的"内功&q

高级软件工程(C编码实践篇)--心得

吴松泽 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 1.心得体会: 跟随孟宁老师学习了软件工程mooc这门课程,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合.整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想.是一个如何去分析和处理问题的过程,应该说其范畴已经远远

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

By: 吴倩+ 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 一  对代码层面的软件工程的理解及学习心得体会 通过<软件工程>这门课的学习,使我认识到软件不仅仅只是逻辑的代码实现,更是使软件变得具有更好的功能,更健壮和具有更好移植性的一个工程.同样一个问题,有的人可能是用数据结构做逻辑控制,有的人用ifelse来做控制.不同的代码实现会导致不同的执行结果和执行效率

软件工程(C编码实践篇)学习心得

孟繁琛 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 软件工程(C编码实践篇)是由中科大孟宁老师在网易云课堂上发布的一门关于学习软件工程开发思想的实践性课程,整门课程循序渐进的从一个helloworld小程序做到一个线程安全并且可重用的menu菜单系统.课程主要通过网课加实验楼实验的方式进行,课程讲解内容轻松又不失严谨性,实验简单却又极具代表性.总之,整门课程基于一个m

学完《软件工程(C编码实践篇)》之后的总结

By: 纪*保*华 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 Part1  对代码层面的软件工程的理解及学习心得体会 作为一个此前未系统学习过软件工程的学生,在学习本门课程之前,对软件工程的印象仅仅是一本厚厚的教科书和枯燥无味的文字描述,就代码层面来说,也仅仅是停留在代码量和代码规范的浅显理解上. 在这两个月的学习过程中,从一开始的熟悉linux开发环境,到慢慢发现软

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

一个再天才的程序员,他的精力和大脑是有限的,不可能在很短的时间内构建出像office那样庞大的系统,这是软件工程就出现了,帮助众多的程序员协作,将程序转化成软件. 代码层面的软件工程,我想主要包括这几方面吧: 代码的可读性 代码的架构 代码的可维护性 代码的模块分离解耦性 代码的线程安全 代码的可读性可以用来给不同的工程师观看代码,易于别人理解自己协作的代码,所以可以通过遵循一定的规范编写代码来获取可读性. 代码的架构可以帮你易于维护,如果在设计上耦合度很低,一个函数只干一件事,一个模块只干一种