YYP OOP 之亂

前情提要

個人想法

YYP OOP 作業的問題點並不在於實際上有多難,而是我覺得大學部的必修課本來就不應該讓這麼多人覺得困難,就算本來已經很簡單了,很多人抱怨困難的話還是應該要更簡單。
大學部必修課的重點在於讓學生瞭解基本概念,如果讓學生有撞牆的感覺的話,很多人就會直接放棄了,無助於達成「讓學生瞭解基本概念」這個目標。

有人說,如果現在不設這樣的標準,不教這麼多內容,那以後出去工作是要怎麼辦?
重點再講一次,必修課的重點是「讓學生瞭解基本概念」,而不是「讓學生有工作能力」。
大學什麼時候有訓練學生符合業界需求的責任了?這本來不是大學的目的。

有人說,就是要這樣的難度,讓學生知道 C++ 很困難,或是讓他們知難而退。
再講一次,必修課的重點是「讓學生瞭解基本概念」,不是篩選學生,或是讓他們知難而退。

我並不想討論 OOP 作業內容上是否太難或不合理,問題在於實際上就是有相當比例的人覺得過於困難,對於他們來說是一種撞牆的感覺,這時候這門課就已經與「讓學生瞭解OOP的基本概念」這個目標偏離了。
如果你覺得這些東西是「本來就應該要會」的東西,那你大可自己精進或修選修課。讓這麼多人撞牆,不是必修課應該產生的合理現象。

以現在作業的難度,你批評那些做不出來的人是「不夠認真」、「不適合唸資工系」,那假設作業的難度再提升,你花了更多的時間把它完成,同時有更多人做不出來,那些人是否仍然「不夠努力」?
換句話說,假設難度不斷提升,通過的比率越來越少,失敗的比率越來越多,用這樣的方法去強迫大家「努力」,那何時停止?因為努力永遠都還可以更努力啊
有沒有發現,為什麼「夠不夠努力」是由一個外部的標準評定的?而且原本「夠努力」的人,我只要把標準再提升,馬上就變成「不努力」」。這樣有意義嗎?

教育並不是不斷地把標準提高以激勵(逼迫)學生符合標準,教育也不是篩選,教育…是讓大部分的學生學到東西(不管東西在你看來是多麼地少)。
因為有興趣的人大可以自己精進,可是對於初次接觸的人,你讓他這樣撞牆,可能就是讓他永遠不會再碰這個美妙而有趣領域的轉機了。

給高中生的大學選校系建議

看部落格的關鍵字排行,大概有很多人是在考完學測選大學校系彷徨無助之時搜尋到我那篇在交大資工一個學期的觀察與心得因而點進來看的吧。

其實我對於大學教育一直以來有蠻多想法,平常只和朋友討論,不過最近交大資工一連串讓我失望的事件之後,就決定還是來寫篇文章講些親身經驗,或許學弟妹可以少走點冤枉路。

TL;DR: (先講重點)

  1. 仔細全面調查,收集事實(儘量是第一手事實,而不是從誰聽來的),避開主觀的建議,那會影響你的判斷
  2. 考慮更多可能性,除了原本的目標,看看旁邊的岔路(儘可能看所有的岔路),也不要因為第一印象就不仔細調查某些事情

以上兩點來自我自己犯的錯誤,接下來會詳細解釋。

只講我自己的經驗恐怕太狹隘,所以講一下我總體上的想法。我有這些分類和參考(這很主觀,所以不要把它當成建議),我是這樣想的:

  1. 如果你自學能力很強,專業到都已經在接 case 賺錢,那最好不要唸大學。
  2. 如果你有自學能力,但是現階段各方面的能力還沒有厲害到可以去工作的等級,那可以去個必修學分少而且你不討厭的科系(通常是一類),然後選修其他領域中有興趣的課程。因為既然已經有能力自學,許多二類科系的必修你都可以自己學,非本系就可以跳過許多二類科系過多過重的必修規定,直接修較難以無師自通的進階課程。
  3. 如果你有興趣但是沒有自學能力,或者沒有特殊興趣去自學,但是老師家長要求你要讀的書都還應付得不錯的人,那也最好選個必修少且你不排斥的科系,有比較多的時間可以多方嘗試各種領域的東西,尋找興趣(如果還沒找到),一方面學習如何自學。
  4. 如果光是高中的課業就要花掉你大部分的時間,補習、讀書、寫題目什麼的,讓你從來沒有去嘗試過無師自通某些東西,或是說你根本不知道你喜歡什麼,那我不知道怎麼辦。

上面不考慮外部干擾因素,因為除了針對1的干擾,也就是我家希望我要唸大學之外,我要去哪個學校哪個系家裡都沒意見,所以我沒有處理外部干擾的經驗。

我高三當時應該是介於1和2,我的第一個 case 是高三學測完開始做的,但是因為是第一個 case ,所以我還沒有有自信到可以不念大學直接去工作的程度。

我犯的第一個錯誤:沒有仔細調查

從小到大家裡一直給我一個印象就是到了大學我就可以學自己想學的東西,再加上高三那時候太常看美劇和好萊塢電影什麼的,居然天真地認為臺灣的大學應該也像美國那麼爽那麼自由吧。雖然講起來很笨但是那時候真的是這樣相信的,也沒有想到其他的可能性。

