:::
顯示具有 教學課程 標籤的文章。 顯示所有文章

Google簡報教學:用簡報說故事 / Google Presentation Tutorial: Storytelling

Google簡報教學:用簡報說故事 / Google Presentation Tutorial: Storytelling

image

這是我在去年10月的時候在空大講課的內容,教同學如何用Google簡報來製作一個可以說故事的簡報。Google簡報雖然比起Power Point功能減少許多,但基本該有的功能都有,而且跨平臺容易編輯這點更是方便,只要一個網址就可以把做好的投影片帶著走,不管是在Line或FB上分享投影片都非常簡單!

這份投影片教學的內容著重於製作可以說故事的圖文繪本。裡面用到了圖片、背景、格式、排列、轉場特效、動畫等功能,讓大家可以簡單地製作一個會動的說故事投影片。

(more...)

LibreOffice Portable安裝教學 / LibreOffice Portable Installation Guide

布丁布丁吃布丁

LibreOffice Portable安裝教學 / LibreOffice Portable Installation Guide

image

你還在煩惱Microsoft Office太貴、每次改版都要跟著升級,還是有「老師上課教的Office,跟我家用的不一樣」這樣的困擾嗎?快來順著現在政府積極推廣的開放性檔案運動,一起來用LibreOffice取代Microsoft Office吧。

雖然你也可以下載安裝版的LibreOffice,但我認為免安裝的可攜版更適合大家裝在USB隨身碟裡面使用。所以這篇將會以圖文教學教大家怎麼將LibreOffice安裝到USB隨身碟。

(more...)

你是Word小博士嗎?來試試看這些題目你會不會? / A Microsoft Word 2013 Test

布丁布丁吃布丁

你是Word小博士嗎?來試試看這些題目你會不會? / A Microsoft Word 2013 Test

image

Microsoft Word是很昂貴的軟體,可是卻很多人都只把它當作打字工具,未免有些浪費。我最近在空大教授「Word專業文件排版」的課程中出了一些Microsoft Word 2013的考題,整理整理放在這邊讓大家來挑戰看看。看看下面的題目你會不會答呢?如果答不出來,太棒了,表示你又可以學到了Word的小技巧了喔。


選擇題 / Multiple Choice Question

Q1. 有關「尋找與取代」的功能,請問下列哪一個選項正確?
  1. 搜尋選項無法設定「類似音符(日文)」
  2. 尋找「功能變數」時必須要勾選萬用字元項
  3. 格式尋找包括「樣式」,例如「標題1」
  4. 以上皆不正確

(點此顯示答案)

答案:選項3是正確的,格式尋找包括「樣式」,例如「標題1」。

選項1是可以設定「類似音符(日文)」。選項2不需要勾選就可以尋找「功能變數」。選項1跟選項3都在請看下面的「進階尋找」對話視窗。

2016-01-08_235314

Q2. 請問下列哪一個圖示是「比較文件」功能?
  1. clip_image002
  2. clip_image004
  3. clip_image006
  4. clip_image008

(點此顯示答案)

答案:選項1clip_image002

選項2clip_image004 是英文字典的同義字功能。

選項3clip_image006 是稿紙功能。

選項4clip_image008 是分隔設定。

Q3. 若資料來源內有一欄位為年齡,該欄位資料內容為18到90之間的數字,利用規則中哪項功能變數,可將44之前顯示為「青年」、45到59之間顯示為「中年」,60以上顯示為「老年」?
  1. If…Then…Else
  2. Next Record
  3. Merge Record#
  4. Ask

(點此顯示答案)

答案:選項1「If…Then…Else 」。這些都是合併列印的時候可以使用的功能變數。

選項1 「If…Then…Else」是可以根據資料來源中的某些條件來改變要顯示的內容。

選項2「Next Record」可以在一份合併列印文件中插入兩筆或更多資料。一般一份合併列印文件只會對應到一筆資料,但用「Next Record」就可以插入很多筆。

選項3「Merge Record #」是是顯示此合併記錄是資料來源中的第幾筆。

選項4「Ask」可以在建立合併列印時跳出對話視窗讓使用者手動輸入資料,例如套用在這次信函中的祝福語。

