2016年12月8日 星期四

[心得與推薦] Python初學特訓班



先說了,這是一篇推薦偷渡心得加上一點點抱怨可能又會得罪一些人的文章。如果閱讀完以後你感到些許的不快,容我先致上深深的歉意。(一種先道歉就算有誠意的概念)

閱讀一本關於程式語言的電腦書,不知道是多遙遠之前的記憶了。這次在因緣際會下,有幸從黃兄信溢手上拿到這本剛上市不久即攻佔暢銷排行榜的新書。使盡洪荒之力用最快的速度淺入淺出閱讀之後,我用一位國中資訊教師的視角寫下這篇推薦文。

但是在寫推薦之前,首先我要先抱怨,這本書的封面讓我實在很尷尬,因為它用了最害怕也最討厭的一種動物,我一定要先找一張紙把它貼起來,不然拿在手上會一直覺得好像有哪裡怪怪的。

以下推薦文開始。

-----------------------------

其實在「Python初學特訓班」上市之前,我就在網路書店上看到它的內容簡介跟目錄,還好企劃編輯鼎鼎大名又不小心剛好認識,所以我就直接找上信溢兄討書了。它會吸引我的原因,是因為內容的範例架構,編排的出發點是以「生活上的應用」為主,而這也是現在許多程式語言書很大的盲點與缺少的部份。

我一直覺得,無論是運算思維或是程式教學,都應該要讓學習能與生活結合。要是好不容易學了程式的邏輯思考跟語法,卻不知道可以應用在哪裡,就像學了一堆的武功心法,結果整天只是找木人椿練習,等出江湖遇到了真正的高手,才發現人家根本不跟你一招來一招去啊陷入這樣的窘境。說實在的,很多程式語言的電腦書,裡面提供的範例高來高去的,不儘無趣而且不實用甚至還很複雜。有多少初學者好不容易跟完這本書,卻在準備要應用時遇到困難,接著就只能上網搜尋相關的資源來解決,完全失去了買工具書的價值這樣。

這本「Python初學特訓班」在範例的提供上,示範了所謂的正確方向,值得學習。更何況,它的書名上寫了斗大的「初學」兩個字,要是在這一點掌握得不好,就完全失去了入門書籍的意義。(在我看到關於人臉辨識的應用時,不禁笑了出來,因為我是一個電腦老師,不以程式開發的角度來看,它絕對有發展成教學活動的價值,學生也絕對會喜歡的)

以上是簡短的推薦文。(真的很短)

-----------------------------

對於國中甚至高中學生來說,要是想讓他們學會一套程式語言,第一個難題就會是在「英文能力」上。Python的語法相對於其他語言,一直以「簡單」著稱。但是就算語法再怎麼樣的簡單,它還是寫英文啊,還是需要基本的英文能力啊。大多數國中小學生光看到一堆的英文字母出現在螢幕上,應該就直接選擇放棄了。(再怎樣我們都得承認,就算從小學就開始學英文,到了國中還是有很多人的英文程度低落到不可思議的程度)

現在許多有熱情的老師、有熱情的團隊在國小階段推廣程式語言的教學,為了避免英文造成的學習障礙,他們必須提供學生足夠有親和力的平台。於是乎,我們好像已經看了好幾年的那隻永遠帶著一樣笑容的貓,以及各大平台(無誤)都一致選用的積木堆疊介面(這是目前公認最容易學習的程式開發學習方式)。為了讓學習的歷程更有趣,所以有部份的設計者透過設計遊戲的方式,試圖讓學生能在闖關、完成任務的過程中逐步學會程式的邏輯概念。

只是,我一直有種莫名又有點不知道怎麼形容的怪怪的感覺。我用一個30年資歷電玩玩家的角度來看,目前看到的設計所做出來的東西本質上是差不多的(一樣無趣)。對我來說,叫一隻貓往前走、轉彎、吃蘋果,跟叫一個方塊人物往前幾步、砍一顆樹跟剝羊毛,甚至是叫一個拿劍的勇者,逛迷宮打怪物,根本是同樣的事。

當然,你可以說程式的邏輯不就是這樣而已嗎?好吧,現在這些小朋友闖過了幾關、完成了幾個任務,之後呢?沒了,也許他們學會了一點迴圈的概念,厲害一點的還會邏輯判斷式,但是學生的生活還是沒有任何的改變啊各位!走出電腦教室之後,他們仍然不曉得那隻貓能為他們的生命帶來什麼(好啦!也許有那麼一點好像自己變厲害、好像很有思維的虛榮感,也許是學生、也許是老師)

我在發展「偷插電的資訊科學」的教材以及授課的過程中,會一再對學生強調,每個章節的內容看來也許無趣也許艱深,但是它們都有應用在生活的時候。一開始也許學起來覺得好像有點無聊,但是等到這些學過的概念出現在他們週遭的時候,他們才會發現「運算思維的浪漫來自與生活的結合」到底代表了什麼意思。在國中階段我們不需要把每個人都培養成資訊工程師,對我來說,學過運算思維之後能夠為他們的視野帶來一點變化,這樣就夠了。

舉例來說,因為學過了二進位的概念,當你看到手機容量的標示寫著32GB、64GB、128GB的時候,才會知道為什麼那些數字永遠不會是整數;

知道了不同的排序演算法,有一天也許你在整理自己書櫃的書,有一整套書上頭都有編號,你很龜毛地想按照順序排好,一邊排就能一邊思考我該運用什麼策略才能稍微節省一點時間;

學會電腦是如何處理資料的錯誤檢查與修正,還能順便知道ISBN書碼檢查碼的設計原理,然後我們可以透過試算表的函數與公式功能,自己做一個身份證字號產生器,以後註冊某些網站的時候就不用把自己的身家資料都告訴人家;

知道訊息加密的概念之後,以後跟我的好朋友想在上課偷偷傳紙條又不想被老師沒收以後知道內容,就可以跟朋友先約定一個金鑰……

當然,「Python初學特訓班」這本書所針對的讀者對象並不是國中小的學生。要想在每週只有一堂課、一堂課只有45分鐘的時間(等他們都坐好、管理好秩序之後搞不好只剩30分鐘可以用),不只要讓學生克服英文的障礙,還要他們寫出一個有基本功能的程式(有些程式光做一節課是做不出來的),這絕對是一件困難無比的事。

我不禁在想,現在有那麼多擁有熱情的老師與資源,百花齊放地在一些學校帶入了運算思維、程式語言乃至創客概念的教學,不管是那隻貓(感覺我真的對牠好像真的很有意見)或是那塊電路板、那台印表機乃至在天空飛來飛去的東西等,感覺很精彩也很有趣也很有思維。在這些孩子們進入國中之後,將會遇到學習落差的問題,來自於不同小學的他們,不見得擁有相同的學習歷程,國中端勢必得安排出一套教學內容出來。

107學年開始,資訊教育課將會在國中端變成必修課程,但是國中的資訊教育卻其實是長期以來最被忽略的一塊地方。我們一直沒有固定的排課,連固定的專業師資都不見得有。在新課綱上路之後,運算思維是課程的核心,教學活動與內容除了可以想辦法用「偷插電的資訊科學」概念來實施之外,在程式語言的學習上是否能讓國中學生也可以有一系列的、在一到兩個完整的學年中可以進行的教材與教法呢?我還在期待,也還在等待。

沒有留言:

張貼留言