也不分M1/M2了,就从头到尾的梳理一下这学期的软工课吧。

第一节课,老师就稀里哗啦说了一下这学期要怎么搞,什么个人项目啦,结对项目啦,团队项目一二啦,还要组队啊什么的,然后风风火火的组队。

个人项目,词频统计小程序。很快写好了,因为要按照效率评分,开始了恶心的优化之旅。试了试搞多线程,没搞出来。换了下数据结构,效率提高不少。得了本书,还阔以。拿了37/50

结对项目,是个多台电梯调度,每个电梯属性都不一样。先看代码。看懂了助教的代码然后开始写。算法一点都不高大上,模拟了现实生活中人们人所多台电梯调度应该是什么样子的。拿了92/100

团队项目。和室友还有周围寝室的同学组了队。黄金点游戏第二轮次,选了个迭代开发项目,接手学长。

不得不插一句,大学上到现在,学长在我心中的形象一点点塌掉。刚上大一的时候觉得大二的学长好牛啊。上大二的时候觉得大三的学长在学院路肯定更牛了。上大三的时候发现原来不是酱紫的。2/8原则真是无处不在。其他例子不具了,得罪人。

老师告诉我们,你们的学长都整合好了,你接着做就行。嗯,整合好了,我们接着做。

第一周按计划先设计,其实就是看代码吧。心里挺想当PM,队友希望我写代码,那就写代码吧。但是事情似乎就不受我控制了...(虽然受我控制也未必就有好结果)

看了学长代码觉得挺简单了,但是有的代码原样复制了一遍是几个意思呀...增加代码量么...

既然老师说学长们都整合好了,接口我们就不动了吧,把一些信息提取的函数提高一下准确度,再加点新功能。嗯,任务量似乎不大。简单分了分工,分词方面我跟室友一天就搞完了。

不知不觉就到了第四周。联系了爬虫组和网页,发现了,唔,我们处理的是爬虫组的数据不错,可网页组用的是10级学长的数据库。根本没用我们的...感觉有点凌乱,学长是怎么整合的呀?老师是怎么验收的呀?这事儿有点儿不对吧!

然后就到了Alpha阶段验收。什么?团队互评?虽然我对系内团结程度不完全信任,但这个时候大家应该会心照不宣的吧。这个时候罗杰老师出杀招了:不打分给排名。然后,一场博弈论的实践活动就开始了...

验收拿了100分,第三名,比第一名和第二名分别少了100和90分,然后在个人项目和结对项目积累的分数优势就统统木有了...分了分团队贡献分,第一阶段就算完了。

第二阶段前一两周都在忙大作业了,这软工也真的不想管。

跟网页组要来了需求,分析了一下,不难。先抽了一个下午+晚上跟室友写了问答页面信息提取。等第一组数据库到位了,又继续写了写,测了测。我管了算法,室友管了数据库,实现了网页组的需求。

到这会儿这课差不多也就完了。

想起邹欣老师之前在一篇博客回复我,等我写了10000+行代码,对一些软件工程存在的问题就有体会了。我数了数自己的编译大作业,5500+行。

又想起本来是有很多高工的小伙伴和我们一起经历这场磨难的,后来发现人家果断退课了。之人常情啊!高工能退课就是好!要是我能退课,我也退啊!

又想起几天前另一门软工课的同学跟我说,你们的软工课多好啊,起码还写了代码,我们啥都没学到,就一水课。我说,啥啊,你是不知道...

课程的总结到这儿也差不多了,说点不能算题外话的题外话吧。

从我们这一届开始,学院的课程结构开始改革。我们小班,碰上了所有的改革。

从大二上高小鹏老师的计组实验,到大二下王雷老师的操作系统实验,吴际老师的面相对象课,再到大三上杨海燕老师的编译(这个应该不能说是改革,因为已经做了很多届了),再到罗杰老师的软工课。我们是一路当小白鼠当过来的。

现在其中的一只小白鼠要说说感受了!

1.计组课

高老师是用心在改革,各方面的准备都很充分。作业量是大,但是有可行性,一周一个Project,早点动手时间肯定够,考核也很客观公正。虽然也有一些自学的知识,但可操作。高老师是个负责任的老师,每次的实验文档要求都很清晰,我们不会浪费时间在一些无聊的事情上。而且,按照高老师的思路来讲,他的作业是可工程化的,是可以按照一定的方法论去完成的。

后来新闻上看到高老师凭着计组的课改得奖了,这当然要得奖了!

2.操作系统课

这个课是11级的实验班在大三上做了一下,然后我们12级的在大二下做了。虽然我得了90,但我觉得我是水出来的。王雷老师可能比较忙,实验几乎照搬的MIT。其他按下不表

3.面向对象课

按下不表,同学们都懂

4.编译课

中规中矩吧,前面时间放的太松,后面略紧。有什么问题发邮件杨老师都会回复。有一回邮件还是早上五点回的。听说杨老师父亲身体不好,我猜当时杨老师可能在医院看护吧,瞬间就路人转粉了。

5.软工课

感觉出发点和计组课是一样的,想要按照国际一流大学的计算机系(或者软件工程学院?)学生的标准来要求我们。邹欣老师想探索出一条软件工程课怎么上的道路。但可能只有出发点和计组类似吧,其他方面就没法比了。

看了《构建之法》的书,知道原来老师上课PPT的内容都来自这里;又没有很好地掌握上一届学长的团队项目到底什么情况,那老师究竟做了些啥?

当这样的软工课还放在有诸多更值得做的大作业的学期,结果也就...

也不知学弟学妹们能否看到这篇博客。如果你们上的是罗杰老师的软工课,建议如下:

