Sitemap

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

9 min readDec 22, 2022

--

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

這堂課我是在 Coursera 的 Computer 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 ,就跟用不太熟悉的語言再去學另一個語言,讓寶寶心好累。

Press enter or click to view image in full size
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 下很多指令,才有辦法看到修改後的結果。

Get Jamie Choice’s stories in your inbox

Join Medium for free to get updates from this writer.

聽了這短短幾堂課後,我對 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 火球術

--

--

Jamie Choice
Jamie Choice

Written by Jamie Choice

UIUX | 前端工程師 | 轉職 | 學習成長