很多學長姐說,交大資工很重視實作,而且 CNMC 許多學長也都是唸交大,在交大校計中和系計中做了許多厲害的事情,所以當時我對交大資工的印象很好,甚至好到把它和臺大資工並列。

當時我對臺大資工的印象,因為資訊奧林匹亞而有扣分,我不喜歡資訊奧林匹亞(或是任何演算法與資料結構程式競賽),因為我覺得那本質上還是只有單一答案的「考試」,問題和答案本身都不太實際,就跟數學考卷上面的題目和答案差不多(或者說他們和數學考卷上的題目和答案一樣實際)。當時也有認識一些打演算法競賽的同學,很多人可以在競賽中得名,但卻連什麼叫 BIOS 和作業系統都不知道,在我看來他們就和拼命去練習數學習題然後考試都能考一百分的那種人一樣。

這些打演算法競賽的人很多都進了臺大資工,而我不希望我的大學同學是這種人。我希望我的大學同學是和我有共同興趣,或是有特殊技能(很會考試不算特殊技能),可以和我一同切磋、玩,然後進步的人。

殊不知,交大資工和臺大資工都不是我高三所想像的那樣。

學長姐說交大資工「重視實作」,我就把這四個字腦補成我幻想的大學的美好模樣(「嗯,交大資工一定是那樣沒錯!」)。我幻想的大學的確重視實作,但我沒有實地檢查交大資工實際上是不是真的如同我的想像,也沒有想到學長姐所說「重視實作」跟我想像中的「重視實作」或許不是同一回事。

演算法競賽打得很好的人,的確進了臺大資工,但是我忽略了,打演算法競賽的人裡面,也有很多人有其他專長,有一個寒假接 case 可以賺十萬塊的,也有對資安很有研究,後來大學跑去打 CTF 的。

修補

要實際上瞭解一個科系到底在幹嘛,就一定要去看他們的科目表、修業規定(裡面會寫什麼是必修和選修,很重要!)、課程大綱、課程網站(看看他們的作業長什麼樣子)。如果可以的話,進他們的選課系統看看(可以得知課的時數和時段)。線上課程也可以參考,不過不要挑那種太熱門的線上課程(像是葉丙成的),那是傑出的部分,不要誤以為每堂課都是那樣。課程評價(像是BBS選課版之類的)我覺得少看為妙,因為都是主觀的評價,可能會給你錯誤的印象。(不過不可能有客觀的評價,評價本身一定是主觀的)

總之,儘量接觸第一手的事實(自己去調查),學長姐的主觀想法(「這系爛透了」等等)聽聽就好,他們所提供的事實也要儘量查證,因為很可能等你進去之後那就不是事實了,他們也可能因為自己的喜好而選擇性告訴你事實。向學長姐詢問的時候,儘量詢問精確的事實,例如「你們晚上的實驗課做得完嗎?」、「上課的時候師生的互動如何?」。

我犯的第二個錯誤:從未考慮其他可能性

高三時我就是一心要念資工系,有稍微看一下資管系,但從未調查(連稍微看過都沒有)其他科系。

到了大二在選課的時候,我才知道原來交大外文系不只有文學(第一印象),他們有一半的課程是語言學。後來我修了語言學概論之後,就喜歡上語言學了。後來修了西洋文學概論之後更發現,我其實沒那麼討厭文學,文學也沒有想像中那麼困難、無聊(不過我對文學仍然稱不上喜歡就是了)。

修補

除了前面提到的要仔細、全面地對一個科系進行調查之外。也要儘可能廣泛地對各科系進行調查,至少稍微調查就好,以免再犯我這種連交大外文系有語言學都不知道的錯誤。

反悔

要真的如同我前面講的這麼全面仔細地調查,想必要花很多時間,而且調查後作出的決定可能還是有瑕疵。尤其是臺灣的教育體制讓很多人是到了大學才真正展開生涯探索,可是又非得選一個系,很容易選到不喜歡的系。

所以,大一一進去發現苗頭不對,就趕快轉系了吧。大一可以少修一些系上的必修課,多修一些外系的課,看看外系的狀況,萬一遇到自己更喜歡的系,就儘快轉系吧,轉系拖越久成本就越高。

評交大資工學士班學生「自我實現」計畫

前幾個禮拜收到系辦的一封信,「交大資工學士班學生「自我實現」計畫」,讀完覺得這計劃怪怪的,前後花了幾個禮拜的時間整理想法,整理在這篇文章。以下為信件內容:

各位同學:

在過去數十年間,交大資工系曾是全國資訊領域的第一把交椅,所培育出來的大學生不僅具有極強的設計實作開發能力且有濃厚的興趣及企圖心自行開發對國家社會有價值的應用及系統,因此交大資工系的大學畢業生不僅為產業界所重用,他們也在國家資通訊產業的蓬勃發展中做出了極大的貢獻。

