商管程式設計 (4):我對 CS+X 的看法

承接前一篇,可以很明顯地看出我為什麼支持臺大推動 CS+X 這樣的「基本能力課程」。不過 CS+X 推動至今,也遇到很多問題並且遭受很多批評,這篇我就針對這些寫點我的理解和看法。

關於臺大 CS+X,可以參考這個頁面的說明。用簡單的來描述我的理解的話,就是學校希望讓非資訊本科系的學生也能盡量利用資訊科技來解決各自專業領域內的問題,因此希望盡量開設資訊科學、資訊科技相關的課程。

最一開始是想要讓資工系的專任教師們與一些其他系所(當初的新聞稿上有提到中文、政治、社會等等)的專任教師一起開發「共授課程」,在那些課程中教授如何利用資訊技術解決各領域的問題。舉例來說,我聽說過的一個課程目標是讓中文系學生寫程式對古典小說做文字探勘、語意辨識,進而分析作者的寫作風格的轉變,甚至判斷是否有哪些段落是由其他人代寫的。

不得不說我一聽到這個課程目標,就覺得「這做得到嗎?」。如果中文系的同學真的從未寫過程式,要在十八週內從零開始到能做出上面這種事情,要不是授課教師有點石成金的能力,就是這個課程目標把寫程式想得太容易了。我不否認一定有人做得到,只是我覺得大多數人做不到。後來好像(有錯請指正)課開下去之後確實發現太困難了,結果該課程還是以教授基本的程式設計和資訊技術為主。

看起來要讓資訊技術為零的學生修這些共授課程,然後直接變成可以用資訊技術解決該領域的問題,可能是有點勉強了(除非有現成的工具是不用寫程式就可以用的);於此同時,資工系教授本來就有自己系所的專業課程要教(也有老師開通識課),若是感到負擔太沈重也可以理解。這麼看來,由臺大的共同教育中心來新聘教師,讓他們專門負責開設給校內同學的資訊技術課程,先讓大家有些基礎之後,再去考慮如何設計那些共授課程,似乎是比較有機會的。而這也就是去年開始推動的 CS+X 的模式了。而 CS+X 的課程由於是準備開給非資訊本科系學生的,因此設定的方向是以應用和工具為主,而不是以理論和原理為主。

===

以上是關於 CS+X 的一些(我接收到的)資訊。關於 CS+X 的初衷、作法和授課,網路上有很多批評,就不一一列舉了,這裡我列一些比較理性的訴求,都是資管系同學陳品寫的:文章一文章二文章三,訴求主要是修正課程方向(不要有工具類的課,而是以原理類的課為主)、修正計畫名稱(不要叫 CS+X,可能可以叫 IT+X 或別的)、修正教學模式(這部份意見比較龐雜,換老師、換排課方式、換講課方式、換收學生方式… 都有)等。底下的留言正反意見都有,也蠻值得一看的。

這一個問題有很多層次,我就分三個層次說說我的看法。我當然是對事不對人,相信大家可以理解的

策略層次:應不應該有 CS+X?

我們應不應該有類似通識課程的給全校非資訊本科系學生的基礎資訊能力課程呢?我想答案應該是肯定的,而且大多數人也不反對。畢竟未來確實是資訊時代,而資訊技術也確實可以幫助很多領域的人解決問題,硬是要放著資訊科技不去用,實在是劃地自限。

有人覺得這些東西不需要放在共教中心底下開成全校性課程,有興趣的同學自己去資工系等資訊科系學就好了。這部份我不認同,畢竟資工系自己的課有他們的任務,他們的學生就是要學到那麼深那麼難,那些課程就不是給非資工系的學生來探索和做入門學習的。退一百萬步講,我們也要為資工系的師生想一下,他們有必要為了照顧臺大其他系的學生,去犧牲自己系上的課的教學品質嗎?

