[進修]stanCode 課程分享

讓我從放棄coding,到成為可完成數個projects的程式教育。

老派工作室
May 30, 2021

這篇文章重點在說明我的學習背景介紹stanCode(機構介紹、SC001、SC101課程內容、上課方式)、綜合分析(誰適合這個課程、上班族事前準備、為什麼推薦stanCode),課後心得和自我期許

【學習背景前提】

高中電腦課,老師在上面講,我在下面抄同學的code(還看不懂自己在抄什麼),認定自己這輩子與code無緣(高中假三類、選科系從沒考慮過CS)。

大學計概課,寧願去修建築系很硬的必修來抵學分,也不想選修本系計概。研究所時期,身邊的同學都開始自學coding,特別是和ArcGIS編寫有關的python所以再次鼓起勇氣買書自學,看到if、while迴圈章節,已經無法理解書上內容,只好再次放下。

會關注到stanCode,是看到大學同學的社群分享,內容看起來「好像很簡單(?)」,再加上公事剛忙完一波,以及公司難得難得難得發了年中獎金,就「換個方式,再給自己最後一次機會」!反正投資自己一定穩賺不賠。

【stanCode 程式教育機構介紹】

stanCode程式教育機構

stanCode官網可以看到,「stanCode程式教育機構」是由三位畢業於Stanford大學的材料碩士、電腦科學碩士、電腦音樂碩士所創立。主要授課老師是Jerry(材料碩士),把Stanford大學的程式課程,帶回臺灣,並設計成適合臺灣學生的教學內容

主要課程為SC001基礎班、SC101進階班、SC201 AI班、SC202 刷題班,本篇文章會以分享「SC001基礎班、SC101進階班」為主,這也是目前stanCode每月都會固定開班授課的班別,上課內容和其他程式語言相似度較高,稍微理解如何轉譯即可,適合沒有任何coding基礎,或已經有其他語言基礎想要了解python內容的大眾。

SC201是我今年規劃要完成的課程,預計成果會產出一個專案,之後有機會再跟大家分享囉:)

【SC001基礎班 (2020-Jul假日班)】

SC001基礎班 (2020-Jul假日班)-課程安排

到目前為止,學習coding過程中,我認為最重要的基礎能力是「邏輯」,唯有先培養一定的coding邏輯基礎,後面才能更容易下手coding。思考為什麼這個code要這樣寫,大概知道可以嘗試的方向也能更容易看懂別人的code。

所以,SC001第一堂課:透過Karel機器人,建立邏輯基礎。

Karel 機器人( created by Richard E. Pattis),是一種程式教育語言( educational programming language),主要設計用來學習的工具,與用於編寫真實環境下的應用程式程式語言不大相同的一種程式語言。(維基百科)

透過有限的幾種指令+基礎程式概念,讓Karel機器人在世界裡完成特定目的,就像超級瑪莉,只能用「上、下、左、右」去破關,那再加上基礎程式概念,把重複的工作簡化、也讓Karel自行判斷條件,寫出一個適用於所有情況(世界)的code。

有了一定的邏輯架構後,在第二、三、四周,教的是如何加深應用這些工具,以及實際應用在各領域的內容。

[學完SC001後,你可以…]

了解「程式分解、條件式if、迴圈while、變數variable、函式function()、文字處理、物件導向(入門)、影像處理(用code製作P圖)」。還有理解我覺得最難的「user端和coder端應用」

SC001基礎班 (2020-Jul假日班)-結業合影
SC001基礎班 (2020-Jul假日班)-獎學金合影

【SC101進階班 (2020–Dec假日班)】

SC101進階班 (2020–Dec假日班)-課程安排

相較SC001基礎班,SC101專注更多「應用」層面的內容每一次的作業都像是完成一個迷你project。對於程式初學者而言,可以透過每次作業的milestone步驟,完成不同主題的project, 真的非常有成就感。

[學完SC101後,你可以…]

  1. 物件導向+動畫製作:完成打磚塊遊戲(Breakout)
  2. 資料結構、數據分析、python爬蟲
  3. python內建函式、lambda、tkinter繪圖、電腦記憶體:資料搜尋系統
  4. 超爆難:遞迴、演算法、搜尋排列(英文重組字詞 (Anagrams)、boggle game遊戲)、Linked List(難度*N、大魔王)
左上:打磚塊、右上:資料搜尋系統、左下:英文重組字詞 (Anagrams)、右下:boggle game遊戲)
SC101進階班 (2020–Dec假日班)-結業合影
SC101進階班 (2020–Dec假日班)-證書get!!!!

【上課方式、課後作業、助教時間】

[上課方式]:觀念講解 →老師示範 →學生實作。(多次進行)

通常會拆分成數次進行,不會一次講解大量觀念才開始實作。另外也不要以為看老師寫一遍,自己就能寫出來XD,我自己是蠻常上課練習就卡關的,可以隨時舉手問助教或老師,透過即時的講解,加強觀念釐清

[課後作業]:每周10–12小時作業練習、助教批改

平均每一週作業"表定"平均10~12小時可以完成(我自己是15小時),除了上課之外,透過作業練習加強觀念理解,是我認為真正把程式學好的關鍵!

如果作業卡關,可以線上詢問助教、每次作業批改助教都會用心的檢查所有的條件是否都有成立,並提供修改code的原因、方向,

SC001-作業一-封面、其中一題作業批改內容

有別於基礎班,進階班的作業更為複雜,所以作業設計上是透過「milestone分解作業的方式」,讓大家一步步的完成作業,不會無從下手,是我非常喜歡進階班作業的部分

[助教時間]:超推!沒有助教活不下去

  1. 線上:我會先跟助教說自己的想法(寫在紙上或畫圖拍給助教),然後截圖給助教看目前的code,如果真的卡住,才會再傳檔案給助教幫看。
  2. 現場:每周上課前一天、每次上課前後,會有現場助教時間,面對面和助教討論。直接搬電腦跟助教討論,馬上修改跑code,可以更快找到問題點(進階班我都直接搬電腦跟助教討論)

【綜合分析】

[誰適合來上課?]

  1. 零基礎、想要學習coding但還沒找到適合的學習方式
  2. 突然有一段空閒時間,想要增加自己的競爭力
  3. 喜歡密集學習,不想拉長學習時間

[上班族的事前準備]

  1. 精神飽滿的上課(畢竟是自己的血汗錢繳費上課的?)
  2. 每周請預留10~15小時作業時間:先確保自己有這麼多時間寫作業,再上課!不然成效真的蠻低的,因為大部分的觀念都是透過寫作業的過程建立。

[為什麼推薦 stanCode?]

  1. 從零教起、密集又紮實的上課內容:只要一恍神就會跟不上,每次下課都會很期待下一次的上課!
  2. 小班制、助教制(隨時發問):stanCode的師生比大概是1:8~10。我當初上課的時候,幾乎每天傳訊息給助教問問題,不分白天晚上,想到就會傳訊息(怕忘記),助教也都超快解答!但因為我真的個性太急,有時候會直接私訊Jerry,但都得到誠意滿滿的回答!
  3. 生動、浮誇、善用比喻的教學方式:就看書自學而言,大多直接說明生硬的程式概念,但是Jerry上課道具超多(stanCode IG),上課看表演不容易睡著,寫code的時候會直接聯想到那些道具的比喻,適合初學者。
  4. 用期末考激發自己的好勝心(我啦!),還有獎學金可以領XD!
  5. 最後推一個進階班證書 (期末考70分以上)— 「Certification of Completion:Programming of Abstraction」,Jerry和助教還會協助學生把作業成果整理到GitHub(連結就是我的GitHub哈)!,同時也會有圖靈線上證書放在個人LinkedIn上,未來求職更專業!
左:紙本證書;右:圖靈證書平台。QRCode可連結個人LinkedInGitHub

【課後心得與自我期許】

我認為,學習「程式語言」這件事,有別於自己高中以前所使用的念書方法,過去只要使用正確公式就能得出答案的題目,在程式的世界裡卻沒有標準解法(code感覺更像用數學在寫作文?)。

對我而言,這種需要特定的學習技巧的領域,為了加快學習成效,我會選擇去上課、有老師從基本的觀念開始講解、有人可以問、可以釐清我的觀念

在了解學習方法、建立基本觀念之後,還是要「靠自己」,這時候才是自己買書、看線上課程、刷題等自學的階段,也可以看看code可以如何和自己的專業領域結合!共勉之,老師和去上課真的不是萬能。

--

--