Q4. 如何從其他的Word檔案匯入樣式到現在編輯的Word檔案?
  1. 開啟樣式工作窗格,管理樣式→匯入/匯出,在左側開啟欲匯入樣式的文件,在右側開啟匯出樣式的文件,選取欲匯入的樣式→複製。
  2. 開啟樣式工作窗格,管理樣式→匯入/匯出。
  3. 開啟樣式工作窗格,將欲匯入之樣式直接拖曳至目標文件。
  4. 開啟樣式工作窗格,管理樣式→匯入/匯出,在右側開啟欲匯入樣式的文件,在左側開啟匯出樣式的文件,選取欲匯入的樣式→複製。

(點此顯示答案)

答案:選項4。

image

雖然操作很複雜,但這其實是很好用的功能,可以在新的文件中繼承之前設定的樣式,值得一學。

Q5. 有一個 word 長文件,文件內容包含多個章節,編輯者希望利用各個章節的標題,快速輕鬆的製作文件的目錄。為達此目的,以下那個選項是製作文件的目錄前必須要先操作的動作?
  1. 各個章節的標題須套用項目符號
  2. 先將標題樣式套用至各個章節的標題
  3. 各個章節的標題須套用交互參照。
  4. 各個章節的標題須套用編號設定。

(點此顯示答案)

答案:選項2「先將標題樣式套用至各個章節的標題」。

2016-01-09_001421

「標題」樣式在「常用」索引標籤中。我建議以「標題1」、「標題2」等不同層次套用。這招在寫論文的時候特別重要!

Q6. 請問下列哪一個圖示是「封面頁」功能?
  1. clip_image010
  2. clip_image012
  3. clip_image014
  4. clip_image016

(點此顯示答案)

答案:選項4clip_image016

選項1clip_image010是「空白頁」。

選項2clip_image012是「快速組件」。這功能一般人比較少用,可用來插入「標題」、「作者」等設在文件上的文件摘要資訊,以及其他功能變數。

選項3clip_image014是「註解」。

Q7. 請問「尋找」的鍵盤快速鍵是什麼?
  1. Ctrl + H
  2. Ctrl + B
  3. Ctrl + F
  4. F9

(點此顯示答案)

答案:選項3「Ctrl + F」。

選項1「Ctrl + H」是取代的快速鍵。

選項2「Ctrl + B」是粗體字。

選項4「F9」是更新選取欄位。


問答題 / Free Response

Q8. 請問「追蹤修訂」是怎樣的功能?請描述一個可以使用追蹤修訂的情境。

(點此顯示參考答案)

image

追蹤校訂可以記錄該文件變更的過程,像是新增、刪除文字、修改格式等等。

例如我可以將Word檔案寄給指導教授,並請指導教授修改。這時候可以開啟追蹤修訂功能,記錄教授修改論文的地方。收到教授寄回的論文時,就可以看到自己的論文到底被修改了那些地方。

image[11]

以前我也介紹過這個功能喔。

Q9. 請問「合併列印」是怎樣的功能?請描述一個可以使用「追蹤修訂」的情境。

(點此顯示參考答案)

image

合併列印是利用Excel做為資料來源,Word 做為讀取和輸出之用途。可用於薪資條、學員成績單、員工考核結果、個人績效表、邀請函、信封(收件人和地址)、畢結業證書等等。

某百貨公司宣傳部門的員工,剛好有個活動即將展開,為了讓公司會員得知該活動訊息,於是要將宣傳單寄送給會員,會員的地址與收件人的電子檔資料也都有了,寄送宣傳單給眾多的會員時,就可以利用 word 軟體中合併列印,以輕鬆快速的方式將會員姓名與地址資料連續列印到個別的宣傳信封上,而且不需要在電腦上逐次修改收件者。

Q10. 請列舉Word中可以插入的物件檔案,至少3種。

(點此顯示參考答案)

image

主要是Microsoft Office系列的檔案,例如Microsoft Word、Microsoft Excel跟Microsoft Power Point。

Q11. 如果要同時選取全文件都套用「標題1」的文字,請問應該如何操作?

(點此顯示參考答案)

image

image