有人覺得這些東西不需要是算學分的正式課程,就以短期營隊、工作坊的形式進行就好,而臺大現在舊有計中、資工系等單位開設的這些不算學分的訓練課程,所以不需要再耗費臺大資源來開這些算學分的資訊課程。這部份我也反對,第一是那些現有課程都要收費,如果我們真心覺得某個東西很重要,就要保障沒錢的人不會不能學;其次是如果那些課程不算學分,就是在告訴學生「我們這些設計課綱的老師,其實也沒有真的覺得那些課程很重要」,就像管院除了資管以外的各系,如果一直跟學生說程式設計很重要、你們要花時間學,結果修商管程式設計不能算入畢業學分,一來打自己嘴巴,二來自然會有比較多學生因此決定不學。

有人覺得根本不需要這麼基礎的課,現在免費的網路資源這麼多,這種能力自學就好。我只能說,每個人天生擅長的東西都不一樣,你覺得很簡單不表示人人都覺得很簡單,我就覺得演算法很難啊!所以恐怕不能這樣推論。

最後,有人覺得這不應該叫「CS+X」。我覺得這見仁見智,你說 CS 不是只有寫程式、做系統,當然是沒錯,但你說叫「IT+X」比較好,那我也要反對,IT 也不是只有寫程式跟做系統,至少還有一大堆系統分析、系統設計、需求分析、專案管理的事情,要我說的話我覺得 CS+X 還比 IT+X 好咧。就算 CS+X 裡面全部都教資料結構跟演算法好了,也依然不是 CS 的全貌,說到底根本不可能在這樣的計畫裡呈現 CS 的全貌不是嗎?我不覺得需要這樣而覺得這名字不好。至於人們會不會因此貶低資工系跟 CS?只要資訊相關科系的同學們依然能在資訊能力上遠勝過其他人(應該要可以吧),人們就不會因此貶低資工系跟 CS。此外,多少公司的老闆貶低資訊部門的困難度和重要性?又多少理工科學生覺得管理學院都在打嘴砲?硬要說的話,不瞭解才是貶低的原因。

戰術層次:應該教工具還是教原理?

很多人關於 CS+X 的看法是,不應該就是教學生寫網站、寫 app、寫遊戲、資料分析等等比較上層的東西,而是應該從程式設計、資料結構、演算法甚至計算機結構開始按部就班往上教,不然我們跟巨匠電腦有什麼兩樣?

我對這個意見既同意也不同意。首先,並不是外面有在教的東西學校就不應該教,原因剛剛也說過了,我們要照顧沒錢的人,而且我們要對所有學生宣示我們對這個東西的重視。其實想想校內也有算學分的日文課、韓文課、寫作課… 難道通通都不應該開嗎?補習班也有老師能把線性代數、機率、離散數學、資料結構、演算法都教得很好,所以學校就不用教了嗎?

其次,大學在訓練某個科系的專業人才時,確實應該教理論而非應用,但為非本科系的其他人開設的課程,就不一定要這麼做了。對數學系的很多人來說,高等微積分才是數學,我們其他科系學的大一微積分只能稱作算術,但它確實是商管、社科、工程… 等許多領域的人所必須要會的「工具」,而我們通常也真的不需要知道一個函數是否可以被微分,就可以使用微積分這個工具。難道學校就不應該開課教大一微積分嗎?同樣的道理,對資訊本科系的人來說,或許資料結構、演算法、計算理論這些才是理論,各式各樣的程式設計就只是工具而已,但對其他科系的人來說,他就是只需要這個工具而已啊!我就只是要拍照,難道非得先修普通物理學跟光學嗎?我就只是想要看日劇多看懂一點,難道非得從源式物語開始學日文嗎?所有寫程式的人都要會呼叫 sorting function,但不是所有人都要能實做每一種 sorting algorithm 吧;我會認同資管系的學生要會實做各種 sorting、queue、stack、linked list,但我絕不會在通識等級的課上要求非資訊本科系的學生練習這個。覺得所有人都應該「從基礎學起」,我覺得那是本科系人的傲慢,也沒有必要。

其實稱呼現有的課程「工具類」我覺得也不恰當,它可不是教學生用網頁製作軟體製作網站,它還是要學生寫程式的… 不過姑且還是這麼稱呼吧。讓學生從對他們直接有用的技術開始學起(例如做網站做資訊視覺化、寫網路爬蟲爬資料,或者對多項式做一次微分),而不要一下子就用艱澀的理論和困難的任務砸死學生的興趣(例如要求學生精通 C 與 C++ 的指標,或者證明一個函數隨處連續但隨處不可微分),我認為是合理的。世界上需要很多會講英文的人,但需要很少精通莎士比亞的人啊!