1.牛到可以一个人干8个人或者24个人的活,并且心甘情愿一肩挑的,随便来。

2.学长项目尽量别选,尤其团队合作类的学长项目。

3.推荐自选项目,至少能完整感受一下流程。网上实际项目的代码多得是,很多模块可以拿来用,看多了自己可能就有想法了。

软件工程M1/M2总结的更多相关文章

  1. 软件工程M1/M2总结及阅读作业总结

    一.软件工程M1/M2总结 写下这篇总结的时候,我们的软件项目尚未完工.虽然尝试申请了延期答辩,但最终未能成功.这意味着,我们的项目能否正常发布已经处于了一个微妙的状态.可能可以,也可能不可以.只能尽 ...

  2. 个人阅读作业 --软件工程M1/M2总结

    软件工程M1/M2总结 写在前面的话: 这学期的软件工程伴着考期的展开逐渐落下帷幕,回顾这学期的软件工程,我感觉我的热情在一次又一次的失落中逐步消耗殆尽,每个人对于这门课的体验都会有所不同吧,可以确定 ...

  3. 【个人总结】软件工程M1/M2总结

    个人博客连接: http://www.cnblogs.com/lwq12061168/p/4094252.html http://www.cnblogs.com/lwq12061168/p/40284 ...

  4. 【个人阅读】软件工程M1/M2做一个总结

    1.以前博客链接 http://www.cnblogs.com/penglinjiang/p/4027850.html http://www.cnblogs.com/penglinjiang/p/40 ...

  5. 【个人阅读】软件工程M1/M2阶段总结

    这次作业是好久以前布置的,由于学期末课程设计任务比较重,我在完善M2阶段的代码的同时又忙于数据库的实现和编译器的实现,一度感觉忙得透不过气来....到这些都基本完成的时候,会看自己以前的阅读心得,觉得 ...

  6. 个人阅读作业——软件工程M1/M2的总结

    临近学期末,本学期的软件工程课也已经结束了,在此我对软件工程课中,我们团队M1和M2开发阶段中,我做的工作做一个总结 我是DEV,主要工作是等着上级给我分配任务,但是很多时候如果这个活我不干,其他人就 ...

  7. 【个人阅读作业】软件工程M1/M2总结

    链接:”看<快速软件开发>的五个问题“ http://www.cnblogs.com/leiyy/p/4027759.html 一.较为明白的问题 1. 在文章的第一个关于Square_T ...

  8. M1/M2项目阶段总结

    1.M1/M2总结 我们这学期完成了学霸项目. 在M1阶段,我们首先进行了分工,完成了一个系统的计划,然后是对学长代码的移植和优化.在优化代码的过程中,我们遇到了不少问题,比如一些代码的冗余以及指向性 ...

  9. T-SQL - 习题02_将数据表year|month|amount查询成year|m1|m2|m3|m4的样式

    时间:2017-09-11 整理:byzqy 题目:有个年度统计表,结构如下: 怎么样把这个表,查询成这样一个结果: 这是在面试过程中遇到的一个关于数据库的题,没有一点思路,不知它考查到的知识点是什么 ...

随机推荐

  1. Django学习---笔记一

    一. 新建虚拟机在虚拟中完成项目 1.新建虚拟机 mkvirtalenv  虚拟机名称 2.进入虚拟机 cd   新建的虚拟机名称 3.安装Django pip install django 4.Dj ...

  2. jquery的自定义事件通过on绑定trigger触发

    jquery绑定自定义事件,可以实现预先绑定好一个处理方法,当需要使用的时候利用jquery trigger来触发自定义事件,以达到方便快捷的目的.我们来假设一个这样的场景,一个textarea中的字 ...

  3. CSS3 animation动画,循环间的延时执行时间

    如下代码,其中的delay值为3s,但是animation按现在的规则,这个delay是指动画开始前的延时,在动画循环执行间,这个delay是不生效的. .item{ webkit-animation ...

  4. Vue框架的两种使用方式

    1.单页面应用:使用Vue CLI工具生成脚手架,这是最常见的使用方式,简单用模板生成一个HelloWorld Demo,可以学习Vue的SPA项目结构 2.传统多页面应用:通过script引入Vue ...

  5. 从源码的角度分析List与Set的区别

    很多时候我们在讨论List与Set的异同点时都在说: 1.List.Set都实现了Collection接口 2.List是有序的,可以存储重复的元素,允许存入null 3.Set是无序的,不允许存储重 ...

  6. 【ZOJ 3463】Piano

    ZOJ 3463 题意:有一个钢琴,一个人把左手放在L位置上,右手放在R位置上,要弹某\(n\)个键,每个手最多能够得着9个位置,并且两只手不能交叉.把手移动的代价是大拇指移动的距离的平方根.问弹完这 ...

  7. 【Codeforces 526D】Om Nom and Necklace

    Codeforces 526 D 题意:给一个字符串,求每个前缀是否能表示成\(A+B+A+B+\dots+A\)(\(k\)个\(A+B\))的形式. 思路1:求出所有前缀的哈希值,以便求每个子串的 ...

  8. java 学习------helloword 程序测试

    1.新建一个helloword.java  文件 2.在新建的helloword.java 文件中添加以下代码 class helloWord { public static void main(St ...

  9. java 面向对象抽象类和接口

    1.abstract:可以修饰类和方法,被abstract修饰过的称为抽象类和抽象方法. 抽象类: 除了不可以创建对象, 其他和普通类一致. 可以有成员方法.静态方法和构造方法(提供给子类调用)等. ...

  10. LeetCode112:Path Sum

    正常写法 bool HasPathSum(TreeNode root, int sum) { bool ret=false; if(root==null)return false; if(root.l ...