现代软件工程系列 学生和老师都不容易

老师的难处 - V2.0 的困难

有笑话说某人请客, 客人无论是坐轿或是步行前来, 主人都能奉承一番。 有客人说自己是爬着来的, 主人奉承说  - 稳妥之至! 

 

据说有些学校的有些课还是沿用 N 年前的教案和教材,  这当然稳妥之至。我看到学校用很多年前的稳妥教材把学生送走之后,  会说 - 我校一贯鼓励创新, 培养了大批创新型人才... 

 

这些创新型的同学, 都到这里碰面了: 

招聘会

 

 

我讲的课是 <现代软件工程>,  我还是希望与时俱进的。 当然, 要变化, 就有风险。  业界常说某软件公司的产品要到V3.0 才好用。 从我的经验来说,在V3.0 之前的V2.0 是比较困难的一个版本。 V1.0 初试啼声,市场反映不错,评论家也主要评点产品的创新点及潜在影响,对缺陷往往比较包容。 V2.0 一方面要继续原有的突破,把V1.0 来不及实现的功能都搞出去;同时,V1.0 的发布产生了更多的机会,很多人有了新的想法;另一方面要调整内部结构,让产品更稳定。 这几种不相容的思路混在一起,加上用户和评论家更高的期望值,V2.0 很可能是不如人意的产品。

 

 

在2009 年初, 我在清华大学软件科学试验班的《现代软件工程》也讲了两年 (2007, 2008),算是V2.0,从结果上看,也碰到了类似的情况,下面是一个列表比较两届学生的匿名反馈:

评分内容20072008
热情、认真、投入、严谨,教书育人95.45±3.8095.00±3.42
讲课思路清晰,重点、难点突出94.55±4.0489.29±5.77
讲解生动、有吸引力,能激发学生的求知欲92.73±5.1590.71±5.37
师生互动,鼓励学生质疑,并给予思路的引导94.55±4.0493.57±3.69
提供或推荐的教学资料有助于学生学习93.64±4.2386.43±8.19
作业等课程训练有利于课程内容的学习94.55±4.0490.00±4.95
考核及评价方式能激励学生主动学习与钻研92.73±5.1587.86±4.88
注重学生创新意识和独立思考能力的培养92.73±4.3791.43±4.44
对学生课外学习给予指导、建议92.73±4.3791.43±4.92
学习本门课程后有收获92.73±4.3790.00±5.38

 

可以看到,在10个栏目中有4个项目的反馈有明显下降。

-讲课思路清晰,重点、难点突出:下降了5个百分点。 我在2008 秋季开学前还把整个课件都重新整理了一遍,增加了不少内容,相比2007年我第一次在大学讲课,应该只好不差吧? 为什么同学们会有这样的反映? 是新增的内容没有很好的准备,还是增加得太多了,让人觉得眼花缭乱,不利于吸收?

 

-提供或推荐的教学资料有助于学生学习: 除了教材是提供了新版本外(移山之道的第二版),我在2008年提供了更多的参考资料,最大的手笔是给每个小组一本 <梦断代码> (btw, 学校不让报销), 让他们读后写读后感 。 后来几篇读后感都挺好的(link 1, 2, 3, 4, 5)。这一项的评分的标准方差(+/- 8.19) 也明显大于其它评分,说明不同学生的反映差别很大。

 

-作业等课程训练有利于课程内容的学习: 这门课的结对编程 (Pair Programming)作业和去年不一样,是在一个共同的编程接口(API) 上分为 DEV 和 Test, 分别写实现和测试. 主要练习

          design by contract,

          test case development,

          stress test,

          optimization, 等。

 

但是在执行中不是所有学生都理解问题和要求,要在看不见功能实现的情况下写test case, 我想对绝大部分学生都是头一次。 我应该讲得更详细一些。 而不是让所有同学自己摸索。 我期望同学们课后有问题就问负责API 的同学,都是同一个班级的,不是很简单的事么? 但是很多同学都等到下一周上课的才说,理解不了… 然后又产生关于 "你是否花了时间看了我写的API" 的争论…  后来又 产生"写Test 比Dev 简单,不公平" 等等意见,导致多用了一周时间完成整个作业。 相比之下,2007年的作业是“两人组对写一个简单游戏”, 这很有趣,也不难,因为自己可以决定功能的多少,但是一个游戏是否比2008年的作业更“有利于课程内容的学习”,这就不好说了。

 

