臺大電機系推廣教育 – 程式訓練班採訪報導

陳昱安、劉馥瑄、于天立、彭俊人

受訪講者:于天立 教授、彭俊人 講師

概要:

程式訓練班為電機系自行舉辦的課程,這期於2016年一月開始進行,廣受到學員們的好評,因此我們今天很榮幸訪問到程式訓練班主任于天立教授以及彭俊人講師,來跟我們分享關於這個訓練班的大小事。

Q1:成立程式訓練班的宗旨與原因?

我們辦這個程式訓練班的目的,一來是隨著現今資訊科技的突飛猛進,因應社會趨勢與產業走向,行推廣大眾教育的義務。還有一個原因,就是大家對電機系常有個誤解,以為我們只有著重在硬體方面,缺乏對軟體的認知,但是其實電機系是軟硬並重,我們也是有為數不少的教授的領域為軟體方面的,更多電機相關研究是跨領域,其實軟硬都要整合。當然最主要的目的,還是因為台大電機系在社會上有一定的聲望,因此希望藉由程式訓練班來實行盡到社會責任,推廣程式設計的教育。

Q2:程式訓練班的歷史?

最早應是郭德盛教授任系主任時所籌辦的。訓練班一直沒有確切的文字記錄,大部分只是口述流傳,隨著時間漸漸傳下來就有點失傳了。近期辦過訓練班的教授還有王凡教授、連豐力教授等等。去年連教授開設的是主題為機器人的短期(大約兩天一個workshop)訓練班。現在的程式設計訓練班最開始是廖婉君教授任系主任時找我規劃辨理,交任的系主任劉志文教授也非常支持,希望能夠達到程式設計的推廣教育。找我的原因大概是因為我本身的研究領域和專長在這一塊,再加上我個人對教學一直以來也都很有興趣。

Q3:可以大概描述一下這期訓練班的內容嗎?

我們目前開了兩個班,一個是C/C++班,一個是Python班。從2015年9月開始找人、規劃及籌備課程。第一次開班則是2016年1月。至於為什麼是這兩個語言呢?當然一來是考慮市場需求,C/C++ 曾是長久的最popular的語言,現在雖然普遍性不如java或python,但仍有它不可取代之必要性。而Python是目前當紅的語言之一,開發快速,上手容易。至於其他語言,例如也很紅的JavaScript我們其實也有考慮,但因為frame本身也還沒定下來,可能過個幾年又會改變。再來它需要學生對web programming有一定先備的瞭解,所以也不太適合。目前我們還在規劃的還有R語言,這也是因應大數據的處理。

再來是程式訓練班上課的形式,我們非常注重學員實作的能力,因此課程都是安排在電腦教室,讓每位學員都配有電腦。有別於傳統上課,都是老師在台上解說,學員只能在台下聽講,我們相信要初學程式一定需要大量的實作與模仿,很多觀念需要透過自己親自coding才能體會,因此我們上課有一半以上的時間在實作,台上講者每講完一個小主題,就會立刻讓學員們自己動手試試看,如果有不會的地方,助教和講師也都能立刻協助。課程內容的規劃也不同於科班學術導向的練習題目,而是強調日常生活中能應用的程式設計技能。在課堂實作的部分,我們將在短短八堂課中練習包含用while loop 統計全班成績、繪畫碎形、拋物線設計、萬年曆、拆炸彈遊戲、貪吃蛇、1A2B(猜數字遊戲)等等與各主題相關的題目,課程設計將問題解成若干小問題讓學員容易上手,讓大家可以先自己思考。並且在課程的開放給最後給學員demo自己課餘製作的成果,與全班分享自由發揮的創意。而我們訓練班10個人以上就設有助教,師生比是1:10甚至有時候來到1:5,這樣如果學生有問題,助教就可以第一時間給予協助,不用擔心跟不上,有問題就能即時解決。我覺得這樣的師生比例控制對學習是很有幫助的。

在教學的時候也會會利用各個相關段落與學員分享相關的電腦常識或相關的科技新聞,並藉此介紹許多電腦科學思維,例如何謂divide and conquer,新聞中出現因超過電腦數值計算極限的實際案例,總而言之,我們非常強調動手做這個部份。因為我覺得程式這個東西,不能只有看看網路上資料和video,這些都遠遠不夠,真正要應用到的時候還是不一定會寫。軟體的領域一旦學會了第一個語言,再學其它的一般來說比較快。但是要跨過第一個門檻,也就是從完全不會到會寫程式是很不容易的。上網或看書學習對初學者往往太難,挫折感太重,而我們訓練班的講師、助教會很細心的帶大家跨過這個門檻,少走點冤枉路。

Q4:程式訓練班的授課對象為?

這個問題我們其實當初在籌備時搖擺過一陣子,最早的想法為高中生,以補足高中程設教育的不足;遠一點來看,以推廣教育為目的,則一般社會人士也都是我們的對象。社會人士以及高中生以上具備一定邏輯思考能力,至於國中生也許可以,但因開課時間在晚間仍有些安全上的顧慮,像暑期班開設在白天,我們就將國中生也納入授課對象。至於國小生就真的太小了所以我們不開放。