在「樣式」工作窗格中,在指定的樣式上按 滑鼠右鍵 ,選擇「全選: (無資料)」或「選取相同設定」,便可選取文件中相同樣式的文字。

Q12. 如果長文件在編輯之後有更改章節的標題,但回過頭來發現目錄的標題跟實際標題不符合,請問應該如何操作?

(點此顯示參考答案)

image

在目錄上選取「更新目錄」。

image

然後選擇「更新整個目錄」即可。

Q13. 請說明「文字換行分隔符號」、「分頁符號」與「分節符號」之間的差別。

(點此顯示參考答案)

image

文字換行分隔符號也就是常用的Shift + Enter,是用來為同一段落的文字強制換行,但是仍然套用同一段的格式。常常用於清單功能中。

分頁符號則是Ctrl + Enter,是強制換頁,但是不同頁之間仍保持在同一節。

分節符號是用來將長文件區分章節,分節之後可以為各節設定版面配置與頁首、頁尾與頁碼。

(more...)

心智圖介紹 / Mind Map Introduction

布丁布丁吃布丁

心智圖介紹 / Mind Map Introduction

image

2014年11月的時候,我到老師的課堂上介紹心智圖及線上心智圖工具mind42用法。希望幫助同學有效率地組織工作與報告。


投影片 / Slide

大綱 / Outline

這次演講是先介紹心智圖的基本理論,然後介紹繪製心智圖的數位工具,以及線上心智圖Mind42的使用。接著再介紹應用使用心智圖的案例,包括準備期末報告、理解閱讀的文章、準備考試複習範圍,最後則是安排實作活動。以下是本演講的大綱:

  • Part 1. 活用大腦的無限可能性
  • Part 2. 強大的心智圖數位工具
  • Practice 1. Mind42試用
  • Part 3 應用心智圖解決問題
  • Practice 2. 團體合作閱讀

心智圖與概念圖的不同 / The difference between Mind Map and Concept Map

image

值得注意的是,教育學術界使用較多的是概念圖 (Concept Map),他跟心智圖 (Mind Map) 長得很像,可是應用的重點卻差很多。

雖然兩者都是被用來呈現學習者腦袋內概念的描述工具,可是概念圖比較著重概念之間階層順序,心智圖則是強調用圖型化來刺激想象力。而概念圖始於教學研究,有一套為概念圖評分的方法,詳細請見我另一篇文章「有意義的學習:概念圖介紹」,但心智圖則還沒有一定的評估方法。


結語:心智圖之後的下一個生產力工具 / Conclusion: What is next productive tool after Mind Map

10. 核心架構圖

我使用心智圖已經好幾年了,從一開始準備考試使用的大綱、撰寫論文時使用的心智圖 (例如很受讀者歡迎的「我的論文寫作工具:XMind心智圖」)、寫blog時也是用心智圖來規劃。

329717

原本我會同時在桌機與手機上編輯心智圖,但是後來因為Thnking Space被MindJet買走、變成收費工具且不支援XMind之後,我改轉用免費的編輯工具FreePlane。然而FreePlane與FreeMind系列工具所編輯的心智圖實在沒辦法像XMind這麼漂亮,此時我才深深地體會到心智圖強調的「圖像化」的重要性。

除此之外,我覺得心智圖最讓我感到困擾的是他在合作編輯上的限制。雖然我在這篇演講中介紹了Mind42,但其實我平常仍然比較依賴本機端的心智圖工具,以方便跟本機端的其他檔案結合。但是相對的,心智圖的缺點就是難跟其他人討論、甚至共同編輯。

home-devices

現在我改使用看版式的管理工具Trello,其特色是容易跨平臺、跟雲端空間密切整合、方便共同編輯,特別適合用在Todo待辦事項工具上。但是跟心智圖相較之下,並不支援漂亮的視覺圖像化,而且對離線工作的支援也很差,大多功能都必須透過網路連線。雖然Trello很適合整理大量的資訊,但是卻很不適合用來激發創意。我想再評估一陣子,有機會再跟大家介紹吧。

(more...)

空大授課記事 / Teaching in National Open University

空大授課記事 / Teaching in National Open University

10547748_790748507645208_168964268593952746_o

我從2013年開始在國立空中大學新北中心的管理與資訊學系擔任講師以來,不知不覺已經教完了三個學期。雖然說這份工作是教人,但是我也在這份工作中學到很多。在此懷著感激的心情,記錄一下至今為止的心得。


機緣 / Chance

在一年半之前,我本來只是忙碌於博士班的課業之間,但是在指導教授陳老師的引薦之下,我多了一份到國立空中大學(以下簡稱空大)新北中心教課的講師工作。雖然我在課堂中待了好幾年,但只是台下聽課的學生,一輪到自己要上台授課,這可是完全不同的世界。好在有新北中心郭老師與方老師給了我許多課堂準備的建議與心理建設,還有助教們耐心教我授課時的諸多規定,我才能逐步上軌道。真的很謝謝大家。

第一門課: 影像處理與Photoshop / First course: Image Processing & Photoshop

image

空中大學的上課方式與傳統大學有許多的不同,也因此我得想辦法把以前的學習經驗做大幅度的轉換。我第一門教授的課程是「影像處理與Photoshop」,而這堂課是以空大特別的授課方式來進行:上機實作課程。在實作課程中,授課內容與課堂實作作業緊密結合,還要安排實作考試來了解學生的學習進度。教課時常常為了電腦教室的問題手忙腳亂之外,有時候也會遇到教不完想要教的進度、或是程度高低同學進度難以配合的情況。這些都是上課教學容易遇到的困難。

不過授課中也常常遇到意外的驚喜。因為這是比較自由的上機實作課程,常常也會有功力高強的同學發現更快、或是更棒的技巧,也讓我在教課中學到很多,每每都充滿驚奇。我特別喜歡看課堂作業指定製作的卡片,總是能夠看到同學們利用課堂上學到的各種技巧,再結合自己的創意,做出一張一張豐富又有趣的作品。雖然第一次上課很難說上得很好,但是感謝各位同學們的包容與配合,最後仍是以歡樂的氣氛完成了這次的教學。

第二門課:物件導向系統分析與設計 / Second course: Object-Oriented System Analysis & Design

物件導向分析與設計

第二次上課時,我選擇了比較能夠呈現個人專業的科目——「物件導向系統分析與設計」來教,我想一直以來系統開發的經驗與跟業界朋友的交流可以帶給同學許多收穫。必須注意的是,這堂課並非是「物件導向」,而是「系統分析」,只是是用UML物件導向的概念進行的系統分析。這讓很多同學誤以為是物件導向課程而來修,後來發現是個誤會。

系統分析的課程以往在大學開課時,通常都是分組進行專案作業,期末則是呈現專案結果。本來我也想在這堂課中使用合作學習的教學法,但其實空大上課方式仍是以網路授課為主、面授課程為輔,要湊齊學生來討論其實還蠻困難的。所以到後面我就調整了上課方式,改以講課為主。

我除了以課本作為講課基礎之外,還再加入一些實作與業界的經驗分享,希望讓同學能夠兼顧課堂考試與未來實用性。最後期末的意見回饋中看到了同學的稱讚,真的很令我感動。

第三門課:Java資料結構與應用 / Third course: Data structures and Applications in Java

Java資料結構與應用

在教系統分析時遇到了一個問題,空大並沒有擋修制度,想修什麼就修什麼。許多同學以為我這門課是教Java程式設計,所以沒有基礎也跑來上課,課程聽起來十分吃力。第三次課程我就改上比較基礎的「Java資料結構與應用」。然而這堂課也不是給完全不會Java的同學修的入門課程,並不會介紹迴圈、例外處理等資料結構中常使用的方法,同學上課仍然是叫苦連天。

因此在這堂課中,我試著在既有課程進度中加入基礎的內容,希望讓沒碰觸過Java的同學也能稍微看得懂程式碼。同時我也用動畫來呈現演算法對資料結構的影響,以視覺呈現來解釋資料結構複雜又抽象的概念。這種上課方式似乎頗獲得同學的好評。

其中一次讓我印象特別深刻,我去台北中心幫其他老師代一上其中一門課,我們借用了教室的投影機展示資料結構的動畫投影片,同學們大為驚訝,下課後紛紛跑來跟我索取其他課堂的投影片,並稱讚我教得很不錯。這種付出的苦心能有所回報的成就感,真的感覺很棒。

