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

老师的难处 - 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…

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

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

java 中violate_Java中的Volatile关键字

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

java 如何发提示_消息提醒-如何实现收到待办给QQ发送提醒?

一、前期准备一台windows服务器(用于运行QQ机器人)下载QQ机器人框架二、QQ机器人配置1、解压前面下载的机器人框架和httpapi2、打开解压后的 小栗子框架.exe3、在用户列表右击选择添加单个4、添加后右击点添加后的账号选择登录选中QQ5、点击应用中心>点击导入插件>选中前…

顶级程序员的心得 - Coders at Work

这篇博客经历了 CSDN 的历次改版后&#xff0c;格式已经坏了&#xff0c; 我重新写了一篇&#xff0c;重排了格式&#xff1a; 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客顶级程序员的心得 –– Coders at Work我2009年读了 “Coders at Work”, …

敏捷软件开发宣言–Manifesto for Agile Software Development

敏捷开发, 谁不会呀, 不就是 没文档, 出活快, 用户说啥都能改? 下面是一个笑话, 王屋村的大牛说 - 我最近转手接了一个活, 完事能挣四五万, 我拿过图纸一看, 不就是盖一烟囱吗? 我们是敏捷 (Agile) 的团队&#xff0c;要文档作甚? 马上开始干活&#xff01; 都快盖好了&am…

教师管理系统设计报告java_教师办公管理系统的设计与实现

随着计算机及网络技术的飞速发展&#xff0c;Internet/Intranet应用在全球范围内日益普及&#xff0c;当今社会正快速向信息化社会前进&#xff0c;信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来&#xff0c;提高了我们的工作效率。教师办公管理系统是一个教育…

顶级程序员的心得–Coders at Work

最新版本在这里&#xff1a; (2584条消息) 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客https://blog.csdn.net/SoftwareTeacher/article/details/113489014

scrum–yesterday once more

在敏捷开发的 SCRUM 流程中, 一个基本要求就是团队中的成员在每日例会中介绍自己昨天的进度, 今天的计划, 和遇到的困难。 下面是《现代软件工程》课程上一个学生团队在2/18 和 2/19 这两天的报告。 粗粗看去, 不禁有 “昨日重来” 的感觉。 一些同学的任务在2/18 报告的 yest…

java 类加载生命周期_Java类的加载与生命周期

一、概要&#xff1a;类的生命周期从类的 加载、连接、初始化 开始&#xff0c;到类的 卸载结束&#xff1b;二、几个阶段&#xff1a;加载&#xff1a;查找并加载类的二进制数据。(把类的.class文件的二进制数据读入内存&#xff0c;存放在运行时数据区的方法区&#xff1b;类…

软件工程 动物世界

在一个神奇的国度里生活着许多动物, 其中有猪, 鸡, 和鹦鹉。 它们每天搞头脑风暴, 琢磨如何创业, 最后鹦鹉提议它们合伙开一个早餐店: 具体分工如下: 猪: 提供猪肉, 做熏猪肉 (bacon) 鸡: 提供鸡蛋, 做煎蛋 鹦鹉: 提供咨询, 它会每天阅读大量博客, 给其他团队成员提供建议, 例…

java filterinputstream_java.io.FilterInputStream.close()

全屏java.io.FilterInputStream.close()方法关闭此输入流并释放与该流关联的所有系统资源。声明以下是public void close() 方法的声明&#xff1a;public void close()参数NA返回值该方法不返回任何值。异常IOException -- 如果发生I/ O错误。例子下面的例子显示了public void…

软件工程 敏捷的酒后问答

来源&#xff1a;《构建之法》 王屋村移山公司的程序员果冻最近请假参加了一系列敏捷的培训, 有好事者传言他和 “a-girl”勾搭上了, 其他年轻同事有点坐不住了, 也表示要参加此类活动。 几天后, 果冻回到公司, 给所有人发了一枚写有 “Agile” 的胸章。 他纠正大家的发音, 这个…

现代软件工程 怎么教好课 (读书笔记)

0. 教师教学有培训和参考书么? 我从来没想到过我会在大学里教书, 而且还教了好几年, 好几个学校。 当时接到任务的时候, 我把它当作实习生培训和新员工培训的”学院版”, 还是继续强调实践, 反馈, 合作, 就这么开讲了。 在微软公司, 做大部分和人相关的事情, 都得先有一个培训…

php oci 11g.dll下载,Oracle oci.dll

Oracle oci.dll是在32位PLSQL Developer软件访问Oracle 11g 64位数据库必须的系统dll文件&#xff0c;用于支持连接访问数据&#xff0c;如果系统出现相关dll文件缺失&#xff0c;就需重新下载&#xff0c;有需要的朋友快来巴士下载网下载吧&#xff01;Oracle 11g oci.dll文件…

软件工程 案例分析作业

现代软件工程 构建之法 作业https://bbs.csdn.net/forums/SoftwareEngineering?typeId1723 软件工程作业 案例分析 (建议作为个人或结对作业) 很多同学有疑惑&#xff1a; 软件工程课是否就是枯燥的理论课&#xff1f; 或者是几个牛人拼命写代码&#xff0c;其他人抱大腿的…

php的数据模型包括,数据库中模型的分类有哪些

数据库中模型的分类&#xff1a;1、概念数据模型&#xff0c;面向用户、面向现实世界的数据模型&#xff0c;描述一个单位的概念化结构&#xff1b;2、逻辑数据模型&#xff0c;可以通过实体和关系勾勒出企业的数据蓝图&#xff1b;3、物理数据模型&#xff0c;具有以实物或画图…

php 万分之一几率,那万分之一的概率啊……

【今日】不要心存侥幸心理&#xff0c;那万分之一的概率啊……也许就是发生在自己身上。【正文】1老公抱着暖暖&#xff0c;大踏步的向前走去&#xff0c;兴奋的说:“我刚在群里问了一下&#xff0c;还没人回复&#xff0c;你说不会两家店全部装修吧&#xff1f;这万分之一的概…