中国科学技术大学

工程化编程实战

所属微专业:

图片
课程概述

十年磨一剑,本课程内容以孟宁老师十多年的学习、工作和教学的基础上创作而来,绝对原创!

深入浅出适合初学者,本课程内容作为MOOC课程《软件工程(C编码实践篇)》累计注册学员近两万人!

本课程由孟宁老师亲自批改作业和辅导。


原价888,学生特惠价388


购买成功后,请新浪微博私信@孟宁V5  获取学员QQ群号,备注“我已购买工程化编程实战课程,云课堂帐号是xxx昵称yyy”。


工程化编程实战强化实践能力训练,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计如callback函数和函数的可重入性(reentrant)及线程安全等较深入的设计问题;课程内容强化C语言编程实战,形成对软件工程直观感性的认识。


特色:强化实践能力训练,从实践中理解软件工程的思想方法。

受众:入门级程序员、蹩脚程序员、需要与程序员打交道的产品经理、项目经理、UI设计师、程序员老婆、程序员丈母娘等,以及希望找程序员蓝朋友的MM和GG


安装Linux系统做实验太麻烦?No,实验楼为我们提供了Web端可访问的虚拟机,立即去看看!



学员评价


  • 孟老师生动形象的课程让我受益匪浅。从一个简单的实例,循序渐进地以软件工程的知识武装起来。一开始以为,写出这样的功能其实并不难,不就是if else吗。后来才渐渐明白。软件工程,并不是把功能实现了才是软件。那只是一个开始。包括之后的模块化设计、可重用模块化设计,以及可重入和线程安全的设计等等,管窥全豹,可知设计一个合格的软件系统,需要考虑后续的许多内容。——面汤

  • 上完老师的课,学到了很多东西。自己大学里学的软件工程真的就是在背政治了。给老师赞一个!——匿名

  • 我们学校开的软件工程没有实践,仅仅是为了应付考试而背了一些东西而已,在老师的课上真的学到好多东西。——nenyagg

  • 这是我看到的第一个镜头动作感如此之强的公开课视频,镜头会在演示代码时飘移,特写,演示与讲解的镜头切换流畅,个人非常喜欢老师的视频风格。——匿名

  • 学习本课程的最重要的收获是模块化的思想。因为模块化思想伴随着整个项目的开发过程,而且在开发过程中要不断的重构项目,划分成不同的模块。模块划分的好坏会决定了整个项目的开发顺序,甚至影响到开发的进度。——gongfna

  • 果然深入浅出 —— 匿名

  • 从一开始的为完成老师布置的作业而学变为出于兴趣上的主动学习,孟老师教课灵活幽默,举一反三, 清晰明了,由浅入深循序渐进,不但让我从理论上掌握软件工程,还有从不同的实例和生活出发,让理论和实践得到了很好的结合。半个个学期下来,学到了很多东西的,有很多地方是值得肯定的 。孟老师的几句话让我印象最深:“要想成为码农中的高富帅,必须要用软件工程的思想、方法、工具、规范全副武装,其中至关重要的是武装头脑!”、“好程序员和差程序员的区别在于理解能力。差劲的程序员不理解自己做的事情,优秀的程序员则相反。信不信由你,道理就是这么简单。”、“写代码要小步快跑不断迭代,罗马不是一天建成的”。——cj19950317

  • 孟宁(@孟宁V5)老师的软件工程这个课程,主要通过7次小实验,完美的向我们展现了软件工程所要注意的各个方面,深入浅出,非常精彩。——znss2015 

  • 在对软件工程(C编码实践篇)的学习之后,通过代码的编写,我深刻的了解到了一段庞大的代码是怎样生成的。在学习初期,我们只要求编写一些简单的短代码,而随着学习的深入,我们将各个短代码整合起来,形成了一段较为庞大的代码。这不正是软件工程的精髓吗?通过课程的学习,不仅了解了编码编译过程,更可贵的是加深了对于软件工程的理解。——张博雅

  • 软件工程(c编码实践篇)是一个在代码层面学习软件工程思想的好机会。——刘渊458

  • 学习不是一蹴而就的,他是一个循序渐进的过程,这过程有煎熬,也有喜悦,编程是需要多练的,只有熟练,我们才能对于我们遇到的编程问题上手起来得心应手,真的很感谢这个平台,感谢孟宁老师给我们讲解我们所不知道的领域。——孙猛sm

  • 这门课程是从基础开始一步步叠加,慢慢深入的。实验先从最熟悉的hello word写起,当然,这个实验主要是让我们先了解实验环境,了解代码规范的一些基础内容,为后面的学习打基础。接着一步一步做实验,不知不觉将命令行菜单的一个小程序慢慢地变成了一个命令行的小系统,在这个过程中,我不仅仅规范了自己的代码书写,还学到了linux命令,markdown的书写,4空格缩进,变量名和函数名各种风格,{和}独占一行,且成对对齐,如何简化代码,如何保持设计与实现一致,如何设计规范的接口,如何让模块通用,如何提供皆空的同时隐藏信息,如何用makefile编译工程文件等等。这整个过程就在改变着我们原有的程序设计思维,让我们认识到软件是高于程序的存在。真是让我受益匪浅。——296720332

  • 几次实验做下来,感觉自己的知识水平上升了一个层次,编码技能也提高了,也了解到了代码背后的设计思想,绝对是受益匪浅啊。——摩羯zuo

  • 感觉通过这2个月的学习,掌握了很多以前不知道的知识,比如linux、git版本库、模块化设计等等,也学会了坚韧不拔地完成任务。孟宁老师睿智的思想和风趣独到的见解也给我留下了深刻的印象,还想继续学习孟宁老师的linux内核分析。——古剑长刀

  • 2个月的学习,网易云课堂孟宁老师的c代码实践篇让我对程序设计有了更深一步的认识,不只是像以前一样停留在如何写代码上,并且对与软件开发设计种种都有了一定的认识和理解。比如代码规范、模块化、代码可重用性、线程安全等等。孟宁老师的几句话给我留下了尤为深刻的印象:模块化、拿来主义、不要为了通用而通用、抽象能力是程序员的核武器。感觉老师的很多话对软件开发真是一针见血。——古剑长刀

  • 历经11周,软件工程(c编码实践篇)这门课程终于圆满结束了....这整个过程就在改变着我们原有的程序设计思维,让我们认识到软件是高于程序的存在,真的受益匪浅!!—— 。ykt1442456185134 http://blog.sina.com.cn/s/blog_13ae343b60102w49c.html

  • 为期七周的软件工程(c编码实践篇)》的课程很快就要结束了,在这短短的七周里跟这孟宁老师从最简单的hello world开始写,到最后可以把一个完整产品写出来,收获颇丰。孟宁老师细心的由浅入深的介绍了关于在c编码是需要注意的一些细节,不仅教我们怎样成为一名好的软件工程师,同时教我们怎么做人。配合着科大的高级软件工程的课程学习,不仅学习到软件工程的理论,同时也可以自己动手去做。这样的方式才是学习的最佳方式。——阮鏡毓水生火热的金木土

  • 实践才是检验真理的最高标准,半学期的实践,有过为一个实验急得抓耳挠腮,也有过对于bug调试不出来而带来的挫败感,并不能说这半学期已经彻底改变了像我这样的编程渣渣,但是起码也对以后的学习,和软件工程的理解有所启发。半学期的6次实验围绕一个命令行菜单程序的设计,以及不断优化,代码不完美,甚至有不少纰漏之处,但都是自己一行行敲出来,认真调试的努力的成果——Darlynn

  • 以前接触的软件工程课程一般都是停留在理论和需求分析的层面,基本就是概念和画图,而这门课把软件工程的思想融入到真正的c代码当中,更加实用,学到的东西也更多。对初学者而言,实验的部分值得一试。——daisyle

  • 软件工程(c编码实践篇)这门课程,视频教学(理论)和实验(实践)相结合,收获颇多, 最大的收获并不是在写代码的能力上有了多么大的提高,而是知道了如何一步一步写出高质量的代码,而不是以前所追求的能运行结果正确的代码,我想这才是真正重要的。——浩子123

  • 通过学习孟宁老师的软件工程(C编码实践篇)把我从一个什么都不懂代码小白和对写代码有一些恐惧心理的人,变成了一个热爱自己写的代码(虽然目前很烂,很差),把写代码看成是一件很开心的事情,从心理感觉原来代码可以这么神奇,自己原来也可以高大上(YY中.......)。非常希望没有接触过代码层面又希望转行做一个高大上的程序猿的同学们,好好学习孟老师的这门课程,会对你有很大的帮助。——陈强

  • 我学会了将它们融会贯通,原来很多东西都是相辅相成的。正如一句程序猿江湖界的调侃一样,咱程序猿的修炼,都是外修语言,内修算法,内外兼修,天下无敌!语言和数据结构、算法,缺一不可。总之,孟宁老师开展的这门课,在我们走向神猿的道路上起到了承上启下的作用。——小明滚出去

  • 学习软件工程是一段非常享受的时光,孟宁老师讲课十分风趣,又通俗易懂;最重要的就是学习软件开发的思想,这样可以让我们在以后的工作中少走弯路,更给了我们一种思考问题的方法。——许祎

  • 受益匪浅,收获很大,在线学习敲Linux代码,然后用git命令等等,都是之前鲜有的。内容上,学习了callback函数,可重用子系统,孟老师用很多形象的比喻(其中就有一家人早上起来抢厕所的例子)。总之,孟老师的课上着不乏味,且能学到知识。——zhangweiustc

  • 孟宁讲课幽默风趣生动形象,让我受益匪浅。从一个简单的实例,循序渐进地以软件工程的知识武装起来。这里推荐孟宁老师的线上课程,让了解软件工程并不断深入。——jishuang040

  • 想成为一位优秀的人,必须付出比别人多得多的努力。在这里感谢孟宁老师给我们带来这么优秀的课程,很有程序员和老师范。——kui1992

  • 软件工程C编码实践篇中孟老师亲自录的教学视频看起来清晰易懂,对知识的讲解很生动,让复杂晦涩的代码知识变得通俗易懂。我会在以后的学习中学习孟宁老师在网易云课堂上开设的其他相关课程。——周末m

  • 软件工程(C编码实践篇)是一个非常不错的学习软件工程思想方法的实践性课程,通过一个小小的C语言项目的不断演化,体现了许多工程化的思想和方法,从而让我们更加深刻的理解软件工程理论的内涵。通过跟随模仿孟宁老师的代码实现,从无设计代码,模块化设计的 代码,到可复用的代码和回调函数等接口设计,提高了我们工程化代码的编写能力,让我们能够严格遵守代码风格规范来编写代码。总之,这门线上课程重视实践,可以使我们对软件工程有一个直观感性的认识。个人感觉学了这门课之后受益匪浅。必须点赞!!!——Henry93

  • 在学习软件工程(C编码实践篇)的过程当中,我首先感到的是欢乐,孟宁老师用他特有的幽默文笔和充满魔性的呵呵一笑让我在学习的过程中从没感到过痛苦(模仿孟宁老师的呵呵一笑)。其次是学习完整个课程让我加深了对程序员如何写代码的理解,提高了我作为一名程序员的自我修养。....这些是我们在学习其他课程当中所学不到的东西,这不是一项技能而是一种修养,作为一名合格程序员所应当具备的素养。——水果武士G卡酷瓦拉一

  • 孟老师带我们从一个简简单单的menu小菜单程序(千里之行始于足下)开始冒险,然后从menu菜单程序内部实现模块化,业务逻辑层与数据存储层的分离。然后又带我们继续设计链表接口,让链表成为提供程序结构的接口,用callback机制让用户自定义程序做具体的事,最后把把menu程序设计为引擎,以后用户需要使用,开动引擎即可实现程序的运转,让用户更加专注业务功能上。该课程一步一步的深入,但程序却越来越通用,为这课程点赞,谢谢孟老师,谢谢网易MOOC.——czhacker

  • 痛并快乐着——audir880

  • 本课程通过六次实验,打破了传统软件工程书本教学的方式,而且实验之间存在相互关联,实验内容层层深入,实验难度逐步增加。为学生理解软件工程思想起到了明显作用。——Again520 

  • 孟宁讲课幽默风趣,用具体项目等例子来总结、教授出高软的知识点。这里强烈推荐孟宁老师的线上课程,让你从C程序菜鸟华丽蜕变——iidol

  • 软件工程一直是计算机专业的必修课之一,但是,其理论化过强的特点,让很多学校的学生们把这科学成“文科”。对软件工程没有什么认识,也无法做出高水平的作品。 中国科大的孟宁老师久负盛名,这是他的MOOC软工课程的第一系列。一上来先不讲枯燥乏味的理论,先从简单的C语言开始,给予学生感性认识——什么好的软件?如何制作好的软件?好的软件代码“长”什么样? 通过这个课程,客观上更熟悉了Linux和C语言,确实地对软工有了一点感觉,非常期待接下来的课程。——lyzzzz

  • 非常感谢中国科学技术大学 孟宁老师,您幽默简洁讲解方式以及对知识点独创性地命名 让我对于某些思想记忆犹新。——lucky3626

  • 学了这门课程没有遗憾,绝对是值得学习并且能学到知识的好课程。——Jack King

  • 非常感谢孟老师精心准备的课程。大学四年里,上过几十门课,大部分老师都是照着课本、PPT将知识灌输给学生。但是从课程的安排却可以看出来孟老师是精心准备过的。不仅仅传授理论知识,还用实验课程来同步教学。通过课程的学习,自身的进步也明显可以感受到。——王浩hao