下一次的課程:Word專業文件排版 / Next course: Professional Document Design in Word

接著很快地就來到了第四個學期。這次應方老師的邀請,我要開的課程是「Word專業文件排版」。這次上課方式又跟第一次上課的「影像處理與Photoshop」一樣,是大班級的上機課程。希望這次能夠吸取前幾回的經驗,帶給同學更好的教學內容囉。


結語:教學相長 / Conclusion: Teaching benefits teacher and student alike.

10547748_790748507645208_168964268593952746_o

這一張空大招生海報(長形海報稱為「易拉寶」)是我教完Photoshop影像處理與應用最後一堂課的時候,應助教請求留下來幫忙完成的招生海報。雖然我自己的美感真的很難拿出來說嘴,但是這張海報倒是應用了很多我課堂教學講過的技巧,就像是我在做期末報告的感覺。那時候就坐在辦公室一口氣完成這張海報,本來還擔心會不會做的太醜不受青睞,最後能幫得上大家的忙,真的是太好了。

每次看到這張海報時,就會覺得自己也是對這個世界有些貢獻。不過現在我還有很多要學習的,不論是作為博士生還是一位講師,要好好加油囉!

(more...)

中華電信學院微課程演講:「從網頁開發到Android APP行動應用程式開發」 / Speech at CHT School: “From Web to APP: Developing Android APP”

中華電信學院微課程演講:「從網頁開發到Android APP行動應用程式開發」 / Speech at CHT School: “From Web to APP: Developing Android APP”

image

這個月受邀到中華電信學院演講一門微課程「從網頁開發到Android APP行動應用程式開發」。這是給有HTML5基礎的前端網頁設計師開發Android APP的教學,講述AppsGeyserPhoneGap (Apache Cordova)的開發方法。


課程簡介 / Introduction

本次微課程將介紹如何從前端網頁開發技術進入到行動應用程式(APP)開發的領域,特別適合具備前端網頁開發能力的工程師來聆聽。演講內容將概述各種行動應用程式開發的技術,再聚焦到以網頁技術來開發行動應用程式的兩種方法:AppsGeyser 與 PhoneGap。只要會製作行動版網頁,聽完這個演講,您就能夠製作可以上架的行動應用程式!

大綱 / Outline

  • 前言:我是前端網頁設計師
  • 概論:要如何製作行動應用程式APP?
  • 樣板型APP開發:AppsGeyser教學
  • 網頁型APP開發:PhoneGap簡介
  • 實作:PhoneGap開發

投影片 / Slide

投影片下載:Google DriveOneDriveBox.netSlideShare

備註:由於當天演講時間太短,所以投影片有所刪減,這一份則是完整的版本。


演講的重點 / Points of this speech

這次的演講跟以往大家講述APP開發的內容相比,有幾個比較值得一提的地方。

關於APP開發的分類 / About APP development classification

以往大家對APP開發方法的分類只有三種:「原生型APP」、「網頁型APP」、「混合型APP」。但其實這是從PhoneGap的觀點來看APP開發方式,並不能夠含括所有的APP開發方法。

imageimage

Wikipedia的Mobile Application development給我們一個比較完整的分類:前端型、後端型以及系統型。而前述的三種分類則是隸屬於前端型開發中。而我又進一步將前端型開發方式分類成四種開發方法:

  1. 原生型APP:以該平臺開發方式開發,例如Android用Java搭配Android Studio開發。
  2. 網頁型APP:以製作網頁的思維建立APP,例如PhoneGap
  3. 其他型APP:以獨特的程式語言與IDE來進行開發,強調跨平臺或能夠支援複雜應用的開發方式。我將NativeScript歸類於其他型APP而不是網頁型APP,儘管它使用的是JavaScript,但建制的思維並不是寫網頁,而是一種獨立的開發方式。
  4. 樣板型APP:強調超簡單工具就能製作APP,像是APP Inventor。但是限制也很多。

我試著用這個分類來讓學員瞭解自己適合的開發方式,讓大家知道原來除了原生型開發方法之外,還有很多其他的途徑可以開發APP。