我同意的部份是,理想狀態下 CS+X 這系列的課程應該要從工具類到理論類都有,不要只有工具類,畢竟有一點底子之後再去學習那些工具,是可以事半功倍的,學習會更紮實,也更不會囫圇吞棗;而有理論類的課的話,也會更充實 CS+X 的系列課程。我們或許可以考慮,在現有的工具類課程之前,幫學生規劃基礎的程式設計課程(但是是通識等級,不像資工或資管的這麼難),讓學生修過之後,才可以修現有的做網站、做 app、資料視覺化、資料分析這一些課程,讓他們學得更紮實。但我並不認為只能有理論課程;我認為應用類或工具類課程一樣有其價值,特別是對非資訊本科系的學生。

不過要讓各種課程都有,那就是要有充足的後勤支援。這部份問題也不小,底下再做說明。

執行層次:應該怎麼教?

截至目前為止,CS+X 得到的很多負面評價還是關於課程執行。我看了些網路評論,也跟不少同學私下聊過,我想有些負面評價是確切且中肯的。比如說,有些課程要求同學分組,結果期末專案都是組裡那一兩個已經學過程式設計的同學做出來的;有些課程是以「密集課程」或「微課程」的方式進行,而非大家習慣的一學期十八週這樣的步調,這對學生和老師都是挑戰,結果也確實節奏抓得不好;有些課程把同學們的程度或可投入的時間估算得太理想化了,結果課前畫了大餅,課程進行後才發現根本做不到;有些課程太強調讓學生培養自學能力了,卻忘了很多人一開始都需要有人手把手帶進門,培養好基礎之後才能自學。其他還有一些教師個人風格和疏失方面的問題。

我覺得課程規劃和執行不佳,就是授課團隊的責任,這方面教師責無旁貸,就是要想辦法修正並且解決。只是我也很清楚,任何新手老師一開始都需要一些時間鍛鍊自己的教學能力,並且了解自己的學生。剛回來教書的第一年,我就把系上一般同學對我教的統計學跟作業研究的熱情高估得太多了。我忘了我是因為熱愛這些科目,才去唸了相關領域的博士,才獲得教這些課的能力和資格,但同學們不是啊~~他們不是懶或笨,而是他們就是想學到一個 OK 的程度而已。我也是花了一兩年才漸漸調整出合理的課程內容與方向。我也試了翻轉教室,也大爆炸過,也是多試幾次才慢慢比較抓到要領。對於新手教師,我覺得我們必須要多點包容。在這個新手教師的摸索期被教到的學生當然是比較倒楣,但只要教師不是故意要犧牲某些學生,我想那就是每個人學生都有機會會遇到的倒楣狀況吧。

讓教學品質雪上加霜的,還有學校方面的要求與支援。其實要保證教學品質也不太難,就讓新手教師不要教太多課,也不要收太多學生,然後給充足的助教,這樣就可以了。但不幸地,去年至今校方給 CS+X 授課團隊的要求和支援是剛好相反:必須開很多課、助教不是很夠,而想修的學生又太多(然後授課團隊經驗不足,就真的收了太多學生)。

資訊類課程這問題又更大,畢竟去新聘教師來教資訊課程說來簡單,但有(臺大看得上眼的)資訊能力的人才,在業界的薪水都是很高的,要讓他們來臺大專職授課並不容易。而且因為種種原因,臺大去年開出來的缺是專案教師缺,就是一年一聘、隨時可以因為計畫要停了就請你走路,而不是像我這種專任教師缺;但於此同時又還是只打算聘博士。如果我是個業界人才,碰巧有博士學位,又碰巧也喜歡分享知識,那我或許會覺得轉進校內做教育是挺好的(請注意一般人想轉進,臺大還不會要),但看到這是個專案教師缺,要是我全心投入教個三年結果校內方向改變然後我被解聘,那我怎麼辦?大家應該可以想像,教學通常是一個讓學生成長,並且犧牲自己成長的工作;身為專任教師,如果花時間做研究寫論文,成長的是我自己;身為業界人士,我如果繼續待在業界累積經驗、磨練技術,成長的也是我自己。如果自己的能力有兩、三年停滯成長,再回到變動快速的資訊業界時,發現自己的技能已經落後了,我豈不是完蛋?