- 考核及评价方式能激励学生主动学习与钻研: 哈哈,2008年的课程在评价方式上的确有改变,而且这也是出于“激励学生主动学习与钻研”的目的。这在课程中也引起了学生的激烈讨论, 具体讨论可以看一些小组的blog 及评论。 我觉得这事实上是挺好的现象,软件工程的一些道理就是要辩论才能体会;一些我们同学们经常抱怨的事情 (e.g. 这肯定是某公司的bug),似乎我们也没做好, 我们经常嘲笑别人软件发布一拖再拖,但我们学生们的软件发布也推迟了。在最后的评审上,我请了上一届的学生,别的学校的老师,以前信息奥赛金牌获得者,程序员,杂志员杂志的编辑,《梦断代码》的译者(不过他没出现)。 我觉得这个考核及评价方式挺好的, 但是看来同学们的总体反映并不好,是继续“深化改革”呢,还是让大家都好过一点,洗洗睡算了?

 

令人高兴的是,两届同学都同意我还算"热情、认真、投入、严谨,教书育人", 说明我本质不坏,如果别的条目的评分都上升,唯独这个条目下降了,我可能不好意思把评价公之于众。不管怎么说,还得好好改进教学,别对不起学生的评价。

 

 

 

同学们也不容易

这是一个清华同学的反馈:

 

我的若干看法 -- 课程刚技术时提交过一个看法,但是现在过去一段时间了,感觉有点不同了

1.我对课本有点抵触,尤其是《移山之道》。主要是觉得废话太多了,里面聊天和诗歌有点过多了。书本身其实还不错,但是上课时作为课本看感感觉信息量太低了。实际等课程结束后我把它作为课外读物又从头看了一多半,其实还不错,只是它有点像连续剧,不从头看或者不连续看就被人物关系搞的晕头转向了。不过您大可坚持您自己风格,大多数目标读者觉得好就行了。

 

2.物质奖励还是挺不错的,即使是一支纪念圆珠笔或者帽子或者粘贴,都很有趣。但是别给钱。

 

3.制度总是和人过不去,人总是和制度过不去,所以怎么弄总会有人不满意。关于考核方式等等其实只要公平合理就行。

 

4.TFS管理员其实挺有趣的,但是最后发现90%的工作是安装服务器(不知道这一天TFS装了多少次)

 

5.VSTS感觉一直是当svn用的,上课时讲的高级功能没用上。像item之类我自己感觉还不如用笔纸或者email item这种大工程才用的放在小工程里实在很别扭 -- 尽管我知道是为了学习而这么做的。

 

6.我不建议您为了避免辩论而改革,俗话说抬杠长学问,只要不伤了和气其实挺好的。

 

7.我觉得像这种开发方法之类的东西就像设计模式,非常抽象,本来就不应该归结成概念死记硬背,但是为了继承和发展又不得不这样做。 上完这个课以后我第一反应其实是什么都没学到,但是这个其实说明您讲的还是不错的,不死板。

 

8.不管怎样,软工是我上过的最有趣的课之一,感谢邹老师。

 

 

我问了一些刚刚毕业的软件专业的同学,软件教育迫切要改变的做法是什么?  下面是一些回答:

a) 实践!  软件教育离不开实践,不要太强调闭卷考试, 老师一定要让学生实践,实习。给一个真实的客户做项目和自己幻想一个需求来做项目是有很大区别的。自己从头写程序和维护别人写的代码是有很大区别的。 没有真实的需求,没有软件的增量开发,没有团队合作,程序设计和软件工程中的大部分理论都沦为空谈。


b) 讲为什么!  学生上了很多课,反而觉得很迷茫,这些课的意义是什么?  为什么有这么多的原理,数据结构,模式和算法?  不知道我学的东西有什么用,怎么用。老师似乎不想告诉我们这些课程在实践中的意义  (或者他们也没实践过? )。学生只有死记硬背来应付考试,考试后全忘记。


c) 打好基础,其他自学!  好好学基础课,特别是算法, 数据结构,  编译原理,操作系统 。 其他课的内容用到了自己学就可以了。


