課程心得 | 初心者的計概與 Coding 火球術

8y Choice
9 min readDec 22, 2022

--

初心者的計概與 Coding 火球術 是Huli 大神為了菜鳥工程師,開的 “基礎中的基礎” 的計算機概論課程,很佛心的用超級白話文解釋了許多”工程師界”、”軟體界”、”科技業”,大家普遍認為是”常識”的專有名詞。是廣大網路世界中,目前看過對 ”零基礎” 的轉職工程師最友善的課程。

這堂課我是在 CourseraComputer Science: Programming with a Purpose 課程,開課後一周註冊的。

最初打算同時用相對完整的大學全英文版計算機概論課程,加上被我定義成 ”中文版計算機概論的概論課程” 作為輔助,而且課程總時數短、每個影片長度也都在 30 分鐘以內,甚至有的只有 2~3 分鐘,又沒有作業,很適合午休時配著飯吃,雖然後來 Computer Science 課程中斷了,但幸好有先找到這堂課,讓我不至於因為 Coursera 的課程無法繼續,而對 ” 計算機概論 ”過於恐懼。

為什麼我會選 初心者的計概與 Coding 火球術 這堂課

從普林斯頓的全英文課程 Computer Science: Programming with a Purpose ( 後面簡稱CS in Java )中,覺得好像都有聽懂,但要寫作業時,又覺得困難重重,想說找中文的計概課程一起聽,可能會比較容易進入狀況。

當初看到這堂課時,有一段說明文字很有感觸,提到大學的計算機概論課程通常是用硬底的程式語言來進行教學,像CS是用Java,對於沒有基礎的人來說,其實很難跟上。

的確我在上CS in Java課時,聽完第一周,雖然課程聽得懂,但真的要寫作業時,Java的語法還是得逐個拿去問 google ,就跟用不太熟悉的語言再去學另一個語言,讓寶寶心好累。

Photo by JC Gellidon on Unsplash

初心者的計概與 Coding 火球術 是一堂什麼樣的課?

於是你開始上網尋找課程,可能學了 python,學了 rails,或甚至學了 iOS。有許多大同小異的課程,總是用固定的開場白、同樣的教學方式。先從程式語言的歷史講起,接著教你資料型態,再來講 if…else 流程控制,然後 for 迴圈。課程是聽完了,語法也學會了。但是要你實際動手做的時候,你卻呆住了。

摘錄自課程說明,完全講出我的心聲。

初心者的計概與 Coding 火球術》是一門免費的超基礎計算機概論課程,分成11個章節,全長大約 5 小時,每個章節包含約 10~20 分鐘的短影片,沒有作業,但有一些練習可以自己去角落腦力激盪一下,可以在 Huli 的 Lidemy 鋰學院網站上課。

誰適合上這堂課

我認為,對於非本科系或同產業轉入工程師領域,已經開始工作的人來說非常適合 (就是在講我自己)。

可以補足許多基礎的概念,而那些概念基礎到,如果是轉職的學習階段就來學這個,可能會超級無感;但開始工作後,那些似懂非懂,以前不知道也可以完成任務的狀態就不存在了,很多專有名詞,不能只是聽過就好;如果沒有真的了解,跟同事或主管溝通時會很難對頻。

雖然本科系通常指的是資工,但說實在的,資管、電機等科系,甚至數學、企管系有在數學領域持續深化、或是被迫學了運算思維、邏輯思考的學分,在轉職的路上,相較於大學四年,只有大一 2 學分的生物統計跟數學勉強沾得上邊外,他們還是離 ”本科系” 距離近很多。所以其實當某些人說 ” 我不是本科系,也學得很好 ”時,他們或許在學校不懂事時,還是比你多學到了一些什麼…

推薦給已踏入這個領域,對很多名詞都很困惑的人。

比起加入轉職養成班之前、上課中、求職之前,我認為剛開始工作是最好的時機,一來很多聽過但搞不懂的名詞 Huli 都整理在這堂課了,重點是整理得很白話!