所以如果要說臺大推動 CS+X 有什麼問題,我覺得開專案教師缺來推動是最大問題,結果幾乎一定是找到必須在外面繼續工作、蠟燭兩頭燒的人,自然也就會影響教學品質。當然這背後一定有它的理由,我也可以理解就是了。

此外,在去年那個「他們」實際上只有一個人,大家都知道就是蔡芸琤老師。好不容易找到一個有資格(臺大資工所博士,念博士的期間也持續累積業界實務經驗,而且有熱忱)的人,結果就只有一個人,甚至連助教的支援都不太夠,然後就要一個老師開一堆課程,坦白說會爆炸也是理所當然。

最後,校內順便再做了一件事讓 CS+X 提早爆炸,就是「把這個計畫取名為 CS+X 並且大力推廣」。我不太能理解(可能是因為我不是「資訊本科系」吧),但 CS+X 這個名字踩到非常多電機、資工、資管師生的雷,大家覺得這個計畫底下的課在教的東西「根本就不是 CS(電腦科學)」、「讓人以為 CS 就只有這樣」;然後任何東西只要被大力推廣,下場自然就是遭到大量批評。我相信學校如果讓我的商管程式設計開在博雅 101,然後發個兩篇新聞稿說這門課有多棒,我應該也馬上就會被酸爆了… 

===

總結一下的話,我認為策略面是 OK 的,學校確實應該開設資訊領域的課程給非本科系學生;戰術面 OK 但有瑕疵,工具類課程並不是不應該出現,只是最好不要只有工具類課程;執行面問題比較大,而主因一個是學校低估了做這件事情的難度(並且過度宣傳),一個是授課團隊經驗不足,導致教學品質不夠好並且和人們的期望差距太大。

我覺得同學們如果想要幫助臺大「解決這個問題」,我個人建議可以考慮的事情有:

  1. 建議學校增加師資,最好是幫 CS+X 開專任教師缺,如果實在不行,那就多開幾個專案教師缺,合理化每個教師的授課負擔。
  2. 建議學校增加助教,這對初學者來說非常重要。
  3. 建議學校在 CS+X 內增加基礎原理類的程式設計課程。這部份的關鍵我想還是在增加師資。
  4. 當志工去加入授課團隊。

效益可能比較低,我個人不建議做的事情則是:

  1. 建議學校撤換現行授課團隊。如前所述,夠資格的人很難找,蔡老師就算目前為止執行的不好,至少是夠資格的人,就我的了解也夠有熱忱(比一般人多多了)。而如果要換新團隊,那又要讓新團隊有一次適應期,我想未必是個好辦法。
  2. 建議用原理類課程取代所有工具類課程。我相信有很多非資訊本科系學生需要的就是工具類的課,而不是原理類的課。
  3. 更改「CS+X」這個名稱。一來「IT+X」或其他名字都未必更好,二來(我覺得)這沒有解決問題。

以上就是我對 CS+X 的個人看法了。我個人還是很感謝像這樣的努力在臺大出現的,畢竟臺大這麼大又這麼傳統的地方,做任何課程革新都不是容易的事;我也很開心看到有愈來愈多的人都更重視資訊教育了。我個人可能沒辦法直接為 CS+X 或校內的資訊基礎教育再多做些什麼了(不然誰教商管程式設計)~~大家如果有想法和力量不妨貢獻出來,但於此同時也請體諒第一線執行者的困難,給他們更多支援吧。不管怎樣,都一起關注 CS+X,並且給予理性的批評和支持吧!

廣告

1 則迴響

  1. Jacky

    老師您好,老師您的建議與Harvard CS 50的教學目標不謀而合,何不直接建議校方參考CS 50作為目標?

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: