2020年10月26日

【程式學習】哈佛CS50x學習筆記_Week0:Scratch

that wanaka tree

哈囉,文組。
你對於電腦科學、程式語言、網頁製作有興趣嗎(當然,不然你就不會在這裡了)?那麼,你極有可能會在網路上找到哈佛大學開放式課程CS50x的資訊。
CS50x是一門簡介電腦科學的課程,簡單來說就是台灣的計算機概論。然而,這門課程的深度、廣度,據說是要來得深刻許多。我在此也不多做介紹了,想知道CS50x的課程背景及簡介的人,可以閱讀底下數篇文章:
我的知識背景
對於想要轉職程式設計,但是在大學期間,並非就讀資工甚至理工科系的人來說,技術文章的作者背景是相當重要的。比如一個從電機系轉職程式設計的人,他所寫的文章,可能對於純文組的人幫助不大。因為他曾經學過相關數學,甚至在電機系裡也學過C語言,對於程式語言並不陌生。他能夠克服的困難,對於純文組學生而言不一定容易克服。
我本身是歷史系出身,純文組,所以我並沒有學過微積分、線性代數、統計學等等數學或相關應用學問。
研究所畢業後,我覺得所學不足以應付工作所需,於數年前參加了臺灣大學資訊系統訓練班,在短短數週內,硬生生地把HTML、CSS、JavaScript吃進去。雖然學習JavaScript跟數學程度無關,但是到最後,我卻只能製作靜態網頁,完全無法理解JavaScript。後來想說JavaScript可能對我太難,所以又去學了PHP,結果還是學不會。總之當時遭受很大的打擊,覺得自己是智障。
大概在一年前,對於程式語言學習仍不放棄的我,決定自學Python及SQL。我試了好幾種方式,例如買了一本《精通Python》,看書看到大腦都快融化了,讀到第七章決定放棄。最後找到Cadecademy這個程式學習網站,總算有系統地將Python學過一次,並且學會如何應用套件,練習資料視覺化、SQL資料清理、資料分析、爬蟲等等。原本按照課程路線,要接著學習機器學習,不過這部分需要數學及統計背景,所以我就先暫停,回頭打好資料結構與演算法的基礎。
本篇文章是我的第一篇學習筆記,CS50x規劃了九週課程,從Week0到Week8,不過此系列文章不會分成九篇。因為課程難度頗高,會有很多補充資料。如果你也正在看CS50x課程,歡迎您跟著我一起學習。有任何問題請在下方留言,我會盡力回覆您。
*如果你不知道去哪裡看CS50x,可上EdX.org觀看,如果不需要證書的話,這是免費的課程。你也可以全部上完後,再決定要不要花錢買證書。
2進位
馬蘭教授(David J. Malan)認為電腦科學是一種問題解決的方法,他以下圖表示,從輸入(input)到輸出(output),中間那塊就是電腦科學的位置。

that wanaka tree

就我的理解,電腦科學就是處理資料的科學,對我來說不難理解。本身歷史系出身,其實歷史學也是處理資料的學問,不過電腦科學在工具的掌握上,要遠勝於歷史學的工具。大概就是iPhone跟石斧之間的差異吧。
在電腦中處理資料的是電晶體(transistor),電晶體能夠傳達的資訊只有利用電源開與關,也就是0跟1這種2進位方式。如果有在高中學過計算機概論應該會知道這個小常識。
2進位的換算方式很簡單,我們可以從2、4、8、16、32、64、128、256,從右到左排序。
假設我們要把數字85轉2進位,答案就是1010101。
that wanaka tree
計算方式就是64*1+16*1+4*1+1*1
或者把104轉成2進位,答案是1101000。
that wanaka tree
計算方式為64*1+32*1+8*1
上面一個0或1,叫做1 位元(bit)
1 Byte = 8 bits,所以1 Byte可以表示從0~255,一共256個數字。
資料呈現
即使電腦能用2進位計算數字,但是怎麼呈現非數字以外的資料呢?當然就是大家先討論好,什麼數字可以代表什麼符號。所以很多年前,人們就共同決定了用數字來表現英文符號,例如65就是A的意思,B當然就是66,以此類推。這些符號表示的方法,叫做ASCII( American Standard Code for Information Interchange),不過現在大部分都不採用了,因為這套系統能夠代表的符號太少了,只能用於英語。現在都採用Unicode,中文叫萬國碼。
顏色呈現的方式也是如此,目前電腦採用RGB系統,R代表紅色,G是綠色,B是藍色,每個顏色有從0~255的色階,混在一起就會呈現新的顏色。
演算法
上述的都是一些小常識,真正超級重要的東西來了。
演算法是找尋、計算資料的方法,假設我們想在電話簿裡找到Mike Smith,我們可以有下列3種方法:
  • 從第一頁開始翻,翻到最後一頁
  • 每一次跳兩頁地翻,但是如果翻過頭,就得回頭
  • 翻開頁數的中間,確認Mike Smith是在左邊還是右邊的電話簿,如果在左邊,就可以把右邊丟棄。然後再翻開剩下電話簿的中間,再確認一次是在左邊還是右邊。如果電話簿為1024頁,最多只要10步驟,就能找到任何要找的人名。