如果只是想轉職,很多章節可能聽完之後完全無感,也不會吸收。例如我很喜歡的第二章 command line,開始工作需要一直使用時,才真的覺得令人害怕,這時候去詳細了解所學習的CP 值最高;而上課中為什麼不適合?在那半年,每天都有大量的資訊 ( 觀念、語言、語法等等 ) 在盡可能地塞爆你的大腦,能全部吸收就要偷笑了,再去接觸當時用不到的資訊反而是浪費時間;而求職時期,老實說幫助也不大,與其聽課,不如把工程師面試 101 問徹底了解還比較實際;綜合以上,開始工作時在聽這堂課會超有感!

印象最深的內容

第四章的網路基礎概論,講到的 IP 的觀念,從開始工作以來,試著理解過很多次,之前也有人講過,不知是因為聽很多次了,終於在這次領悟,還是 Huli 說明的超直白,總之是記住了。

那串數字就像是地址,電腦用數字在找網頁位置;網域是地標名稱,像是台北101、中正紀念堂,是人類好辨識的位置。

第五章講到駭客破解使用者密碼時,有一度很想把密碼全都換掉 ( 但想到目前的密碼都已經很難記得了,換成亂碼應該更崩潰 = = ),同時理解,沒有保存使用者密碼、網記密碼要重新發送的網站,才更安全。

另外,第二章的 command line 是對我最有幫助的章節,以前一直以為這是特別對應某個工具或軟體。這可能跟我對他最早的印象,是在下 gulp 指令、安裝東西 ( 像是webpack, gulp, vue ) 時有關。同時印象很深的是,每次執行都會有錯,而且只要使用這傢伙安裝新東西,都會搞超久,這些初始印象加在一起,讓 command line 成為一個令人畏懼的小東西。但Huli 從基本常用語法講起,搭配實力的練習,也漸漸理解她不過就是個跟電腦溝通的工具。

課程連結:初心者的計概與 Coding 火球術

課程章節概述

ch1

  • 用白話文及簡單的例子說明甚麼是”寫程式”、追本溯源的思考為什麼要寫程式、以及甚麼是程式語言,帶出”寫程式其實就等於解決問題 “ 的結論。
  • 用 ”在某一個串字當中找某一個單字” 作範例,先用容易理解的中文逐步拆解,再逐次轉換,變成可以拿來寫成程式碼的步驟,其中順便帶到變數、判斷式、迴圈、賦值等基礎概念 ( 單純的說明概念,連專有名詞都沒用到)

ch2

說明了什麼是 command line、示範許多基礎並常用的語法讓我們跟著練習。

command line 的維基翻譯是 “命令列介面”,就是一個看了還是不太理解的東西;簡單來說是個軟體,打開後是一片黑的視窗,可以使用他來跟電腦對話(下指令),可以想像電影裡,駭客用來輸入一串看不懂的指令的那個黑視窗,就是 command line。

在這堂課之前,我超級排斥也很害怕使用 command line,總覺得要是隨便輸入什麼錯誤的指令,可能會讓電腦爆炸 (非本科系的 3C 小白就是如此的 天真可愛 單純),但開始工作後,很多時候都需要用到他,甚至近期有個專案有點問題,修改時需要額外使用 command line 下很多指令,才有辦法看到修改後的結果。

聽了這短短幾堂課後,我對 command line 的莫名恐懼及抗拒就消失了,不過是個溝通工具嘛~

ch3

簡單說明甚麼是二進位(遇到2就變成1&0)、十進位(碰到十就變成1&0)、依此類推八進位、十六進位等。

介紹常見的電腦記憶體儲存單位、以及在電腦裡面,各種數字的儲存方式;例如負數儲存的方式,是所有位元翻轉再加1,及數字的溢位表示等概念,約莫是整系列最複雜的概念之一。

世界上有10種人,一種是懂二進位的,一種是不懂二進位的。

ch4

網路基礎概論,用超白化方式解釋從我們在搜尋列輸入 google.com 後,畫面顯示出 google 首頁的過程中,發生了那些事。

