现代软件工程系列 学生和老师都不容易
老師的難處 -?V2.0 的困難
有笑話說某人請客, 客人無論是坐轎或是步行前來, 主人都能奉承一番。 有客人說自己是爬著來的, 主人奉承說? - 穩妥之至!?
?
據說有些學校的有些課還是沿用 N 年前的教案和教材,? 這當然穩妥之至。我看到學校用很多年前的穩妥教材把學生送走之后,??會說 -?我校一貫鼓勵創新, 培養了大批創新型人才...?
?
這些創新型的同學,?都到這里碰面了:?
?
?
我講的課是 <現代軟件工程>,? 我還是希望與時俱進的。 當然, 要變化, 就有風險。? 業界常說某軟件公司的產品要到V3.0 才好用。 從我的經驗來說,在V3.0 之前的V2.0 是比較困難的一個版本。 V1.0 初試啼聲,市場反映不錯,評論家也主要評點產品的創新點及潛在影響,對缺陷往往比較包容。 V2.0 一方面要繼續原有的突破,把V1.0 來不及實現的功能都搞出去;同時,V1.0 的發布產生了更多的機會,很多人有了新的想法;另一方面要調整內部結構,讓產品更穩定。 這幾種不相容的思路混在一起,加上用戶和評論家更高的期望值,V2.0 很可能是不如人意的產品。
?
?
在2009 年初, 我在清華大學軟件科學試驗班的《現代軟件工程》也講了兩年 (2007, 2008),算是V2.0,從結果上看,也碰到了類似的情況,下面是一個列表比較兩屆學生的匿名反饋:
| 評分內容 | 2007 | 2008 |
| 熱情、認真、投入、嚴謹,教書育人 | 95.45±3.80 | 95.00±3.42 |
| 講課思路清晰,重點、難點突出 | 94.55±4.04 | 89.29±5.77 |
| 講解生動、有吸引力,能激發學生的求知欲 | 92.73±5.15 | 90.71±5.37 |
| 師生互動,鼓勵學生質疑,并給予思路的引導 | 94.55±4.04 | 93.57±3.69 |
| 提供或推薦的教學資料有助于學生學習 | 93.64±4.23 | 86.43±8.19 |
| 作業等課程訓練有利于課程內容的學習 | 94.55±4.04 | 90.00±4.95 |
| 考核及評價方式能激勵學生主動學習與鉆研 | 92.73±5.15 | 87.86±4.88 |
| 注重學生創新意識和獨立思考能力的培養 | 92.73±4.37 | 91.43±4.44 |
| 對學生課外學習給予指導、建議 | 92.73±4.37 | 91.43±4.92 |
| 學習本門課程后有收獲 | 92.73±4.37 | 90.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)?講授 <現代軟件工程>.? 寫過 <移山之道> <編程之美> (合著) ]
?
?
總結
以上是生活随笔為你收集整理的现代软件工程系列 学生和老师都不容易的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php ignore special c
- 下一篇: 大白菜pe解锁bitlocker_微PE