但目前,由於社會風氣的改變,大學生普遍欠缺企圖心、理想、主動學習及勇敢創新創造的精神,再加上各大學研究所推甄偏重學業成績而不重視設計實作能力的審查方式,近年來交大資工系的大學生已經逐漸看不到過去交大資工系大學生的精神及特質,目前已經很少看到有交大資工系的大學生為了自己的興趣或理念來充滿熱情的、自發的、長期的開發自己的作品。若讓此現象持續而不做改變,長久下來交大資工系所培育出來的大學生將無法像過去一樣帶領國家的資通訊產業在世界的舞台 上與其他先進國家競爭,交大資工系的光環將很快消退,交大資工系將不再是全國資訊領域的第一把交椅,也不再是學生、家長、及產業界重視的著名校系。

有鑑於此,交大資訊工程學系於2014年10月15日 的系務委員會中訂定了交大資工系大學部學生「自我實現」計畫辦法,採用「學生自我興趣導向」的作品開發方式,鼓勵具有企圖心、理想、主動學習及勇敢創新創 造精神的交大資工系大學部學生們開發他們自己想開發的作品,教授們則從旁提供指導來協助他們實現自己的理想。由於這種以學生為本位的實施方式,因此此計畫 稱為「自我實現」計畫。

為 了讓學生能自發性的且甘之如飴的想把一個作品做到最好,此「自我實現」計畫讓學生能依其興趣及理想自訂所要開發的作品,但因學生所學不足,學生勢必要主動 尋訪能指導且願意協助他開發其作品的老師來拜師學藝。由於是學生主動懇求老師指導及協助,學生需要敬重及珍惜老師的指導及協助,否則指導老師隨時都可拂袖 而去不再指導。另外,由於是自己想要開發的作品,學生會願意廢寢忘食也要把自己的作品給做到最好。

這個計畫辦法日前已經正式通過,有理想有熱情的大學生歡迎提出申請。目前為大一的學生需等到大二上學期才能開始進行。目前為大二或大三的學生則在2015年春季的那一學期(103學年度下學期)即可開始執行。申請截止日為開學兩週前,申請相關表格可向系辦公室詢問及取得。此計畫的詳細申請及執行辦法如下所列,請各位同學參閱。

 

交通大學資訊工程學系

————————————————————————————————————

附件:

國立交通大學資訊工程學系學士班學生「自我實現」計畫辦法

103.10.15 資訊工程學系系務委員會議修訂通過

  1. 目標:鼓勵大學生要有理想、企圖心、自我學習精神、以及積極開發自我興趣導向的軟體或硬體或軟硬體整合專案
  2. 從大二及大三上學期開始,有濃厚興趣及企圖心想要開發自我興趣導向作品(非指導教授所指定的題目)的學生,可以申請參與此計畫來敦請有意願的教授給予指導及協助。
  3. 此計畫可單人執行,亦可由 2 ~ 3人組成團隊一起執行。
  4. 此計畫為期一年(連續兩學期),亦可包含一學期(下學期)及一個暑假。
  5. 申請參與此計畫的學生需提出一個包含動機的自傳及自我作品開發計畫書(格式不拘),並獲得某位教授的書面同意來指導開發此作品。申請學生若不清楚系上哪位教授的專長適合指導開發此作品,可向系辦公室申請協助,系主任及各所所長會提供適合指導此計畫的一些教授名單供學生去請益。
  6. 若 以團隊申請,每位成員需清楚分工執行一個子計畫,並將各自子計畫的作品開發計畫書整合成一份進行申請。此整合計畫書中需清楚說明每位成員各自負責開發子計畫的細節以及為什麼需要用團隊的方式來進行此計畫。此外,每位團隊成員均需提出各自參與此計畫的動機及自傳。系務委員會審查團隊計畫時,若部分團隊成員所 提的子計畫不符合此「自我實現」計畫的積極開發精神,得不予通過這些成員的申請。
  7. 申請學生或團隊尋找到及獲得某位教授的指導同意書後(需請同意指導教授簽名,此指導同意書表格可向系辦公室索取),學生或團隊需填寫參與「自我實現」計畫的申請書(此申請表格可向系辦公室索取)並連同教授的指導同意書送交系務委員會進行審核,獲得審核通過後,此申請案才被系辦公室正式核可及承認。
  8. 計畫核可通過後,若學生或團隊作品開發成果優良,可申請獎助學金。在期中(第一學期後)提供期中報告及期末(第二學期後或暑假後)提供期末報告時,若開發作品成果優良經指導教授推薦(需請指導教授寫推薦信,格式不拘)及系務委員會核可,每位學生每次可分別獲得 $5,000 元獎助學金。若以團隊方式執行計畫,想申請獲得上述獎助學金的學生,其子計畫的開發成果需獲得指導教授的推薦且其期中及期末成果報告的品質需獲得系務委員會的核可通過。
  9. 上述學生,若能獲得自己作品的期中成果報告獎助學金及期末成果報告獎助學金,每年系辦公室會自動造冊保管,在資工系碩士班進行推甄審查時,主動提供名單給審查老師,並為其加分。
  10. 由 於此計畫的精神是屬於「自我實現」的精神,若計畫執行期間學生志趣改變不想再繼續接受指導教授的指導來繼續執行其作品開發計畫,可隨時終止此計畫,不需經其指導教授同意。反之,若指導教授認為學生已喪失其當初之作品開發興趣及熱忱,亦不需學生同意,可隨時終止與學生或團隊之間的指導教授關係。
  11. 本辦法由資訊工程學系系務委員會議訂定、修正時亦同,未盡完備處得隨時修改。

