软件工程总结报告
序言
本期软件工程专业导论课程结束后,为圆满完结本期此课程的学习,特此总结个人学习所得以求些许回报先生无私教导。
主体
第一节课主要讲述了软件工程各领域之间的联系以及贯穿始终的基础为何。
其中较为基础并相当重要使的应该是算法。
对于算法重要性与基础性的理解,我个人有比较切身的体验。
比如前不久的ACM 竞赛,在比赛中我所在的小组以及当场几乎所有小组都遇到这样一个问题:超时—这无非就是个人设计的算法的效率不够高,这也证明我们对算法理论知识的匮乏(不清楚优化个人算法的方法)。
我对软件工程这一专业有了一个较为全面的把握,对我个人未来进取方向而言也起到了一定的指导作用。
第二节课老师带来了三位本专业的前辈向我们传授大学生活应如何度过以及对我等一些问题作出解答。
其中我个人印象深刻的是其中一位学姐PPt中引用李开复的那部分内容。
即试着记录下自己一整天做的所有事以及其所花费的时间,再仔细研究自己在哪些事上浪费了时间,应该如何整改。
我个人认为这方法可能有一定直观性,因为直观的数据更能深刻的反映真实和刺激一个人整改,但此法实施起来又太古板,中觉得生活有些教条化、章程化,缺乏新意与自由。
求上进,珍惜时间也无需以丧失人生情趣为代价。
还有就是学长再提潘老师曾讲过的那些重要、紧急优先次序。
他提到的个人的学习生活情况
倒没什么深刻感,但我认为他引用的一番话较有道理,大概意思是比起个人兴趣更为优先的应该是谋生的本领,尤其是当自己感兴趣的正好是冷门时。
当掌握了一些实实在在有能保证自身良好发展前景后,再去做一些自己感兴趣的事也来得及。
于我而言,一个人尚不能独善其身,何求其兼济天下。
成己方成人就是如此道理。
第三节课主要讲解了大学学习生活中应着重的基础课以传递重
基础的要旨。
据个人体会,其中英语科目实是基础中的基础,主要是为辨认单词(即代码变量以及注释)意义以达到理解他人算法并顺利接手他人接下来的工作。
企业和公司出于其本身利益主张雇方市场--讲究项目的可接手性,而不希望对现有人员的过分依赖。
离散数学则应该是为之后学习其他编程专业知识做理论知识的铺垫。
概率统计更多应是对统计有关算法及理论的学习(个人认为现实生活中许多问题都可以运用概率统计的方法加以解决,因此应是很重要的基础知识)。
C/C++(Java)语言是作为编程的工具使用,无疑是基础(现今水平下的我们主要用C编代码)。
数据结构则应是提供特定的解决问题的结构思想以便进行数据处理方面工作。
算法的重要性以及基础性的个人体会已包含在第一节课中。
计算机体系结构与汇编课程与操作系统原理课程主要在于理解计算机系统运行原理能加深对代码运行原理的理解,对于现今水平的我也能更深层次的理解c语言的指针操作等方面知识。
汇编语言能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应
用。
汇编语言仍然是程序员必须了解的语言,甚至在某些行业与领域,汇编是必不可少的,非它不可适用。
在此课堂上也讲到了程序员的优秀品质。
1.对于优秀程序员,首先必须要掌握一门编程语言、编程工具的使用以及掌握程序设计方法。
2.由于一项工程往往无法单单靠个人完成,多是由团队完成。
团队成员间的相处情况对工作进度和质量的影响尤为重大。
因此需要谨慎处理人际关系。
3.由于成员间需要交流彼此想法,因此需要有较好的语言表达能力。
4. 工程项目中需要成员间不时交换彼此想法和工作进度以求尽量减少工作中的问题。
在如今的大学生活中以上三点的实践可通过加入实验室与老师、学长一起做项目得到锻炼。
5. 虽然程序员需掌握大量专业理论知识,但需着重用于解决问题。
6.程序员的思维往往不是绝对高效和不可在优化的,因此,程序员需要勤读书以求个人思维的不断完善。
以上两点可通过阅读专业名人与业界经验人士著作践行。
7.学习重视范例,但需勤实践。
8..对于程序员更多需要的应是实践,在实践中往往能发现问题并进一步完善个人知识体系。
以上两点可通过在学校oj平台上做题和加入实验室做项目践行。
9. 照一般思维想,拥有某些领域内的专长知识才能为自己创造优势。
培养专长需要着重下功夫,但并不意味着要忽略其他科目的学习。
力求在全面发展的基础上占有一技之长的一席之地。
10.认真学习网络和数据库知识。
此些能力对个人编程能力的形成至关重要。
11.坚持写博客、写文章(不一定要与专业知识有关,当然如果与专业知识有关最好),这样能培养个人表述能力。
12.减少个人程序漏洞可通过站在测试者的角度进行思考。
(主要就是
千方百计找自己的错误)13.团队合作时个人编程习惯应保持一致,以便成员间代码的交流。
习惯不一致会导致彼此代码交流出现障碍。
总不能强求他人适应你个人各种各样的习惯,这样也会导致工作效率低下。
15.参加技术研讨会(大事件)以便完善个人知识体系以及紧跟时代知识更新。
研讨会上大家会针对核心热点问题提出个人想法有利于个人思维能力的完善和提高,也能加强自己的专业素养。
16.万家通吃还是一门独大?那么你认为树的高度是怎么计算的呢?一枝
最高即树最高,全枝较高即树较高而不是最高。
在精英的群体中样样都会但不精通的人是不占任何优势的。
17.编程或许是一件繁杂且无聊的工作(有些时候编代码会花很长的时间,你需要长时间的),但要想成为靠谱程序员就要停止抱怨,保持好奇心。
靠谱的程序员需要能静得下心来钻研与舍我其谁的自信。
最终形成解决问题的能力。
我认为现在的大学生都有这样一个问题:对将来自己要找的工作认为有一个明确的定向。
由此我们需要对当今各公司的招聘要求进行详加了解,考虑个人将来职业定向以便寻其标准发展自身知识涉猎领域。
第四节课主要讲自信与学会调试这两个问题。
遇到一个问题首先你要有能解决它的信心才有可能解决它,如果一开始就自我否定那何谈解决这个问题。
其实这也能理解为战胜自己嘛。
其实这方面我也有个人比较切实的经历:记得是学C语言没多久的时候的事,有一次测试的三道题中有一道题的文字描述很长,当时我就觉得那道题很难。
结果是三道题只做出来一道。
我是被第二道题难住了,但最后我仔细读了读那道长篇幅的题,却发现它很简单。
所以变成不仅考验一个人
的编程技巧还有内心。
调试对程序员而言也是一项很重要的能力。
现在我们写的代码量还不大,即使有错误也可能不用调试只需纵观代码即可解决(尽管代码量不大,但我自己有些时候出的问题只靠一行一句看代码是很费事的。
比如:循环体中的循环变量i误写为j,这我就得检查半天)。
但今后代码量一旦加大就必须得靠调试才可能顺利解决问题了。
我相信将来的工作中也正需要这样的能力。
除此之外的题外话中我注意到了这样一个观点:编代码有时还得注意一些特别的心得。
老师举的一个例子是以前他写的一个程序。
他发现程序出错,且知道错误大概在哪一部分,但由于过程繁杂又加上写代码以致头脑反应能力下降,错误难究其本。
最后是交给他带的一研究生解决的。
援引此例,他就是想对我等传递这样一个观点。
且不论其正确与否,我得到以下心得:写代码也要劳逸结合,要保证思路清晰正确。
在此课上,老师就是否加入实验室问题答疑。
其中有一个使我印象深刻的观点:编程能力没有好和不好的说法。
这点我不是太赞同。
个人认为对于一个问题,大学生或多或少都有些许解决的思路但能否编写代码解决这就是编程能力高低的体现。
通过这四节课的学习,虽说不想数据结构等课一样学会什么变成技巧,但我觉得有时个人领会更为重要,就像武学一样,招式都是外在的,最重要的还是内功心法。
因此,对于此四节课的学习我想我的体会是颇多的也是颇有指导性意义的。
想必对我接下来的大学生活也能起到些指引作用。
参考文献:云风--《游戏之旅:我的编程感悟》、戴默--《80x86
汇编语言与计算机体系结构》以及个别经验人士见解。