BHRC X Arthur
演算法 實力養成班
Course Price
NTD
$21,600
Course length
18 堂
課程內容
課程時間:共 16 + 2 堂(2022 年課程時間待定)
Lesson 1:Introduction to Algorithms
Lesson 2:Binary Search
Lesson 3:Recursion
Lesson 4:Hash Table & Set
Lesson 5:Two Pointer
Lesson 6:Stack & Queue
Lesson 7:Monotonic Stack & Sliding Window
Lesson 8:Linked List
- 期中測驗與面試練習 -
Lesson 9:Tree (BFS & DFS)
Lesson 10:Tree (BST)
Lesson 11:Priority Queue
Lesson 12:Backtracking
Lesson 13:Graph 1 (BFS & DFS)
Lesson 14:Graph 2 (Shortest Path & Union Find)
Lesson 15:Greedy
Lesson 16:Dynamic Programming
- 期末測驗與面試練習 -
為什麼學習演算法?
BHRC 長期致力於協助軟體工程師有更好的職涯發展。在我們 10 年的經驗裡,觀察到軟體工程師如果希望能尋求更大國際舞台、或是大型科技公司的工作機會,「演算法考試」常常是面試中很重要的一環,很多資深工程師都會用許多時間刷題準備,對很多非本科班出身工程師也是一大挑戰。
良好的演算法基礎,除了對準備面試有幫助,也可以讓工程師在開發時更具備敏感度,能第一時間發現可能的效能瓶頸並及早處理。或者在挑選不同工具時,能更準確的理解該工具的原理與適用情境,同時減少抽象滲漏的危險。因此幾乎可以說,演算法是軟體工程師職涯發展更上一層樓的重要基礎。
因此,BHRC 特別和講師 Arthur Lin 合作,花了半年的時間籌備,開發一套 16 堂 32 小時的演算法課程,我們和 Arthur 認識多年,看著他在專業路上一路成長,Arthur 畢業於台大物理系/物理所,非資工本科系畢業。畢業後自學資料結構與演算法,一開始也遭遇困難,後來持續嘗試學習與上課,終於融會貫通,幾年間從白紙一路進步到可以在 Leetcode 競賽上進入全球 1% 以內。工作上,也從歷任台灣知名新創公司,到通過重重關卡,拿到頂尖日本獨角獸的 Offer,前往日本發展,回國後在國內知名加速器擔任網頁後端的導師。Arthur 將他多年學習演算法的經歷,淬煉成這一門課,希望可以協其他人更高效率,更有樂趣地學會演算法。。
講師介紹
Instructor
Arthur Lin
- 專精後端與數據處理
- 歷任台灣知名新創公司
- 日本獨角獸公司資料工程師
- 現任台灣知名加速器網頁後端導師
關於這套課程的特色
瞭解學習的苦:
講師 Arthur 自學成為工程師,花了大量的時間精神掌握面試工作必備的演算法與資料結構知識,充分瞭解非本科生學習上的困難,希望協助大家度過辛苦的學習時光。
課程連貫,重要概念深入淺出:
整套課程都由 Arthur 獨立設計,不會因為是由不同講師授課,而影響連貫性。Arthur 依據工作與面試常見的演算法考題,每堂課設計不同難度的主題,講解每種演算法與資料結構的核心概念及其應用方式,並帶學員在課堂上做基礎練習。
小班制課程設計:
本課程為小班制,掌握每位學員的學習進度提供合適協助,確保每位想學的同學都可以學會。Arthur 有豐富經驗協助進度較慢的學生突破學習瓶頸,給進度較快的學生更多挑戰,客製化設計作業,課後如有疑問,也可以一對一諮詢幫助學員釐清卡關的地方。
課後練習:
除了觀念的學習之外,練習是非常重要的一個環節。Arthur 針對每堂課,從 Leetcode 與實際面試的考題中,精心整理出合適的練習題,分爲三種難度,初階題的目標是讓每位學員課後都能完成來加深印象,進階題則讓有更多時間的學員加強概念,挑戰題則是給能力較突出的學生,學習該觀念的各種經典複雜變化。
Arthur 課程設計理念專訪
Q: 請問 Arthur 怎麼會想開設這門課程?
開設這門課程,主要是希望能協助同樣曾經在演算法卡關的同伴。
基礎資料結構與演算法是資工系大學時的必修,但對像我這樣的轉職工程師來說,常常是缺少的重要一環。大多數 Junior 工作幾乎練習不到演算法知識,甚至會覺得不需要。但一跨到 Senior 時,卻常常是面試必考項目,工作也會開始用上這些技巧,此時才驚覺自己缺少這塊技能,這就是我曾經遭遇到的困難。
這堂課就是為了曾經的我,以及和我類似的人設計的,對於轉職的非本科軟體工程師,或有很好實作能力,希望職涯更往前走時,遭遇演算法挑戰的人,這是一堂很合適的課程。
Q: Arthur 當初是如何學習演算法的?
剛開始,我也是從線上課程開始,但每次報一堂課,聽了幾堂就很難繼續,一來因為下班後容易疲累,二來也缺乏成就感的回饋,意志力就很容易疲乏,後來因為想出國工作,有面試的實際壓力,只好逼自己暴力在 Leetcode 上邊刷題邊學習。後來發現直接刷題還滿有成就感的,每一題寫出來就很開心,寫不出來就看解答,看解答解出來也很開心,內在動力就培養出來,每一題都學到些片段。但這樣學的代價就是知識很零碎,得花更多的時間,靠著幾百題的累積,才能慢慢把知識點都連起來,而且中間會浪費很多時間,從各處學到華而不實的技巧,卻反而沒掌握最核心萬用的重點,而且久了那些奇技淫巧也記不起來,導致原地踏步。後來我還是有上了較有規劃的進階演算法課程,才確定自己確實掌握了核心的技巧。今天這堂課的設計,就是希望讓大家可以用最少的時間與痛苦,來走過上面這段過程。
Q: 一般學習演算法通常會遇到什麼問題?
一開始學習演算法,常常找不到方向,即便很努力看懂了討論區的答案,也只會覺得這想法太神了,自己怎麼可能想得到,結果就是下次遇到稍微變化的類似題依然不會寫,感到很挫折。但這其實都是因為抓不到該題目真正想考的核心概念,如果核心概念掌握住,就能一通百通。因此,最好的學習方法,是先理解現在要學習的概念是什麼,之後挑選適合自己程度的練習題印證所學,再挑戰稍微變化的相似題,確認概念細節都能確實掌握住,直到把核心概念理解通透成爲自己的東西,未來看到類似題就像直覺反射一樣,再也不會忘記。
Q: 如果遇到有學生學習卡住了,會怎麼辦?
主要會去尋找學生缺少的知識點,例如一個較難的題目可能同時需要三個概念,但學生只會一個,此時需要的就是先挑觀念更單純的題目讓學生練習去補足知識點,之後再回來看,才會事半功倍。如何挑選最合適的題目就是老師的價值了。曾經班級上有學生嚴重落後,在幫他客製化練習方法後,在班級結束時,他已經完全追上大多數人的進度。
Q: 這堂課最適合誰?
最適合會寫程式,想要學習或加強演算法的工程師,或是雖然自己刷題練習也能進步,但希望能有個有經驗的人帶,增加學習樂趣、提升學習效果、最有效率的運用下班時間學習演算法。如果你還是剛入行的 Junior 菜鳥工程師,這堂課可以讓你提早準備累積專業,快速與其他新人拉開實力差距。如果已經工作過一段時間,也適合幫助你突破面試需要的演算法門檻。
Q: 這堂課與其他線上線下教學資源最大的差異是什麼?
最大的差異是這堂課能根據學生的學習狀況,給予最合適的前進方式。一般學習有分舒適區、恐慌區與學習區,當教材太簡單就會停在舒適區,進步非常緩慢,但教材太難的時候就會進入恐慌區,學習痛苦指數會直線上升,此時只能靠意志力硬撐過去,但人的意志力是非常有限的稀缺資源,一旦有其他需要忙的事,就沒力氣再增加負擔了。而一般的新手較難區分教材的難易度,即便如 Coursera 或 Udacity 等知名平台上的好課,初學者也時常無法良好掌握,此時如果有教練能根據學生的狀況,給予適合程度的題目與題材做訓練,如此只需專心完成交辦的任務,就能持續保持在學習區裡面,用最快速度前進。
Q: 上完這堂課可以達到什麼水準?
上完這個課程後,如果有認真完成基礎與進階練習,以 LeetCode 的標準來說,Easy 題應該大多都能做,經典常見的 Medium 題也能理解解題方向,足以涵蓋大多公司會考的觀念。16 堂課裡,會反覆穿插核心概念與基礎練習,確保初學者都能掌握,同時也會帶部分較進階的概念,讓本來基礎較好的學員可以得到更多,而初學者則可以先聽過進階的概念,未來要挑戰時會加速非常多。課後則會提供各種不同難度的題目,有一些挑戰性很高的經典難題,讓更有餘裕的學員來掌握。
Q: 上這堂課,一個禮拜會需要練習多久時間?
每週會需要最少 4~6 小時的課後練習,更多當然成效更好,畢竟學習一個較為紮實的概念,必要的努力時間還是不可省的,但這堂課就是希望同樣要花時間與精力,可以花的最有效率、最有價值、也最有成就感,參加者本身真的有學習動機,成效才更能顯現,讓辛苦的價值最大化。
學員心得分享
Shelly
港商區塊鏈公司 後端工程師
以前寫 Leetcode 題目,常常不知道如何下手,因為當時完全沒有任何演算法的概念,於是連 sudo code 都不會寫,對很多其實要用某種演算法才能解的題目,完全連提筆都無法。Arthur 的課程帶我們循序漸進的從簡單的演算法開始,慢慢進入難的演算法,並搭配不同程度的 LeetCode 題目去增強我們的信心,讓我現在碰到 LeetCode 不會像以前那麼恐懼,甚至有些一看就知道背後是需要用到哪種演算法,收穫非常大!
演算法是前人幾百年知識的累積,如果沒有受過訓練,在寫 LeetCode 的當下要憑空靠自己的邏輯變出解法,是不可能的。且很多演算法,其實懂了之後,聽過之後,也發現並不是什麼高深的學問,但是得有人告訴我們第一次!於是,非常推薦這堂課,對於轉職,沒有任何理工科大學訓練,沒有聽過很多演算法的工程師,是非常大的幫助!