d) 不光是代码!  软件教育不是孤立体,希望在软件教育中把文科的知识联系进来,和设计联系起来; 把软件/IT 行业有趣的发展历史 放进来 (讲讲图灵,冯 诺依曼,讲讲Smalltalk, 各种语言的源和流)。培养学生对这个行业的兴趣、热情和敏感。 提倡互动,介绍同学上相关的论坛,网站,开拓视野。

 

学生的眼神告诉我...

我教的这些学校都是号称 Top 3,  学生都非常聪明, 他们也有很多压力: 出国, 找工作, 找实习,  完成实验室老板的任务, 找男/女朋友并拍拖, 三国杀, 上网, 在宿舍里"宅", 等等。 我也跟一些学生聊过如何安排时间的问题。 一些学生清澈的眼神告诉我, 他们最关心的是 -

       

        怎么用最小的代价, 让我过了这门课!

 

 

 

 

 

 [作者介绍:  邹欣 微软亚洲研究院 研发主管 写程序和PPT 为生。 研发的项目有学术搜索 和 旅游指南。  他在清华大学 (2007 - 2009) 北大软件学院 (2007 - 2010) 北航 (2009) 讲授 <现代软件工程>.  写过 <移山之道> <编程之美> (合著) ]

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代软件工程系列 学生的精彩文章 (1)

讲了很多课, 碰到了很多学生, 他们教给我不少东西, 下面是一些我印象中的精彩文章: http://teamkingofcsharp.spaces.live.com/blog/cns!59FC2D3DD66822AA!188.entry December 26“大教堂”与“市集” 软件项目的管理者总是无比艳羡传统行业&#xff0c;无论是工业的流水线还是…

jpa mysql存储过程_(原)springbootjpa调用服务器mysql数据库的存储过程方法-Go语言中文社区...

一、springboot jpa项目文件配置#----------------------------------------------------------###########################################################datasource 配置MYSQL数据源&#xff1b;########################################################## 数据库sprin…

现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心...

from: http://teamkingofcsharp.spaces.live.com/blog/cns!59FC2D3DD66822AA!222.entry 感想 平常心 初中的数学老师常常和我说&#xff1a;“你要学会保持一颗平常心”。我是一个不那么豁达开朗的人&#xff0c;对很多事情都会很看重&#xff0c;GPA&#xff0c;排名&#x…

mysql 不需要@的变量_mysql参数变量

mysql服务器的系统变量,mysql server system viriables&#xff0c;其实我更愿意叫它为“系统参数”&#xff01;每一个系统变量都有一个默认值&#xff0c;这个默认值是在编译mysql系统的时候确定的。对系统变量的指定&#xff0c;一般可以在server启动的时候在命令行指定选项…

mysql 快速导出_mysql 快速导入导出

随着数据库的数据越来越大&#xff0c;采用mysqldump 越来越慢&#xff0c;测试环境的机器配置不高&#xff0c;2G左右的数据导入进入像蜗牛一般&#xff0c;非常影响效率&#xff0c;这里采用一些改进的方法来比以前导入的速度提高好几倍&#xff0c;但日常配备应有更好的策略…

现代软件工程系列 学生读后感 梦断代码

from:http://ttcs.spaces.live.com/blog/cns!C3759CC6FCEEBDD7!121.entry?sa147831050November 10梦断代码读后介绍 一&#xff0c;这本书讲了什么&#xff1f;软件是人们自以为最有把握&#xff0c;实则最难掌握的技术。作者罗森伯格对OSAF主持的Chandler项目进行长期调查&am…

现代软件工程系列 学生读后感 梦断代码 DTSlob (1)

1As you see, I’ve marked this post Number 1. Let’s leave the last post on “Dreaming in code” Number 0 :) This time, I will focus on the issue of PEOPLE, partly based on Chapter 0 and 1 in that book.Why focus on PEOPLE? Think about our group, think abo…

mysql 索引 简书_MySQL 索引

索引用于快速查找具有特定列值的行。如果没有索引&#xff0c;MySQL必须从第一行开始&#xff0c;然后读取整个表以查找相关行。表越大&#xff0c;成本越高。如果表中有相关​​列的索引&#xff0c;MySQL可以快速确定要在数据文件中间寻找的位置&#xff0c;而无需查看所有数…

现代软件工程系列 学生读后感 梦断代码 DTSlob (2)

http://dtslob.spaces.live.com/?_c11_BlogPart_BlogPartblogview&_cBlogPart&partqsamonth%3d12%26ayear%3d2008Dreaming in code Blog Post 3 Dreaming in Code这书&#xff0c;读着读着就到了尾声&#xff0c;然后惊讶的发现关于后面章节的内容和我的想法&#xff…

java 管理系统登陆完毕后关闭窗口_【求助】登录窗口登录成功后隐藏窗口

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码如下&#xff1a;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import javax.swing.*;import jdbc.Connect;public class login extends J…

python高级功能_python高级篇

1.切片功能&#xff1a;类似于java中的split方法。对list或者triple中几个值进行取出的过程。L [a,b,c,d] L[0:3] [a,b,c] #下标从0开始,取到第n-1个元素 L[-2:] [c,d] #倒序取值2.迭代(循环)功能&#xff1a;python中的可遍历对象只要是可迭代对象&#xff0c;例如list…

现代软件工程系列 学生读后感 梦断代码 SpringGreen

“拿来的代码所不能做到的部分&#xff0c;恰是项目与众不同的创新之处”。 《梦断代码》 终于看完了《梦段代码》。其实整本书就是讲图灵机的不可判定性————软件开发过程中&#xff0c;很多过程都不知道什么时候能不能结束&#xff0c;甚至说能不能做出来&#xff0c;这导…

qt 无法打开shell32_在Qt中用默认程序打开文件

用法: QProcess::execute("explorer 文件名");例: QProcess::execute("explorer c:\\123.txt");----------------------------------------------------------------------应该早有大虾发现了这个方法&#xff0c;只是我没搜到&#xff0c;于是有…

现代软件工程系列 学生读后感 梦断代码 布鲁克斯法则

《梦断代码》读后感&#xff08;第1~6章&#xff09; 书名&#xff1a;"Dreaming in Code"&#xff0c;作者&#xff1a;Scott Rosenberg&#xff08;中译本&#xff1a;《梦断代码》&#xff0c;翻译&#xff1a;韩磊&#xff0c;电子工业出版社出版&#xff09;。第…

现代软件工程系列 学生的精彩文章 (6) 项目总结

http://lunarthu.spaces.live.com/?_c11_BlogPart_pagedirNext&_c11_BlogPart_handlecns!48EA3793D3DA17C8!211&_c11_BlogPart_BlogPartblogview&_cBlogPartJanuary 10学做一个PM By Cheng Lu 对于我们的SmartMe&#xff0c;我是真正倾注了感情的。看到今天SmartM…

sqlite查询空日期类型_SQLite比较日期

我有这个sql语句&#xff1a;SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum BETWEEN 1993-01-01 AND 2000-01-01但我得到一些奇怪的结果,如&#xff1a;2.02.1990“Geburtsdatum”是DATE任何建议或解决方案&#xff1f;我的表格结构&#xff1a;CREATE TABLE Kunde (Kunde…

现代软件工程系列 学生读后感 梦断代码 软件难做

http://cid-064ec84e17924332.spaces.live.com/blog/cns!64EC84E17924332!173.entryDecember 06读《梦断代码》 读《梦断代码》的感想 《梦断代码》详细叙述了OSAF的Chandler项目从2001年开创以来直至2005年间的进展状况&#xff0c;真实展示了Chandler项目的艰难的开发过程&am…

现代软件工程系列 结对编程 (II) 电梯调度程序

[很多同学完成了上一个结对编程项目后, 很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架, 和算法] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pair Project II Elevator Scheduler Design and implement an Elevator Scheduler to aim for …

java 中violate_Java中的Volatile关键字

Java的volatile关键字用于标记一个Java变量为“在主存中存储”。更确切的说&#xff0c;对volatile变量的读取会从计算机的主存中读取&#xff0c;而不是从CPU缓存中读取&#xff0c;对volatile变量的写入会写入到主存中&#xff0c;而不只是写入到CPU缓存。实际上&#xff0c;…

现代软件工程系列 创新靠学分

如何在学校里讲创新, 这是一个老问题。 但是天朝的教育体制总有办法&#xff0c;请看: http://news.163.com/10/1125/03/6MABIS4H00014AED.html 武汉一高校设"创新学分" 不搞创新不能毕业 去年秋季&#xff0c;武汉科技大学中南分校出台《学籍管理规定》&#xff0c;…