把上述的3種方法,將所需時間當作y軸,所搜尋頁數當作X軸,可畫成下圖:
that wanaka tree
第一個方法為紅線,所花的時間最多,第二個方法為黃線,雖然只需要紅線的一半,但是隨著頁數的增加,也會大量增加解決時間。只有第三個方法,綠線所耗費的時間最短,因為僅有10個步驟,不管頁數再怎麼增加,也不會增加太多時間。
注意這裡談到解決問題時,是以步驟來決定演算法的好壞。假設電話簿有1024頁,第一個方法要一頁一頁找,最多需要花1024個步驟;第二個方法最多也需要1024/2個步驟;只有第三個方法,可在10步驟內完成。
程式邏輯
所以什麼是寫程式呢,寫程式就是把上述找人名的演算法過程,用一套邏輯寫下來,再把這套邏輯編譯成電腦能懂的2進位去計算。上面找人名的第三個方法,用英文寫起來就會像下面這樣:
Pick up phone book Open to middle of phone book Look at page If Smith is on page Call Mike Else if Smith is earlier in book Open to middle of left half of book Go back to line 3 Else if Smith is later in book Open to middle of right half of book Go back to line 3 Else Quit
如果英文程度有基本程度,應該很容易能懂得上述這串虛擬碼(Pseudocode)。
Scratch
Scratch是麻省理工大學開發的一套電腦程式開發平台,就算你不懂任何程式語言的語法,只要透過簡單的操作訓練,很快地就能上手。平台畫面如下:
that wanaka tree
最左邊的積木就是程式碼,都已經圖形化了所以不用去寫。最右邊則是你可以操縱的人物,叫做sprites,是由數張圖片湊在一起的,透過程式操作可以變成動畫。中間部分就是撰寫程式的區域,操作方式很簡單,拉左邊的積木來中間拼就可以了。
that wanaka tree
上圖是課程中介紹的一段程式碼,寫成中文的話就像下面這段
1 當綠旗被點擊
2 詢問「What’s your name?」and wait
3 說「Hello!」
4 說 answer
Scratch也有迴圈可以使用,如計次迴圈、條件迴圈、無窮迴圈,底下為無窮迴圈。
that wanaka tree
上圖的程式,寫成中文如下:
1 當綠旗被點擊
2 將counter這個變數(variable)設為1
3 在這底下不斷執行:
4 說 counter 1秒 #counter = 1
5 等 1 秒
6 將counter + 1
因此這隻羊就會不斷地數數字,一開始counter設為1,程式末端將counter+1,所以就變成2,再迴圈一次又變3,數到程式中斷為止。
至於計次迴圈就是只會迴圈固定次數。
that wanaka tree

1 當綠旗被點擊
2 在這底下執行3次:
3 說 cough 1秒
4 等 1 秒
這個程式很簡單,只會說cough三次。
因為有Python的基礎,Scratch的功能我大概都知道了,由於這是學習筆記,所以關於Scratch的介紹就不再贅述。然而即使你沒有學過程式語言,Scratch也很好懂,摸索一下,很快就能知道怎麼操作,非常好玩。我發現這個圖形化程式雖然簡單,但是也能做出很複雜的遊戲,如這個馬利歐遊戲。我自己是做了一個大金剛對戰機器黃蜂的小遊戲,bug挺多的,不過是很好的練習。
Happy codding!!!

在資訊爆炸的時代裡,重新習得放空的實踐過程

首先來回答底下幾個問題:

  1. 你是否曾經要寫作業,打開電腦後,一個小時後才默默關掉臉書或Youtube?
  2. 你是否在社群媒體上發了一篇動態,過幾分鐘後就迫不及待想看看有沒有人回應?
  3. 你是否三不五時就想查看社群媒體?
  4. 你是否跟另一半去餐廳吃飯,還是會看著手機呢?
  5. 你是否曾經花了一整晚,瀏覽臉書或Youtube上的短片?
  6. 你是否在等待公共交通工具,或者在乘坐的當下,就會習慣拿起手機?

如果以上6個問題都是肯定的,你也許是一個網路成癮患者。不過你並不孤單,畢竟在這個年頭,誰不是網路重度使用者呢?尤其在智慧手機發明後,從小孩到老人,只要有能力負擔,幾乎都人手一台。

英文程度不好,卻需要寫英文文章,怎麼辦?

Photo by Christian Erfurt on Unsplash

Photo by Christian Erfurt on Unsplash

職場上,難免會遇到需要使用英文的時候,這時候該怎麼辦呢?你說把工作推給其他同事?那麼,如果你已經是同事之間英文程度最好的,或者這份工作本來就屬於你,想推也推不掉,你該怎麼辦?

用Google翻譯?

Google翻譯是很好用的工具,但是如果直接把整段文章丟入,結果就是悲劇。英翻中可能還可以,中翻英肯定是不行的。Google工程師要能夠駕馭中文,還得有很長的路要走。在此時此刻,我們仍得自立自強。

我前幾天被指派了一項工作。我們是學校單位,仰賴中華民國教育部的計畫餵養,他們給錢,我們提交計畫書與KPI。教育部要求我們得把計畫書的亮點翻譯成英文,工作就這麼落在我的頭上,只因為我的英文程度相對比較好。

我的英文程度好嗎?我實在不敢這麼自稱。幾年前考過多益跟雅思,多益滿分990,我考了850分,雅思滿分9分,我考了6分。不能算太差,但是也僅是堪用。

可是就是做翻譯工作啊,該怎麼辦呢?幸好我最近很閒,有好幾天可以摸索。於是我找出了一些方法,這裡分享給各位。

影響我一生的一本書:小王子

 

雖然我的人生還沒過完,不過要說到影響我人生的書籍,第一個躍入腦海的就是聖修伯里(Antoine de Saint-Exupéry, 1900-1944)的《小王子》(Le Petit Prince)。這本書有多有名應該不需要我多做介紹了,它被翻譯成超過250種以上語言,販售冊數超過兩億本以上,相關資料大家可以逕自到維基百科上查詢,我就不複製貼上了。

如果你真的沒讀過《小王子》,我幫你做個基本簡介。本書以一個在撒哈拉沙漠迫降的飛行員為第一人稱口吻,描述他遇到一個來自B612小行星的孩子(外星人?)。作者透過飛行員與小王子的對話,談什麼才是人生的價值。故事裡大量描述成人世界的可笑,並且讚揚只有孩子才懂得真正的快樂。

我第一次閱讀《小王子》時,大約是在我18歲左右。當時的我經歷父親自殺,家庭幾近破碎,未來一片茫然。

自主學習能力評估指標建構的前導研究

本文是我與王千文博士(就是我老闆),為建構自主學習能力指標,針對東吳大學校內的自主學習社群的前導性研究,是一篇口頭發表的論文摘要。本文在「2020國家教育研究院 自主學習資源的發展與應用國際學術研討會」發表,此研究非常粗糙,還有待後續整理及研究。

自主學習能力評估指標建構的前導研究:以東吳大學自主學習社群為例

一、 研究背景與目的

台灣自教育部2017年推廣「大學學習生態系統創新計畫」後,教育界興起推動大專生自主學習能力培養之風潮。過去數十年來以自主學習能力為主題的學術研究論文所在多有,然至今對自主學習概念的界定仍莫衷一是。再者,我們也注意到台灣目前高教在推動自主學習的當下,似乎較缺乏對該項能力進行評估的指標建構。學界最新提出的自主學習成效的評估構面與指標的相關研究,聚焦在以語言學習作為評估指標建構之個案,這對於要推至其他領域的自主學習的評估來說,在一些指標的操作上將較顯得有窒礙難行之處。因此,本文在理論與實務方面亟欲探討的是:作為一般性自主學習成效的評估應包括哪些構面與指標?藉由本研究的執行,預計未來主要達成目標有三:1.自主學習概念的深入瞭解;2.型塑自主學習運作成效的評估架構與指標;3.植基自主學習成效的評估架構與指標,反饋至高教領域推動自主學習時制度建構的參考。

2019年11月24日

【書評】我們為何從眾,何時又不



中文翻譯:我們為何從眾,何時又不?
英文原文:Copycats & Contrarians: Why We Follow Others...and When We Don't
作者:南澳大學選擇研究所(Institute for Choice, University of South Australia)教授蜜雪兒‧貝德利(Michelle Baddeley),是行為經濟學界重要學者。

2019年10月22日

【資料科學】使用Python的sklearn免費機器學習資料庫,學習繪圖及使用支援向量機(SVM)分類

今年選了一門短期四周課程,每次兩小時,雖然學不到什麼,但是囫圇吞棗還是有些收穫。

底下記錄學習歷程:


2019年9月8日

【書評】對於理財的想法...

我以前會有很智障的想法,就是覺得理財這件事充滿銅臭味。不知道為什麼會這麼想。人生活了三十幾年,直到今年才開始翻理財相關書籍。

這次我一口氣閱讀了下列書籍:

T. Harv Eker, Secrets of the Millionaire Mind, New York: Harpercollins, 2005
這本書我看原文,中文版由大塊文化發行,譯為《有錢人想的和你不一樣》

納西姆.尼可拉斯.塔雷伯(Nassim Nicholas Taleb)著,盛逢時譯,《隨機的致富陷阱:解開生活中的機率之謎》(Fooled by randomness : the hidden role of chance in the markets and in life),台北:時報文化,2002

艾爾文,《從零開始穩穩賺》,台北市:三采文化,2015



2019年4月11日

【影評】寂靜殺機(The Silence)--略嫌平淡的作品


我從未看過2018年的《噤界》(A Quiet Place),但是在網飛(Netflix)上看到《寂靜殺機》(The Silence)預告片時,第一時間就把聯想到《噤界》。這兩部片的主角,同樣是得面對只要發出聲響就會攻擊人的致命怪獸。另外一部類似的作品是《蒙上你的眼》(Bird Box),每個人都得在戶外閉上眼,否則只要張眼就會看到惡魔,進而自殺。

剝奪五官的末世之作的確是令人感到有興趣的題材,《蒙上你的眼》還算是值得一看的小品。至於《寂靜殺機》則稍嫌平淡了一些,許多劇情的安排上讓人感覺到莫名其妙。

2019年3月19日

【雜記】重返功能型手機時代的放空生活


▲Nokia 8110黃澄澄的外表,讓它又俗稱香蕉機

最近買了功能型手機:Nokia 8110 4G。

Nokia 8110是HMD Global在2018年的復刻機種,系統是KaiOS,具有4G上網功能。簡單來說就是以前的功能型手機,現代俗稱智障手機、老人機,但是具有4G行動上網及熱點分享功能。

功能型手機最大的不同處就是沒有智慧型手機各種方便的應用程式,沒有LINE、Uber、Netflilix等軟體。即便Nokia 8110內建YouTube,但是看看那種畫質及畫面大小,也不會有人想看的。

既然這麼爛,幹嘛買?

之所以會買這種閹割過的手機,也是有感於自己太過依賴手機。自從在2011年於澳洲買了人生第一台智慧手機後,幾乎時時刻刻無法遠離它。吃飯時要看手機、搭捷運時要看手機、上廁所時要看手機,就連走路都盯著手機看。

放空一詞從此跟我無緣,大腦佔據了太多沒有意義的資訊。一個晚上可能耗在YouTube上,看著可愛的貓咪影片,一片接著一片,虛度了人生。可愛貓咪影片算還好了,至少撫慰心靈,9GAG上面一堆智障meme(1),看完讓人覺得自己到底看了什麼,卻又忍不住滑下去,因為我的手停不住啊!

當然你可能會說,那就不要看就好啦,幹嘛停用智慧手機。很多很方便的APP,不用不是很可惜嗎?

我也知道很方便啊。要聯絡朋友?誰還在傳簡訊浪費錢,LINE幾乎取代了簡訊,甚至電話也取代了。下雨天不想出門買午餐?開啟Uber Eats點個餐點及飲料,然後在沙發上追個劇,半小時內就送來。等公車很無聊嗎?上千萬部娛樂影片及遊戲等著你下載,很多還免費!

然而,便利的代價,不就是人們花了更多更多的時間在手機上嗎?各位在餐廳裡看過情侶或夫妻用餐時,眼睛只盯著手機螢幕的嗎?有時我都懷疑這樣幹嘛去外面約會吃飯,在家叫外送一起吃不就好了?

如果能夠控制自我慾望,輕鬆駕馭掌上魔物,智慧型手機當然是現代人最好的輔助工具。至於我,根本不行,最好的方法,就是別用。

--
1. 指一夕間在網際網路上被大量宣傳及轉播,一舉成為備受注目的事物。