信頗長,真是抱歉。

大學生普遍欠缺企圖心?

首先,「由於社會風氣的改變,大學生普遍欠缺企圖心、理想、主動學習及勇敢創新創造的精神」我不知道寫這份公告的人是誰,看的究竟是有多廣可以觀察到所有大學生的狀況,我想應該沒有人有這種能力。一竿子打翻所有大學生的這種過度推廣顯然有問題。

這個計劃是資工系系務會議通過的,所以寫這個計劃書的人很可能是由交大資工系的學生為樣本來進行推斷,其中「大學生」一詞也有可能指的是「交大資工系大學生」,總之,這段話似乎是在說「交大資工系的大學生普遍欠缺企圖心、理想、主動學習及勇敢創新創造的精神」,既然縮限了指涉對象的範圍到「交大資工系的大學生」,那反過來思考,有沒有可能是篩選的過程導致交大資工傾向於收到這樣的學生呢?

依我來看,交大資工的篩選過程有些問題。從最近一屆的交大學士班入學資訊來看,在第一階段當中,首先必須滿足英文前標、數學頂標、自然前標,並依照篩選倍率比序後,前N名才能進入第二階段。在第二階段的評分當中,學測成績佔了總成績的40%,備審資料佔了60%。我去查了前二屆、前三屆,篩選標準大致相同。

來看看臺大資工,依照大學招生委員會聯合會的資訊,103年第一階段標準英文、數學、自然都是頂標,第二階段評分當中,學測成績佔20%,備審資料40%、數學筆試或程式設計40%。

如果想要收到對資訊領域本來就有興趣,甚至已經具備一些技術的高中生,那提供一個考程式設計入學的管道不是最能夠吸引這些人嗎?(雖然臺大資工的成績限制本身還是很嚴格)

事實上,臺灣的高中課業本來就不輕,再加上多數家長的心態,讓高中生平常就已經很少有時間培養興趣和專長。高中也缺乏專業選修課程,幾乎全部的時間都花在基礎學科(國英數物化生)的訓練,要利用學校課程培養興趣專長也不太可能。有時間培養興趣專長的,一種是本身極為擅長應付課業(我不想用聰明這個詞,不過擅長應付課業通常就是家長老師所說的聰明),不需要花費太多時間,把其他時間拿去培養專長;另一種是大多數,沒有那麼擅長應付課業的人,他們放棄了一部分的課業,把時間挪給興趣和專長。

臺大資工的篩選,極有可能篩選到第一種人。至於交大資工的篩選,就要看那佔分60%的備審資料究竟是如何被評分的,這個過程一向不公開,不過從一位教授對我的說法,可以略知一二。教授表示,他們在看備審資料來推測實作能力的時候,比較傾向參考獎狀,如程式競賽的獎狀。對於像我這種沒有獎狀但是高中時代就實作了一些系統,甚至還接過案子的人,教授說,這些作品沒有一個評分的組織來為它背書,教授難以快速判斷這些作品的技術含量,教授事務繁忙,也不可能花很多時間仔細看備審資料,去評估這些作品是否真的能夠證明學生的實作能力。

交大資工的教授也不願意把成績門檻拉低,並透過更仔細的審查備審資料,甚至是口試,來讓那些對資訊領域懷有大量興趣、熱忱,但是成績並非頂尖的高中生有機會進來。對於教授來說,降低成績門檻是一個很困難的決定,有些教授可能會覺得,數學成績不好的人,資工系必須花更多時間教他們基本的數學;或許有些教授知道,成績好不代表興趣高,衡量興趣程度也不像衡量成績那般那麼簡單,更容易判斷錯誤,收到假裝有興趣但是成績不好的人,但他們寧願收這些成績好的人(多少代表他們願意唸書),中規中矩地唸完4年,也不願意冒風險,收到基本能力不佳的人吧。

為什麼要申請?

這個計劃究竟對學生有多大吸引力呢?分析一下申請的優點:

  1. 期中期末各有5000塊,可是要有教授的推薦信和系務會議核可
  2. 對研究所推甄有幫助
  3. 有教授指導

首先,10000塊……我不知道這對於一般大學部學生這價錢能不能引起他的興趣。至少以我來說,審查過程那麼繁複,要交自傳和企劃書,還要系務會議核可,還要說服指導教授同意,而且做完了還要寫各種報告,整個計劃要拖2學期,這樣才一萬塊……未免太麻煩。一萬塊大概是架設一個 WordPress (不包含外觀主題設計)並且維護伺服器3個月的費用;一萬塊我暑假去實習10天就賺回來了,在學校打工時數多一點一個月也有五千塊啊。