同時理解了 IP 是網路的地址,例如 台北市信義區信義路五段7號(電腦看的)、域名是好認得名稱,例如台北101 (人比較容易記得的),DNS 是網路Uber 司機,知道 ”台北市信義區信義路五段7號” 等於 “台北101”,同時延伸出內網、外網、翻牆等專有名詞是甚麼意思。

ch5

用便利商店店員被奧客霸佔,造成其他其他客人不能消費的例子,說明不同種的網路攻擊是怎麼回事。為什麼有些網站的忘記密碼機制,是要你另外設定新密碼,而不是傳原來的密碼回來。

還有之前老師也分享過,被人用特殊與法當作帳號註冊會員,進而攻擊資料庫的方式。

ch6

程式基礎概念與程式語言

延續第三章提到的二進位,說明電腦其實是使用機器語言,像這樣:0101101 (在打甚麼? );那麼多的程式語言,則是依據不同領域的需求,產生出來的,經由編譯 compile (類似翻譯年糕),轉成電腦可以讀懂的資訊。

同時簡單說明了破解版軟體的概念,就是把機器語言轉譯成人看得懂的程式語言,去除掉不想執行的程式碼,例如不做身分認證、不管輸入甚麼密碼都可以登入成功,再重新包好後拿來使用。

ch7

用用超簡單例子說明甚麼是演算法:解決問題的方法,針對要解決的問題,會有輸入+演算法(方法)+輸出。

例如:找出 ”某一段文字”當中的”某一個字” 就是要被解決的問題,輸入可能是”吃比瘦有福”,要找出的是”瘦”這個字,輸出是”第3個字”,演算法就會是:把這一串字跟”瘦”字逐一比對,比對到第三個時會吻合,於是輸出結果的這個過程。

ch8

給小朋友用來學程是邏輯的Scratch教學軟體,很像遊戲,可以做一段小動畫,以及控制動畫與使用者的互動。

ch9

給想做網頁的人

從網頁的畫面,簡單說明前端工程師、後端工程師分別需要做甚麼,同時再次提到主機、伺服器的觀念。

前端帶到HTML、CSS、JavaScript,主要跟畫面及使用者互動有關;後端則簡單說明了API、port,跟資料庫有關。

如果要更了解前端工程師要學甚麼,大推 零基礎的小明

給想做APP的人

這章節同時帶到 IDE ( 整合編輯器 ) 的開發環境觀念,提到And開發會使用 Java,

ch10

這個章節用2個實務例子,來模擬演算法的過程;比起從某一串字找其中一個字、或是數字排列組合,更能理解演算法在實務上的應用。

第一個是以 ” 抓取網頁標題 ” 當作題材,示範面對實務需求時,分析解決方式,從如何知道什麼是網頁標題、然後找到之後,實際獲得 ”網頁的標題” 這樣的資料;從整個解題過程中,如果是超級初學者,也會對程式語言是如何解決問題有更深的認識。

第二題是以 “判斷水仙花數” 為例說明解題的思路;這類的題型,就非常像我在CS in Java 裡,讓我無比崩潰的作業題型,

至於水仙花數究竟是甚麼意思,有興趣的可以去看看:維基 — 水仙花數

ch11

最後一章用超生活化的餐廳廚師出菜做例子,說明了變數、條件式、迴圈、函式的概念,是目前聽過最完整又容易理解的程式說明方法,我直接聯想到以前在連鎖美式餐廳的廚房出菜電子看板。

心得總結

這門課對於初踏入網頁領域的人簡直是一盞明燈,幾乎都用生活化的簡單例子在說明網頁世界的各種專有名詞。花幾周的時間上完,絕對收穫滿滿,是廣大網路世界中,目前看過對 ”零基礎” 的轉職工程師最友善的課程,沒有之一。

課程連結:初心者的計概與 Coding 火球術

--

--

8y Choice

前端工程師 | 求職 | 轉職 | 學習成長 | 超主觀論點