[高级软件工程实验]软件工程(C编码实践篇)学习总结

学习心得

    通过对这门课的学习,我感觉我还是有很多收获的。一方面是软件工程上,对代码的规范、工程的版本控制、接口的设计、功能耦合性、如何解耦等这些商用大型软件开发方面的收获。另一方面是编程工具上的,前端Vue框架、后端Node.js及其Express框架、mongoDB数据库等时下热门开发技术方面的收获。

    平心而论我认为这门课还是不错的,其中最大的亮点就是教授的东西非常非常实用。一方面体现在对git这种常用工具的讲解,另一方面体现在对Vue、Node.js这种时下热点技术的讲解。

    与之相比,我本科时老师讲授的技术非常陈旧,大三时的java课程老师还设计了工作量不小的jsp与awt的程序设计,虽然可能这是讲解java的常规方法吧,但我觉得这些内容是完全可以省略掉的。现在前端基本是清一色的html+js+css架构,win下的桌面端也是以C#与C++开发为主,这两种技术已经很少被使用了。虽然可以说awt可以帮助理解图形界面那种交互方式的编程,但是之前的面向对象程序设计与数据库两门课程我们已经写过这种程序了。学这些东西不仅费时费力,而且对无论是工作还是研究都没什么意义,滚根到底可能还是老师不够重视教学内容的更新吧。

    说得直白一点,这么课程所教授的内容与市面上企业的诉求是很一致的。如果对这方面感兴趣,深挖一下就可以成为简历上的一项。即使不感兴趣,现在前端、后端还是客户端、移动端都没有实现那么完美的技术分离,从适度了解的角度来看,这门课的深度也比较合适。当然除了去做数据科学方面的同学,对于他们来讲可能意义就没有那么大了。

    当然我也觉得这门课还有一些不足,毕竟其实整体上来看师生间还是有些矛盾的。

    我觉得最主要的问题可能还是学习曲线不够平滑。缺乏计算机相关专业基础的同学一上来就要在陌生到连基础操作都无法完成的操作系统上,对着缺乏提示的命令行工具编写代码,心情上是非常痛苦的。当然在良好的引导下同学便不仅能顺利地完成目标而且也能收获很多。第一次的线上课程我觉得是很不错的,详细的演示了linux下如何使用shell完成实验目标。不过之后作业是需要使用git发布到线上的版本库中的。虽然孟老师您在作业要求中给出了发布作业的完整操作过程,我觉得对于基础稍差的同学来讲还是有些突兀“怎么就突然出来了一个git命令?”“这些操作是要做什么?”可能会有这样的困惑产生。本来就比较痛苦的状态再碰到了绊子,可能情绪就会变得比较激动。如果可能的话,我觉得在第一次线上课程中加上一小段对git的介绍会更好。

    其实上面的内容还好,毕竟git也不是十分复杂,但是到线下实验就不一样了。我个人觉得javascrip本身就是一门极其复杂的语言,再加上使用Vue框架,我其实是有一点js的使用经验的,但第一次实验的时候依然觉得比较吃力。当然我没有觉得这样的实验设置不好,反而感觉还挺有收获。实验内容本身比较难的情况,我觉得可能更清晰的实验目标和操作可能会比现在更好一些。其实您的第一个实验中理解6个范例的工作机制就是追踪他们的调用情况,这样的话把实验目标设为追踪程序的运行过程,并讲解下如何在浏览器中调试js文件就会让实验变得更具操作性。

    其实我对您作为教师还是很敬重的。我看过您之前的高软授课内容,每次都在发生比较大的变化,不论是react、微信API还是go,确实都是最新最热的技术。从频繁更新的课程内容来看我觉得您作为教师是十分敬业的,而且也确实是希望能带给我们真正有用的东西。不过我也不能说心存不满的那些同学就不对,毕竟您的课确实在设计上还有一些缺陷,对一部分同学的学习不很友好。

    编程毕竟具有天生的复杂性,无论采用何种授课方法都无法改变这点,能做的只能是让学习过程更加平滑。我只是一个学生而并非教育者,体会不到您在准备现在这些课程内容到底付出了多少心血。但同时我作为学生也是很希望能看到您这样积极尝试新的教学方式的老师的。虽然循规蹈矩,念念ppt讲讲概念那样的授课既轻松也不会被学生抱怨,不过我觉得您因该在教育上是有所追求的才会选择现在这种方式。希望您能坚持下去,让这门课变得更好。

实验报告

实验一:写一个Hello World小程序

http://blog.csdn.net/IL_Maestro/article/details/78011074

    本次实验主要目的在于熟悉Linux下的C编程环境以及通过git工具进行工程的版本控制。

    虽然实验内容上比较简单但非常实用。无论是Linux还是git都是目前专业程序员的基本技能,对这两种工具可以说是真正的软件开发第一步了。

    这次实验整体上还比较顺利,除了因为蓝灯自动设置的HTTP代理使我在git push时出现了问题,不过这个问题的处理过程也确实加深了我对Linux系统的理解(虽然是课程外的内容)。

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

http://blog.csdn.net/il_maestro/article/details/78080638

    本次实验的主要目的在于通过编写命令行小程序来了解软件工程的代码规范问题。

    缩进问题说的就是我,毕竟按一下Tab比四下空格方便,然后传到github退格符变成了8空格长了非常丑。

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

http://blog.csdn.net/il_maestro/article/details/78167431

    本次实验的目的在于通过改写命令行小程序来了解软件工程的模块化设计方法。

    不太严谨的说这次实验完成了文件层次的功能分离,除了一开始用gcc编译多文件时有点困惑,其他都比较顺利。

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

http://blog.csdn.net/il_maestro/article/details/78251523

    本次实验的目的在于通过改写命令行小程序来了解软件工程的接口设计。

    这次的代码编写从我们编写的命令链表中分离出了更一般的链表,这样使链表可被别的需要的部分使用,使整个程序的设计变得更加合理。

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

http://blog.csdn.net/il_maestro/article/details/78319484

    本次试验的目的在于通过改写命令行小程序来了解程序设计中的callback机制。

    callback机制对于代码编写意义很大,在使用别人的函数时,我们变得不仅能传入数据,还能传入操作,这样使底层的代码编写变得更加灵活。

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

http://blog.csdn.net/il_maestro/article/details/78459517

    本次试验的目的在于通过改写命令行小程序使整个命令行小程序变为可重用的子系统。

    在我们的命令行小程序功能基本成型后,便将其整体封装起来变成一个可供其他程序使用的一个子系统。这使我们这个工程本身的复用性得到了提高,同时Makefile的引入也是整个工程更加完整。

最大收获

    学习到了软件工程设计方面的知识,接触到了Vue、Node.js一类的最新技术。

最大遗憾

    课程的难度还是有些高,我本身是想从事后端方面的编程的,没能趁机会好好学习一下Node.js。

[万升 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 ]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值