雖然說這個計劃是做「自己想做的事情」,做自己想做的事情就可以拿到一萬塊,好像還不錯。不過因為一萬塊實在是太低了,比較像是學生做這計劃的附加價值,而不太可能成為做這計劃的主要目標,也不太可能構成吸引力。(意思是,若本來有興趣的學生,就還是會參加這計劃,可是對於本來沒有興趣的學生,不太可能因為這一萬塊就開始想有什麼專案可以做,加入這個計劃以爭取到這一萬塊

第二,對研究所推甄有幫助,對於很多學生來說,這應該相當有吸引力。就算申請的不是交大的研究所,這種系上背書認證的專案,到其他學校應該也會有相當幫助吧。

不過這種做法治標不治本,信件中提到:「再加上各大學研究所推甄偏重學業成績而不重視設計實作能力的審查方式」,所以寫信的人其實知道現在資工研究所推甄入學的問題,可是這個計劃幫助推甄的方式是「在資工系碩士班進行推甄審查時,主動提供名單給審查老師,並為其加分」,可是要讓大學生具備「企圖心、理想、主動學習及勇敢創新創造的精神」,根本上的解決方法應該是徹底改革研究所推甄入學的方式,讓研究所入學的時候不只看申請者的成績、參加什麼學校計劃、拿了什麼獎狀,而是更全面性地評估申請者是否具備「企圖心、理想、主動學習及勇敢創新創造的精神」。研究所入學一旦開始崇尚這種精神,想要進研究所的大學生自然就會開始注重培養。

不過當然,這優點也只有對想要申請研究所的人有吸引力而已。

第三,有教授指導,不過「若指導教授認為學生已喪失其當初之作品開發興趣及熱忱,亦不需學生同意,可隨時終止與學生或團隊之間的指導教授關係」(不過學生也可以隨時單方面終止)。

乍看之下很棒。不過想想,就算沒有這個「自我實現計劃」,學生若自主發起一個專案,請求教授協助,教授難道會拒絕嗎?教授應該會覺得很高興吧?

教授的專業是否能夠幫助到學生也是一個問題。我猜很多學生應該需要網頁和 App 開發相關技術,可是資工系完全沒有這方面的課程,教授通常也對這方面不熟悉。不過資工系沒有這方面課程和師資也還算合理,電腦科學裡面本來就不包含網頁和 App 開發。網頁和 App 開發還是在網路上或看書自己學比較好。

這些優點裡面,對學生具備實質吸引力的,我看只有第二點,對研究所推甄有幫助。

為什麼不申請

上面已經講了幾個根本不是優點的優點,再來講幾個缺點:

  1. 申請申請審核審核報告報告,太多申請審核報告
  2. 計劃需為期2學期或1學期+1暑假

首先,要申請進行「自我實現」計劃,就要「提出一個包含動機的自傳及自我作品開發計畫書」,並取得教授的書面同意指導書,接下來還「需填寫參與「自我實現」計畫的申請書」,然後「送交系務委員會進行審核」,通過之後方能獲得系辦的承認和背書。

上面還只是「申請進行」而已,要取得每次五千塊的獎學金,分別需要撰寫期中與期末報告,並且「經指導教授推薦及系務委員會核可」。若是以團隊方式進行,每個子計劃也需要分別提出期中與期末報告,和教授的推薦信。

正是因為「各大學研究所推甄偏重學業成績而不重視設計實作能力的審查方式」,所以推出自我實現計劃,為學生的實作能力提供一些背書,講難聽一點就是把實作能力轉換成另一種成績,希望透過系上背書的方式,培養學生的「企圖心、理想、主動學習及勇敢創新創造的精神

不覺得怪怪的嗎?怎麼會是透過外部的承認(系上背書)來讓學生具備企圖心、理想、主動學習的精神呢?企圖心、理想、主動學習都是發自內心的不是嗎?人本來就具備企圖心和理想的,只是透過臺灣的教育系統的時候,我們把這兩樣東西和主動學習全部都磨掉了。

那大學又要怎麼重新喚起這樣的精神?應該是建立環境,讓學生重新相信理想(相信理想會成真大概就可以產生企圖心了),還有設計課程,讓學生喜愛課程,讓我們相信,這些課程所學出去真的是有用的。

環境、風氣要怎麼營造?

課程方面,應該設計更彈性的修課制度,讓學生多修自己有興趣的方面的課,允許他們少修一些跟志向不相關的課。譬如有人的志向在研究人工智慧,就不要強迫他們修一堆編譯器、數位電路的課。(這邊是就我的理解人工智慧領域跟編譯器和數位電路的相關性很低,有錯請指正)不要再說什麼「數位電路是資工系基本能力」了,臺灣的國高中教育就已經被「基本能力」鉗制住了,讀了一堆歷史地理國文,對大部分將來從事的行業沒什麼用,更糟的是,歷史地理的教學在培養學生的國際觀方面完全失敗,國文的教學對於培養學生的閱讀、表達能力也不甚成功,真正更基本帶得走的能力,像是查資料、分析的能力、討論的能力、合作的能力,反而沒有什麼機會培養。大學教育比國高中更具專業性,到了這個時候學生也該瞭解自己的志向了,應該允許他們更專精地鑽進一個領域。強迫一個想要研究人工智慧的人學習編譯器和數位電路只是佔用了他們學習更專精的知識的時間罷了。

關於營造環境、風氣,除了上述的方法之外,我也有想過其他的,不過在這篇討論的話就有點離題了。

鼓勵很好,但是那不是問題所在

交大資工系現在的課程蠻糟的,在鐵腰的部落格上面有提到一些,它糟的方式是…最糟的 (the way that it sucks, is … the worst)。不是課程沒有內容,讓學生可以輕輕鬆鬆就通過;也不是分數給太鬆,這兩種狀況都至少讓學生有很多時間去做規定課程以外的事:修其他領域的課、做 project 、實習、玩社團……就算沒有在學校學到什麼東西,至少他們做了很多其他事情。

交大資工的課程糟的方式是,它用最無意義的繁重課業榨乾你的時間,而且從來不想辦法改善教學內容或方式來引起學生興趣,而只會一直跳針說「這個課程很重要」、「這以後出去/研究所一定用得上」、「這東西是身為資工系的基礎能力」。教你10年前的技術,作業出各種苦工,除了專題之外從來沒有一個作業可以自己決定題目……

課程可以抱怨的事情很多,總之我要表達的是,課業都這麼重了,學生哪有時間去做什麼計劃啊?

自發性的探索和學習總是要基於:一、有時間;二、有興趣。交大資工的課程:一、消耗大量時間;二、從來不試圖提升學生的興趣,甚至還消磨學生的興趣。你要學生哪來的自發性探索和學習啊。

教授的心態

看到這個計劃,我也不禁懷疑教授的居心。有沒有注意到,在這個計劃當中,教授從來就不用主動做任何事情?都是等學生提案,等學生來找教授就好。

在大部分學生花費大量時間應付現有課業之時,拋出這個計劃,坐等。學生無暇參加這個計劃,教授於是再度批評學生「欠缺企圖心、理想、主動學習及勇敢創新創造的精神」,一切的錯看起來都在學生。從頭到尾無視問題的根本在於課程不好。

或許又會再拿有進度但是緩不濟急又搔不到癢處的課程改革來反駁說「我們其實有改革」。

附帶一提

最原始那封信裡面把 103 年入學的學生的信群地址寫錯了,edu 寫成 efu。不知道有沒有人發現然後重寄,不然大一們到現在都還沒收到這封信呢。

我一直以來對交大資工主要的抱怨點

Shaform:

不禁想到,很久以前我覺得每個人都應該找到自己有熱情的事,然後對讀資工系沒有熱情的人應該要跑去做別的有熱情的事,空出缺口。這樣對那些有熱情但考不進資工的人才公平。

後來才發現其實很多人一生都找不到有熱情的東西,能找到熱情也是件滿幸運的事。

然後又發現也有很多人並不想過著一直「追求」的生活。只想過著不是那麼「用力」的人生。仔細想想或許也不好批評什麼。

然後才發現其實以前的我或許太過批評「不認真的人生」了 XD

我跟你的看法相反,我覺得世界上大部分的人都可以找到自己的熱情,如果他們真的去找的話,但是臺灣的教育體制把學生訓練成接受現狀然後在現狀下做最好的準備,很多人根本就不相信自己可以找到熱情或是找到了也沒辦法克服現實去從事自己的熱情,於是就放棄。
總之我傾向不接受現狀。

不確定你是不是在說我批評那些「不認真」的人,但你沒有直接說。但,不,我不是在批評他們,我對他們的希望是他們不要這麼容易接受現狀,但是這是個人選擇我無從干涉。我一直在批評的是資工系還有教授不應該逼這些不想認真的人學這麼多東西,因為這些不想認真的人就把必修設定的很多,把課程設定的很僵化,要求學生交一大堆作業以確保他們有能力寫課本習題、瞭解很多「基本」觀念,殊不知雖然這些觀念雖然基本雖然重要,但也只有在那個特定領域重要而已,以後學生事實上也不一定會用到這些東西。

國外 CS department 很多必修學分比我們少很多,很多人沒有選數位電路的課所以不會 Verilog ,沒有選線性代數、密碼學、選編譯器……所以都不會,那這些國外學生不具備教授們這些所謂「線性代數基本能力」要怎麼辦??工作也不見得會比較難找。

教授們花很多時間塞給學生這些他們所謂的「基本觀念」所犧牲的是那些真正重要帶得走的能力,自學能力、表達能力、團隊合作、討論、發問,etc 。教授們說「這是同學們應該自己努力培養的,不是我們能做的」,可是教授們一點機會都不給我們啊,我修到現在沒有任何一門資工系的課有課堂報告,作業的spec都訂的死死的,所謂創意是在做完spec之後只能拿來「加分用」,團隊合作也只有數位電路實驗和資料庫概論(spec也都是死死的)。課堂上教授也總是偏好自己教自己的,不會花心力去激發學生發問或討論(這方面我不完全怪教授,學生被動也是一個原因)。

教授也不該認定每個人都很認真或是每個人都很不認真,教授要搞清楚現實。

臺灣的資工系好像都不是資工系

我所認知的理想的資工系應該是要像美國主要大學(Havard, MIT, Berkeley, Stanford 這些)的資工系那樣。

前幾天跟 jserv 前輩聊天,他說臺灣的資工系幾乎都淪陷了,很多CS基礎的課程都不開了,他舉的例子是正規語言和程式語言,這兩門課在臺大和成大資工都已經數年沒開了(但據說臺大明年要恢復正規語言)資訊有誤,見留言。這些系反倒是開了一堆創業、寫app,或是非常高階很專精的課程。他覺得交大資工很好,是臺灣最正統的資工系,意思是大部分正統的CS課在交大都還有。

我補充我的觀察,創業課程在交大資工只有1門,交大資工沒有寫app或是網頁開發的課程(但是電機系有,神奇)。這類的課程確實本來就不是CS,只是有了之後對學生會有很大的幫助。

雖然交大資工確實還有正規語言、程式語言這兩門課,但是老實說這兩門課的教學狀況都不是很好,正規語言是我親身經歷,程式語言是聽學長轉述的。

正規語言老師上課就是介紹課本的各種觀念,依照課本的進度這樣教下去,講完一個觀念會有一些 example 演練這樣。沒有作業,只有期中考和期末考。這樣我覺得大致沒什麼問題,因為正規本來就是比較概念性、思想性的東西,習題就幾乎只是練習用課本裡面教的專用符號表示這些概念,重要的是概念本身不是符號,所以不出作業這點沒什麼問題。這門課其實有點像……概念非常困難的通識課,就是懂了就可以。

程式語言據學長說法狀況就比較糟,有位老師花一整個學期講某個 functional programming language 和 functional programming 的概念,但 functional 其實只是 programming paradigm 裡面的一種而已,只講 functional 太狹隘;另一位老師則是用一整個學期快速教了5種程式語言,不講程式語言的分類或是設計或是寫法習慣的不同。

其實也是聽 jserv 一講才知道原來交大資工算是「正統」的 CS department,只是那只是表象而已,內容物有很多是爛的啊。

資工系根本上的矛盾

接下來打算寫一系列討論交大資工問題的文章。這是第一篇,從「資工」和「大學」在臺灣根本上的矛盾談起。未來幾篇會談到系上同學和教授的風氣、各種課程的情形等等。

大學定位的矛盾

美國的大學定位上很清楚,就是要鑽研高階的知識並進行創新的研究。如果重視的是實際打造東西,那你根本不該來念大學。如果以上這兩點不是你想做的,大可直接去工作或是去各種職業訓練班訓練。社會上明顯將大學生視為高階專業人才,所以要是一個大學生去應徵咖啡店店員,會被視為不尋常的事情。

在臺灣,不管想做什麼,社會風氣、家長思想幾乎沒辦法接受「不上大學」這件事情,所以不管是想賺大錢還是研究數論,所有人通通進了大學。對於成績好的學生尤其是這樣,不上大學往往會被視為一種浪費(「成績這麼好不上大學繼續學習太可惜了」),就算他想做的只是當畫家或是寫 app。

在這個情況下,大學教授們還能堅持只鑽研「高階知識」嗎而不去做一部分職業訓練所所做的事情嗎?(這是開放的問題,兩種答案在我看來都於理有據)

這是正統大學的定位在臺灣所遇到的矛盾。

究竟臺灣的大學是否該為了因應社會現狀提供一些職業訓練所的功能?

我傾向覺得是(因為這樣對我個人的生涯有利)。但若有人說:「不,大學應該堅持它的定位,因為有問題的是社會風氣和家長思想」這我也無法反駁。

「資工」意義上的矛盾

歐美大學對應臺灣所謂的資工系的通常是 Department of Computer Science ,這樣的科系裡面有些會開 Software Engineering 的 programme 。所以很明顯是以 Computer Science 為主,Software Engineering 為輔。

Computer Science 是什麼?它是一門科學,關於計算機的科學,所以中文精確的翻譯是「計算機科學」,訓練出來的人叫做「科學家」。譬如說今天有個演算法,我想辦法分析它的時間複雜度,或是證明這個演算法可以解決某個我所定義的問題,這些問題通常會被歸類到 CS 的範疇。

Software Engineering 是什麼?它是一種關於軟體的工程的知識,所以中文譯作「軟體工程」,訓練出來的是「工程師」。工程的範疇著重在各種限制下解決實際的問題,必須要考慮到現實的需求(預算、人力、空間、時間限制等等)。

再來看看「資工」這詞,它是「資訊工程」的縮寫,英文作 Information Engineering ,至於資訊工程精確上代表什麼意義,根據維基百科,它是一個隸屬於軟體工程的範疇,是設計及開發「資訊系統」的方法。資訊系統看來是一種抽象的分類,用來「處理」「資訊」的「系統」就可以叫做資訊系統,至於要怎麼處理、是什麼樣的資訊這我就不是很清楚,可以去看維基百科

我把 Information Engineering 和 Software Engineering 視為比較接近的領域(根據維基百科 IE 屬於 SE ),因為兩者都是工程,比起 Computer Science 是一種科學有較大的差距。

看看臺灣一些大學資工系的名字:

  • 交大 資訊工程學系 Department of Computer Science
  • 清大 資訊工程學系 Department of Computer Science
  • 臺大 資訊工程學系 Department of Computer Science & Information Engineering
  • 中央 資訊工程學系 Department of Computer Science & Information Engineering

交大和清大資工的中英文名明顯不符合,英文名說是科學,中文名又說是工程,而且還是比較窄的「資訊工程」而不是「軟體工程」令我覺得很奇怪。臺大和中央的中文名有描述 Information Engineering ,但卻未描述 Computer Science 。

就我所知這四個系上的課程仍是以計算機科學為主,那為什麼叫做資訊工程學系?大概是為了招生上的優勢,也方便家長、新生和社會的想像,社會上大家可能已經對於「資訊工程」在做什麼有某種程度的想像(「大概就是和電腦相關吧?」),若是真的改叫計算機科學系大家可能會很納悶這到底和資訊工程有何不同,系上還要多花時間說明並且試圖說服家長計算機科學比資訊工程更有前途(或只是一樣有前途),若改名無法提升這個科系對於家長和學生的吸引力那很明顯地這些系其實沒有什麼動機去改名。

另外一扯,交大和清大資工系課程裡面邏輯設計、嵌入式等(那些關於電腦底層計算硬體的設計)的課程甚至都比軟體工程還要多啊,不過這是另一個問題了。

事實上要說服家長「計算機科學」和「資訊工程」一樣有前途,可能還會遇到一些阻礙。家長很常見的論調是「科學家比工程師難餵飽自己」,這樣的論調某種程度上是合理的,因為工程師解決的是現實世界中的問題,科學家研究出的理論或是新技術舉例實際應用比較遠,自然比較難以吸引資金的投入。

所以這些偽資訊工程系不會為了要「名符其實」就改名叫「計算機科學系」。

據我的觀察,社會上對於「資訊工程」的想像其實比較接近「軟體工程」,因為大家常會依照某某科系出來之後去做的工作內容去想像那個領域本身,但是資訊工程對於這些科系實際上是錯誤的描述啊。

既然社會上偏好「資訊工程」勝於「計算機科學」,為什麼這些系又要用資訊工程的名字把學生騙進來然後教他們很多計算機科學和一點點軟體工程呢?為了騙成績好的學生進來吧,我也不知道。

對於我提出系上為什麼軟體工程的課程這麼少的意見時,一些教授說:「我們系叫 Computer Science ,所以課程當然是以 CS 為主。」我那時忘了問他們,那「資訊工程」這個中文名字又該如何解釋呢?

總之,我很討厭這種名不符實的東西,不過對於科系來說,取個吸引人的名字比起實際描述的名字更為重要吧,呵呵。

最後重申一次我的重點:

  1. 不管是該上或不該上大學、想上或不想上大學的人全部都進了大學,這是個問題
  2. 資訊工程學系這名字真的很奇怪

林正中數位電路實驗雜筆記

本篇內容乃道聽途說而來,目的在於快速了解數位電路實驗到底要怎麼做以及諸多抱怨,目前是很簡略地寫給自己看,要是有哪裡看不懂可以問,也歡迎修正內容。

暫且以編譯一詞代表 ncverilog -f

工作站是非常舊版的 Linux, vim 版本只有 6.3 超難用。

如果不用 screen 的話編譯到一半斷線編譯也會一起中斷,GG 。

在同一個資料夾內只能同時進行一次編譯(編譯進行中會產生鎖定檔來阻止另一個編譯同時進行),只要多複製一個資料夾就可以同時編譯了~

測試運行的方法:ncverilog 編譯 主檔案 TESTBENCH.v ,testbench 會 include PATTERN.v 和你寫的 module 進來,pattern 把資料餵進去你的 module ,然後檢查 module 的輸出。

假如這次你要實做的 module 是 decoder 好了。
Testbench 負責把 pattern 和 decoder 用線接起來。可以去看看,pattern 的輸出就是 decoder 的輸入。

01_run.f 這些檔案定義 macro, 讓 testbench 去 include 不同實做 level (behavior/dataflow/gate level)的 decoder 進來,有點像 makefile 。

要怎麼依照給定的 timing waveform 做出 pattern ?
(去看 PATTERN.v)initial 就是 t=0 (時間等於零啦)的時候,接下來可以用 # 符號表示等多少時間單位之後做什麼事情,例如 initial 輸出某特定值給 decoder,然後馬上檢查 module output 。
接下來 PATTERN.v 寫了 #5 ,就是維持目前 PATTERN module (PATTERN 本身也是一個 module )的輸出,5時間單位之後再繼續進行 #5 之後的動作,像是輸出另一組值給 decoder 以進行檢查。

大多數資訊都是由阿飄提供。
和認真好朋友修課都會變得認真起來。

這門課助教和老師提供的資訊都很 confusing ,很多資訊得要學生自己找、花時間理解。對於這種我沒什麼興趣的東西我才不會做這種事,要是沒有這麼認真的同學的話我早就放掉這門課了。後來意識到老師這樣(不論他是有意還是無意),也可以促進認真的學生自主學習,甚至鼓勵同學之間互相討論。對於從小拿到精美整理的教材的台灣學生來說這是一個轉變,這或許才是真的大學吧。不過對於本來就沒什麼學習動機的人這只會讓他們更傾向放掉這門課吧。(放掉的意思是蒙混敷衍過關,非認真學習而真懂)這樣的教學對於激起學習興趣大概也有負面影響。不過至少數位電路設計比起線性代數更容易看出實用價值太多了。