软件构造课程总结
-
-
-
- 教了什么
- 学到了什么
-
-
一整个学期在家中度过,跌跌撞撞上完了本学期的课程,涉及的五门计算机学院课程中,软件构造是最花时间的,可能实验、知识理解起来没有编译原理、计算方法困难,看起来应用也没有大数据的课程那么有针对性,但还是感觉本课分外有用,起码是给我这个外行人全面地展示了软件构造的样貌。在这里总结一下这门课程。
教了什么
这门课显然是一门新课,工大2016级才新开的,但是据说是以MIT为模板,感觉是很有模有样的。有兴趣查了一下MIT的课程,它的前身是6.005 MIT class elements of software construction,它的目标根据课件来看有这几个:(1) Ability to design medium-scale programs
(2) Understanding OOP concepts & design decisions (3) Proficiency with basic quality assurance techniques for functional correctness (4) Fundamentals of concurrency and distributed systems (5) Practical skills
而CMU课程的目的则有四个: (1) concepts of design for complex systems, (2) object oriented programming, (3) techniques for robustness, including testing and static and dynamic analysis for programs (4) concurrent software
总的来说这是一门工程性质的课,与数理一类的科目有很大的不同。虽然不是计算机学院的,但是我感觉这类的课程很有存在的必要,而且私以为实验可以更有趣一点,以提高课程的趣味性,不过要求写时刻表虽然也算蛮锻炼了。
学到了什么
在之前研究工大有哪些课值得蹭的时候就看中了这门,尤其是因为有很多博客资源在描述这门课(后来才发现是课程要求),为了改变自己编程半吊子的状态就选了这门课。在课程建议里面,这门课更是被定义为了和计算机系统、数据结构和算法一样的高度,上完这门课之后感觉对我的帮助确实很大。以下几个方面感觉对我而言用处最大:
-
ADT与OOP基础知识
虽然学了数据结构,但是抽象数据类型仍然是需要功夫理解的概念,相对于底层的数据结构而言,抽象的ADT也不是那么容易。
另外在建筑学院课的时候,手绘画图要求精确的时候总会嗤之以鼻,总觉得那些细枝末节非常麻烦。这门课里提到了表示不泄露之类的问题等等,老毛病照样犯,实验里不注意,现在课上完了深感不该。
-
设计模式
课上学到delegation的时候愣了一会儿,发现这不是我用过的吗,设计模式原来就这。学完了发现,原来我只会delegation的一部分实现,针对不同的问题需要使用不同的策略。
-
异常处理与测试优先
因为编译的课在这学期上的比较早,所以实验也比较早,所以我上过的两门大三的专业课:机器学习、编译原理 都在软件构造之前完成实验。总而言之那两个实验的实现方式及其丑陋,同时因为没有相关概念,我连如何更好地优化都不知道,除了在性能上提升以外,在结构上、流程上完全没有头绪,我想这也是软件构造的关键之处。
-
对于各类工具的介绍和应用
虽然工具从来不是重点,但是确实必要的点之一,记得最早开始蹭课时我居然用Notepad++写代码给助教看实验,把助教都看笑了,回头才知道原来还有IDE这种东西。知道工具至少可以免去一些入门时不必要的问题,尽快朝着目标前进。
另外以课程要求 逼迫 我们使用 GitHub 然后要求写blog这种事情我觉得非常好,不然这个blog也不会存在了。
作为一门一学期的大课,给人的感觉和其他的计院课程不太相同,以往上的计算机系统、机器学习乃至数据结构算法等等都会有智商告急的时候,但是这门课更要求的是对整个体系的理解和实践的练习。讲义里提到了一句话:We who cut mere stones must always be envisioning cathedrals. 我们切割石头的人心里也必须要想着大教堂。我感觉哪怕这件事情很简单,但是它搭建的是一个殿堂,那也是有意义了。
最后答疑老师说课时未来要缩短还是非常惊讶的,毕竟是一门新课,而且是一门重课。可能课改也是很重要的一部分吧。在查这课背景时还看见了MIT老师对于为什么6.001的语言从Scheme变成了python,是因为现在的程序员需要更加需要的是快速上手新项目的能力,所以6.001选择了有机器人library的python。之前老师也说过学校需要保证大家能够顺利对接 会,所以课改可能也不可避免吧。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91437 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!