以PhoneGap Build的封裝方式 / Create APP by PhoneGap Build

image

市面上已經有很多書籍在講PhoneGap開發了,那我講這個PhoneGap開發豈不是再次老調重彈?實際上我這次講得內容並不是單純的PhoneGap開發,而是使用Adobe PhoneGap Build來封裝APP。

如果你仔細比較一下PhoneGap的開發方式,會發現他要做的前置作業就跟開發原生型APP一樣複雜。實際上也是如此,因為PhoneGap就是基於原生型APP之上在添加的功能。如果要開發Android的APP,就要先佈置Android的開發環境;如果要開發iOS (iPhone或iPad)的APP,就要先佈置iOS的開發環境。教過MIT APP Inventor之後,我覺得這種要花很多時間才能進行開發的方式並不利於教學。

而這個Adobe PhoneGap Build則是一種雲端服務的開發環境。我們只要把PhoneGap專案準備好、上傳,就能夠封裝成各種平臺的APP。這大幅度地降低了開發環境的配置需求,只要瀏覽器、能夠撰寫HTML的工具(像是ATOM),我們就能夠開始開發了。

然而,PhoneGap專案跟上傳到PhoneGap Build的專案內容其實有很多的差異,但是卻很少人在介紹如何製作PhoneGap Build的專案。尤其是加入簽署檔案(.keystore)讓APP可以上架的這些細節更是很少人提及,這也是我這份演講比較獨特的地方。

行動網頁框架的佈景主題 / Mobile web framework’s theme

image

這篇演講介紹了jQuery MobileDojo MobileSencha Touch這三種行動網頁框架。但我想要強調的是「佈景主題」(theme)的問題,也就是如何能在該平臺上呈現該平臺的使用介面的能力。我讚賞Sencha Touch對於佈景主題的自動偵測與切換,在Android上他是Holo Dark的風格,在iOS上則能夠維持iOS的風格。

這種能夠相應於該系統而自動切換佈景主題的功能,對於使用者體驗(User Experience, UX)來說至關重要。這表示使用者可以在自己的系統上操作熟悉的UI,而不是APP特立獨行的佈景主題。

Dojo Mobile跟Sencha Touch都有不同的主題可以套用。雖然jQuery Mobile也可以找到一些第三方主題使用,但比較麻煩。至於其他的BootstrapSemantic UIIonicAngular Mobile等行動網頁框架就更是如此。

不過實際開發時,應該還要考慮到這些框架跟後端資料庫做交換的方式、是否能夠整合其他JavaScript函式庫、或是語法是否容易理解等問題才是。也許隨著經驗越多,這個看法也會隨之改變吧。


結論:更專業的教學內容 / Conclusion: An advanced speech

在準備這個演講的同時,我也一併在進行MIT APP Inventor的家教。我本來以為這兩件事情可以合併在一起做,但仔細想想之後還是放棄這個念頭。APP Inventor是給不會寫程式的人來學習的,做完的成果難以到實際應用的層次。這次的演講是給擁有網頁基礎的人來聽的,主要要講網頁技術跟APP之間的關聯。所以最後我是分開來做這兩件事情。

image

這個微課程只是一個先導性的簡介,之後會在安排一整天的工作坊,讓學員能夠一步一步地製作行動版網頁、以PhoneGap Build封裝,然後到Google Play上架。

儘管這次的教學跟我的專業有很密切的關係,而學員的程度也都很高,講的內容也可以深入不少。但我自己也擔心起實務經驗上是否有所不足,畢竟我跟專門開發APP的工程師相比,還是有很大的差距(這就是學界與業界的差別啦)。雖然是這樣說,懂得如何做一個非常複雜APP的知識,跟如何讓學員瞭解製作APP的教學方法,這兩件事情仍然是不太一樣。

接下來要努力準備工作坊的內容,加油!

(more...)

以MIT APP Inventor教程式的感想 / Thoughts about teaching APP

以MIT APP Inventor教程式的感想 / Thoughts about teaching APP

圖片1

最近因為因緣際會,我接了一個教國中生寫程式的任務,而我選擇的教學內容是以MIT App Inventor 2來教APP。雖然因為時間的關係,這門家教課程只有上短短三次就結束了。不過這次的教學卻讓我有不少值得反思的地方。