到了後面最近幾期其實大學生變得蠻多,因為學生需求、資訊趨勢,我們的教材也有調整。第一、二期的教材較偏高中:多為數理相關,像這樣社會人士就不見得適合或感到有興趣,而是讓他們做一些像萬年曆、貪吃蛇(路徑規劃、路徑尋找)的實作。也有遇到對象為業界,較特別的是他們會想問的問題像是:程式怎麼呼叫另一個語言、如何處理中文資料,如何與資料庫做連結,以及較進階的指標問題等等。但這些問題我們就會通常是點到為止,如果他們想要更深入的了解,我們給他reference,讓他自己探索。因為現代學習程式語言,需要學會的重要技巧就是如何google找資料,很多學員都會希望我們開推薦書單以便課後研讀,但能啃完又厚又硬教學書籍的人其實少之又少,不如遇到問題直接上網找依問題歸類的資源,很多時候要學會的程式技能並不是記住相關專業知識,而是知道如何上網找到解答,並套用在自己所需要的專案上。現在有很多資源是免費流通在網路上,只是一般人不知道怎麼找到這些資源。任何的課程上課時數都有限,更重要的是如何在上課期間學會之後自學的能力。而且很多時候其實業界人士的需求,他不一定是想要精通寫程式學會,而是期待理解電腦程式的相關背景,跟目前科技產業的相關趨勢,比如他可能是一個顧問或公關,學了這些目的是為了能知道他們公司的工程師大概在做什麼。

總的來說,程式訓練班一班都是十幾、二十幾個人小班制,而且我們會針對組成學生成分,規劃客製化教程。

Q5:整個過程中最令你印象深刻的事?

印象深刻的事還蠻多的,在開班期間,學員會帶給我們一些我們“無法預期”的問題,例如:不會使用鍵盤Ctrl+C/V做複製貼上,不知道介面如何操作等。甚至有些學員是家長報名,他自己根本不知道來上這個班的原因;也有遇到主動問希望能夠學習如何讀中文文檔、跟資料庫做連結,以及詢問進階班的學生。其中有一個令我印象很深的是python班的一名50歲左右的學員,他是一位退休教師,來這裡的動機是:想學習後回鄉下教小朋友,他的求知慾很強,真的很令人感動。讓我開眼界長知識,學習的motivation真的很重要。一般看來,似乎學員年紀越長動機越明確,因為他們知道學習是為了自己!

Q6:在期間有遇到什麼困難嗎?

從一開始被找來規劃訓練班,真的是有點惶恐,但後來越做越熟,很多事情也越來越知道要怎麼進行。不過真正最難的都不是找資源和備課那些,而是宣傳。顧慮經費有限,也不能花大筆錢來印製海報或打廣告,因此一開始真的不知道怎麼樣宣傳,完全沒有頭緒,一開始只能拜託常接觸的高中幫忙宣傳。後來有一個契機,因為alpha go的關係,在news98電台宣傳了一次,在天下雜誌也宣傳了一次。後來還有葉丙成教授幫忙在他的臉書上宣傳。這幾次宣傳都有很好的效果,但是雜誌和電台這種宣傳機會也不是常常都有,要如何能讓電機系訓練班維持一定的能見度,我想是最大的難處吧。

Q7:程式訓練班的未來展望和趨勢?

展望未來,我們將仍然維持小班制及良好的師生比、收費平民化。一期課程長度一個月,不會太密集,又有足夠的時間讓學生吸收,也開放彈性補課。當然我們也有些地方可以改善,比如說講師一開始對程式的介紹等等,時間可以縮減,儘快進入主題,讓學員開始動手寫程式,這樣應能更有效的利用時間。此外也十分注重學員的感受,很care他們的想法、他們是不是真的會了。目前我們學員對訓練班都還蠻滿意的,進階班的詢問度頗高。未來希望能本著推廣教育的精神,課程內容也不一定只設限於程式,可以多一些與電機相關的東西,或者上一些Linux,Hacker等等。最重要的重點,我們就是秉持著,一台電腦在那,講師在台上講,學生立刻可以實作,讓來這個訓練班的學生「真的會寫程式」!

辦這個程式訓練班,我們這個團隊大家都覺得雖然很辛苦,但學生給的評價和回饋都很好,尤其是看到結業的學員們真的可以開始寫程式,都覺得辛苦是值得的。說真的如果我女兒年紀夠大我一定讓她報這個訓練班,因為真的非常物超所值!若是您對程式設計有興趣,但苦於不知從何下手,請考慮臺大電機系的程式訓練班,相信不會讓您失望。

大學部陳昱安同學、劉馥瑄同學採訪整理,班主任于天立教授、彭俊人講師審定完成。

5_1 C++2016 四月班 于主任開場介紹

C++2016四月班  于主任開場介紹

5_3Python 2016 八月班結業

Python2016 八月班結業

5_2C++2016 四月班上課狀況C++2016四月班上課狀況