一个学期又即将过去,软件工程概论采用的是过程考试的方法,所以实践性较强,动手的地方比较多,在这个学期我学到了很多,此次总结一下整个学期所学,同时对这门课我也有很多感受和看法。
在这门课开始的第一节课,老师就安排了课堂测验。题目是做一个登录界面可以连接数据库,以检验我们这个假期的学习成果。当时做的不是很好,只是完成了界面的基本布局,数据库并没有连接成功。主要原因当然是上个假期在家闲过了,没有好好努力看书和恶补,做的一堆学习计划真正做到的也没有多少。所以后来在另一门课JAVA WEB开发上学习了创建网站的很多知识,希望这次下次网站可以做的更好,基本点都可以实现。
上课一直都是通过PPT来学习,我觉得效率不是很高,因为都是理论性知识,都是通过理解学习的。上课总是盯着PPT看,我觉得对学习有点辛苦。所以大部分精力都是放在课堂测验和课下作业中的。课堂测验并不是很难,都是需要有一个好的逻辑思维来分析清楚题意和找到规律分析算法,往往代码量不多,主要靠思路,比如返回一个整数数组中最大子数组的和、找水王;而且每次都会有后续程序的编写,都是对上次特殊情况的普遍化,设计思路相同,但是却适用于所有情况,通过几次作业,我也真切地认识到了设计思路的重要性,那是整个程序的精华,还记得老师说过“程序员的工作是最简单的,因为他们只需要按照别人的思路编程就可以了,但是小组长却要分析项目找到方法,把思路讲给组内所有人,还要保证他们可以理解”。
课下作业我们是结组工作的,开始时两人一组,我们一起做了随机产生30道四则运算题。第一次就是很简单的要求,像二柱子那样,花二十分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。这个本来课上也留了时间,但是并没有完成,后课下完成的,还是比较基本的,随机产生运算数和运算符就可以,调用Math.random()。第二次的后续开发加了要求,1、题目避免重复;
2、可定制(数量/打印方式);3、可以控制下列参数:4、是否有乘除法;1、是否有括号(最多可以支持十个数参与计算);2、数值范围;3、加减有无负数;4、除法有无余数!在这部分多次使用if语句来判断条件,分情况。因为要求很多,像乘除法、正负数虽然不难但是却很繁琐;而难点在于:题目避免重复、可定制和括号的参加。老师虽然给了使用树的提示,但是因为对数据结构使用的不熟悉遇到了很多困难,这次小学期的数据结构实习我会更加勤奋地练习;后来虽然考虑使用过树,但是用了树之后括号功能却没办法实现,只得放弃了使用树避免重复,而改用了动态数组。我创建了两个动态数组,一个存放操作数,一个存放运算符,产生括号也会更加简单些,但是很繁琐。第三次后续开发,添加了对用户错误输入的提示和混合运算,添加异常流就可以了,比较简单。第四次完整版,要求时做成网页版,确实难到了我们,参考了很多书籍资料和代码做的有点差强人意,实力有待提升,而且我觉得做网页很混乱,需要用到许多新的知识,比如jsp、javabean等。所以比较抵触,还是勤加练习才是王道。
我们在这个学期也真正地经历了一次做软件,还记得老师课上让组队开发的时候,真的很激动还有紧张。我对软件工程这个专业也一直有一种敬佩感,觉得可以做出很高大上的东西真的好厉害,但是随着学习的深入,感觉就慢慢变得不一样了。因为了解了一些了,也真正地参与进来了,发现其实我们以后可能过得是这样平凡的程序员的生活,没有天才的点子更没有支持好点子的过硬的技术。在第一个冲刺期开始还斗志昂扬,但逐渐就有点没自信了,还会觉得无从下手,总是会有天马行空的想法但是太遥远,我们现在还只是勉强做个小东西而已,这一点一直是我开始做了以后的苦恼。然后又迎来第二个冲刺期,就是平淡地结尾,弄弄界面什么的。老师召集了大一、大三的学生为我们办了一次投票,我们需要向他们介绍我们的产品,争取票数。一个小时左右下来还真是又臭又热,而且我本来就不是很开朗的性格,这次又更加确定了,票数十分惨淡。心里的失落又多了一分。自己想了很久,想到了老师说的,“永远不要说自己不会编程,那是因为你不练习”。确是良言,我也会朝着这方面更加勤奋的,也会给自己加油,保持那份热情。
对老师的感受嘛,一句话就是又爱又恨。上课真的很有意思,而且特别集中,我也明白让我们做那么多练习的目的。但是在编程又运行不出来的时候,真的很想要发牢骚,而且很有压力。老师肯定很明白我们学生的这种心理。
这个学期因为有软件工程概论课,还是过得很满满当当的。回顾总结下来,也发现了自己学到的、长进的地方,下个学期继续加油。