選擇以APP來教學的理由 / Why I select to teach make APP as programing

C++或Java是程式語言課程的基本教學內容,但老實說,我覺得學習程式的過程是乏味的。先別說光是佈置環境、編譯、執行等枯燥的動作會讓人覺得疲憊(實際上現在寫程式也一樣會盡力縮短這種編譯與執行的時間,而想辦法讓整個過程自動化),以傳統語言寫出來的入門內容也只有在命令列中單純的訊息輸入與輸出。相較於命令列,我還是覺得能夠看到具體的介面、能夠互動,才讓人有種「創造」程式的感覺。

minecraft-xboxoneedition

(Minecraft Will Be Used To Teach Kids To Code, http://www.ubergizmo.com/2015/06/minecraft-teach-kids-coding/)

「創造」是寫程式最大也是最終的樂趣。不管是寫一個能夠協助日常事務繁複工作的程式,還是寫一個能夠刺激感官的遊戲,它們都是程式。

而且更重要的是,相較於一般被認為是「創造」的藝術技藝來說,以程式來進行創造的成本極低:我們不用買畫具,不用擔心耗材,只需要一台普通的電腦,就能夠開始寫程式。
(備註:其實寫程式不用買很昂貴的電腦。就算電腦上插了一張萬把塊的顯示卡,對小程式來說也沒有什麼差別,所以買便宜電腦就好,貴的電腦很多時候是玩遊戲要用的而已。)

4659468857_7e06dc4fdb

但是傳統的程式語言課程很難讓人體會到「創造」的實體感,入門課程的內容也很難讓人有實用的感覺。舉例來說,能夠迴圈印出各種形狀的「*」,其實是表示程式邏輯有一定基礎的成果。但對很多學生來說,這很難被視為是平常會有用的技能。這跟目標用程式來解決各種問題的思維其實有很大的偏差。

因此,面對上面交待要教程式的任務,我不是教傳統的C++或Java,也不是教網頁(那也很不錯,可是要做到互動性很難),而是教APP。而且不是按照官方規定的原生型APP,是MIT麻省理工學院為了程式教學開發的MIT APP Inventor 2。

教材的選擇 / Select Teaching Material

學習寫程式或是學習APP,他們都是一種應用型的技能。比起了解程式所有的功能,我認為了解如何「做出目標程式」所需要的功能還來的重要。這不僅是我們教課的時間並不多,也是遵循了我之前的說法,能創造出結果才是最令人興奮的事情。

getImage

因此我在選擇教科書的時候也是用這個想法在挑選。最後選擇的是蔡宜坦老師在2014年撰寫的「超圖解! App Inventor 2手機程式設計教本」。

值得一提的是,隨著MIT APP Inventor 推出中文介面,這本書也有中文版的教學。但是我認為學程式本身也是一種英文學習(甚至可能是程式設計師唯一會的英文),這也當作課堂內容之一來教比較好。

這本書的組成包括了17個章節,除了序言之外,大部分章節都會實際作一個APP出來,這部分的確是我想要的。然而開始教了之後,才發現各章節內容都是先講解功能、再來說明APP的製作,這就跟我想要的有點落差。所以雖然最後我還是拿這本來教,但是教學內容則是再做調整就是。

課程與成果 / Lesson and result

由於教課的時間並不長。原本預定四堂課,因為種種原因最後只剩下三堂課。我原本就不覺得能夠教完所有章節,實際上也沒那個必要,因為我的重點在於教程式的相關概念,像是變數、迴圈、事件,至於GPS、相機等只會用在手機上的功能就不是很重要。

Lesson 1. 貓叫 / Cat meows

第一堂課教的是事件與聲音播放的應用。

image

第一個範例就是貓叫聲啦,點下畫面的貓就會叫一聲「喵」。這個簡單的程式是APP Inventor的範例,在Google Play上也可以下載。

unnamed

基於對停車場的守護神:薑黃喵的敬仰,我也做了另一個薑黃喵的變體版本:換一張薑黃喵的照片上去。

image

之後我們做了小鋼琴的APP,點下指定的琴鍵發出聲音,而琴鍵在點下去時會更換圖片,這也是課本的教學內容。

Lesson 2-1. 溫度轉換 / Temperature Convert

這堂課是要教基本的運算式與邏輯判斷的應用。

image

這是一個攝氏轉華氏的應用,最後我們還加入了Slider (拉條)來輸入攝氏溫度。

Lesson 2-2. 畫圖 / Drawing

這堂課則是教Drawing and Animation中的Canvas應用。

image

可以選擇顏色、擦拭、繪畫的種類、清除版面,並將畫圖存檔後利用Share的功能傳到其他APP上,例如在Facebook上發言。

Lesson 3. 擲骰子 / Dice

這次的課程是教陣列與從陣列中取出隨機變數。

image

我們先做一個陣列,決定晚餐要吃什麼,然後隨機取出結果來抽籤。抽籤時用到了加速感應器(AccelerometerSensor),讓抽籤感覺比較有趣。

image

這個則是用骰子來抽籤,再應用之前教的邏輯判斷數字大小,搭配聲音播放結果。因為是最後一堂課,所以我加入了之前教的功能,可惜實際上沒能教到這裡就下課了。


APP Inventor的優點與侷限 / Advantages and Limitation of APP Inventor

在這幾堂課的教下來,第一個感覺是驚訝於APP Inventor的容易上手。

image

這並不只是在講APP Inventor是用拖拉元件跟拼圖就能組成一個APP的製作方法,而他的環境部屬也一樣地簡單。

要開始使用APP Inventor,我們要做的事情只有:

  1. 開啟Google Chome瀏覽器,用Google帳號登入APP Inventor:http://ai2.appinventor.mit.edu/
  2. 手機上安裝MIT AI2 Compainon:https://play.google.com/store/apps/details?id=edu.mit.appinventor.aicompanion3
  3. 開始製作APP,並用Connect中的AI Companion跟手機上的AI2 Companion配對,就可以看到成果。

照正規製作Android的方法,大概要下載超過2GB的檔案,然後要花上1個小時左右來安裝、設定,非常麻煩。APP Inventor將這些繁雜的環境部屬工作降到最低,實在是令人讚歎。

功能限制 / Limitation of Functions

image

但是APP Inventor的限制也很明顯,就是我們除了APP Inventor提供的功能之外,幾乎很難使用其他的功能。

舉例來說,本來我想要用APP Inventor來開發複雜的網路應用程式。一般而言我們都會需要用關聯式資料庫在背後儲存複雜的資料,但是APP Inventor的網路資料庫TinyWebDB只能做到儲存值、取出值兩種動作,而不能像執行SQL一樣的複雜指令。這就會讓實際應用有很多限制。

11753290_10204702104220221_219577884213920244_n

另一個限制就是APP Inventor的解析度是固定的。就算是在尺寸比較大的平板電腦上,他的解析度也會拉大到跟手機一樣。這就很難做到類似RWD的設計。

雖然APP Inventor很容易上手,但是要拿來開發正式的APP,還是要先三思啊。


結論:教程式果然很難 / Conclusion: It is difficult to teach programming

我在這短短的三次課程中以MIT APP Inventor教了程式的概念。但實際上我覺得成果並不是很理想。這最大的原因在於我仍然沒有把握程式教學的精髓,因此很難有效率地把程式的概念教給學生。

我們在寫程式時,大部分的概念都已經是固定成熟了,就像是騎腳踏車、游泳一樣地自然,通常不會去深入思考自己到底怎麼去理解這件事情的。

image

以「迴圈」為例,for的概念在限定條件下重複固定的步驟,對懂得人來說很簡單,但是對不懂的人來說,這種非線性的敘述是很難理解的事情。我一時間也沒能好好地把這個概念講得很清楚。

儘管很多細節沒能帶好,但是APP Inventor透過簡單的步驟就有成果展現,符合我對程式學習的目標。看到學生玩著自己做的APP,然後再加上我教的功能,讓APP變得更多功能,而從中找到寫程式的樂趣,這就是我覺得寫程式最令人開心的地方。

未來如果又要教寫程式,我想我會繼續使用MIT APP Inventor,然後再把概念的部分講得更清楚吧。

(more...)