证书要求

合格证书: 综合评定成绩 >= 60分

随到随学,8周课程内容一年内有效!课程价格不包括证书费用,年度结束统一发放证书。

预备知识

熟悉基本的C语言编程,理解基本的数据结构(比如链表)。

授课大纲

第一周

  • 课程简介

    • 识人与识别代码工程质量的类比

  • 课程实验环境准备

    • 工欲善其事必先利其器

    • 实验一:写一个hello world小程序

第二周

  • 代码风格规范

    • 课程实验项目要求

    • 简约而不简单

    • 实验二:命令行菜单小程序V1.0

第三周

  • 基本的模块化设计

    • Separation of Concerns

    • 实验三:内部模块化的命令行菜单小程序V2.0布

第四周

  • 可重用模块的接口设计

    • 天王盖地虎

    • 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

第五周

  • 可重用模块的接口设计(callback函数)

    • 卧底

    • 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

第六周

  • 、函数的可重入性(reentrant)及线程安全浅析

    • 一家人早上抢厕所

    • 测验:函数的可重入性(reentrant)及线程安全

第七周

  • 子系统的可重用设计

    • 够用就好

    • 实验七:将menu设计为可重用的子系统

第八周

  • 代码背后的设计思想

    • 万变不离其宗


软件工程(C编码实践篇)考试


`
参考资料

《软件工程 - 理论与实践(第四版)》 Software Engineering: Theory and Practice (Fourth Edition),Shari Lawrence Pfleeger,Joanne M. Atlee,杨卫东译,人民邮电出版社

《人月神话》 Frederick Brooks

《人件》 Tom DeMarco

《第五项修炼》 Peter M. Senge

《黑客与画家》 Paul Graham

《构建之法——现代软件工程》邹欣


常见问题
  • 版权声明:本课程独家授权网易云课堂发布运营,其他商业机构使用本课程需要获得授权!

  • 如需开具发票,发票面额为原价,特惠价购买需补齐原价。


所属微专业

所属系列课程

分享