極客時間出品的《程式設計師的數學基礎課》由黃申所作,黃申是LinkedIn資深資料科學家。本專欄課程黃申將從程式設計的視角,結合自己十多年學術經驗和工業實踐,總結了一套適合程式設計師的數學學習方法和知識體系。希望通過“知識 – 應用 – 知識”的講解路線,為你貢獻一堂實用、精彩的數學課。
《程式設計師的數學基礎課》課程背景
數學基礎的好壞,會直接決定一個程式設計師的發展潛力。
往大了說,數學是一種思維模式,考驗的是一個人歸納、總結和抽象的能力。把這個能力放到程式設計師的世界裡,其實就是解決問題的能力。
往小了說,不管是資料結構與演算法,還是程式設計,很多底層原理和程式設計技巧都源自數學,比如你熟悉的分頁功能,用的其實是餘數的思想。所以很多大公司招人時,會優先考慮數學專業的畢業生。數學基礎好,學程式設計也更容易上手。
如果說程式語言是血肉,那數學的思想和知識就是靈魂。它可以幫你選擇合適的資料結構和演算法、提升系統效率,並且賦予機器智慧。尤其在大資料和智慧化的時代,更是如此。
因此,學數學絕不是死背那些艱深晦澀的定理和公式,洞悉技術本質,掌握知識規律,具備數學思維,擁有發現問題、分析問題、解決問題的能力,才是你的終極目標。
那程式設計師究竟該如何學習數學呢?在這個專欄裡將系統地為你講解。
《程式設計師的數學基礎課》講師介紹
黃申,LinkedIn 資深資料科學家,博士畢業於上海交通大學電腦科學與工程專業,師從俞勇教授。微軟學者,IBM ExtremeBlue 天才計劃成員。長期專注於大資料相關的搜尋、推薦、自然語言處理、廣告以及使用者精準化領域。
曾在微軟亞洲研究院、IBM 美國研究院、eBay 中國、1 號店和大潤發飛牛網擔任要職,帶隊完成了若干公司級的戰略專案。同時擔任《計算機工程》特邀審稿專家,著有 20 多篇國際論文並擁有 10 多項國際專利。
《程式設計師的數學基礎課》專欄模組
專欄用 51 節,四大模組,精講那些程式設計師真正用得上的數學知識。
基礎思想篇
梳理了程式設計中最常用的數學概念和思想,比如餘數、迭代、排列、組合,由淺入深精講資料結構與數學是如何你中有我,我中有你。幫你徹底掌握這些最基礎、最核心的數學知識,同時也能讓你明白,數學對程式設計和演算法究竟意味著什麼。
概率統計篇
以概率統計中最核心的貝葉斯公式為圓心,向上講解隨機變數、概率分佈這些基礎概念,向下講解樸素貝葉斯,並分析它們在生活和程式設計中的實際應用,在應用中反哺概念。讓你真正理解概率統計的本質,跨過概念和應用之間的鴻溝。
線性代數篇
從線性代數中最核心的概念向量、矩陣、線性方程入手,逐步深入分析,這些概念是如何與計算機互幫互助,融會貫通,解決實際問題的。比如,線性代數究竟是在講什麼?怎樣讓計算機理解現實世界?如何過濾冗餘的新聞?從概念到應用,再到本質,讓你不再害怕新技術中的“舊知識”。
綜合實戰篇
將通過快取系統、搜尋引擎、推薦系統中的實際應用,串講前面講到的數學知識和概念,幫你加深對知識的理解,學會用數學思維來分析問題和解決問題,讓數學思維成為你的一種基礎能力。
《程式設計師的數學基礎課》課程表
程式設計師應該怎麼學數學?
01二進位制:不瞭解計算機的源頭,你學什麼程式設計
02餘數:原來取餘操作本身就是個雜湊函式
03迭代法:不用程式語言的自帶函式,你會如何計算平方根?
04數學歸納法:如何用數學歸納提升程式碼的執行效率?
05遞迴(上):泛化數學歸納,如何將複雜問題簡單化?
06遞迴(下):分而治之,從歸併排序到MapReduce
07排列:如何讓計算機學會“田忌賽馬”?
08組合:如何讓計算機安排世界盃的賽程?
09動態規劃(上):如何實現基於編輯距離的查詢推薦?
10動態規劃(下):如何求得狀態轉移方程並進行程式設計實現?
11樹的深度優先遍歷(上):如何才能高效率地查字典?
12樹的深度優先遍歷(下):如何才能高效率地查字典?
13樹的廣度優先遍歷(上):人際關係的六度理論是真的嗎?
14樹的廣度優先遍歷(下):為什麼雙向廣度優先搜尋的效率更高?
15從樹到圖:如何讓計算機學會看地圖?
16時間和空間複雜度(上):優化效能是否只是“紙上談兵”?
17時間和空間複雜度(下):如何使用六個法則進行復雜度分析?
18總結課:資料結構、程式設計語句和基礎演算法體現了哪些數學思想?
19概率和統計:程式設計為什麼需要概率和統計?
20概率基礎(上):一篇文章幫你理解隨機變數、概率分佈和期望值
21概率基礎(下):一篇文章幫你理解常用概率公式
22樸素貝葉斯:如何讓計算機學會分類?
23文字分類:如何區分特定型別的新聞?
24語言模型:如何使用鏈式法則和馬爾科夫假設簡化概率模型?
25馬爾科夫鏈:從PageRank到語音識別,背後是什麼模型在支撐?
26資訊熵:如何通過幾個問題,測出你對應的武俠人物?
27決策樹:資訊增益、資訊比率和基尼指數的運用
28熵、資訊增益和卡方:如何通過資訊學尋找關鍵特徵?
29歸一化和標準化:各科成績如何綜合才是最合理的?
30統計意義(上):!《何判斷你的A/B測試結果是不是巧合?
31統計意義(下):如何判斷你的A/B測試結果是不是巧合?
32概率統計篇答疑和總結:為什麼會有欠擬合和過擬合?
33線性代數:線性代數到底是在講什麼?
34向量空間模型:如何讓計算機理解現實事物之間的關係?
35文字檢索:怎樣讓計算機理解自然語言?
36文字聚類:如何過濾冗餘的新聞?
37矩陣(上):如何使用矩陣操作進行PageRank計算?
38矩陣(下):如何使用矩陣操作進行協同過濾推薦?
39線性迴歸(上):如何使用高斯消元法求解線性方程組?
40線性迴歸(中):如何使用最小二乘法進行直線擬合?
41線性迴歸(下):如何使用最小二乘法進行效果驗證?
42PCA主成分分析(上):如何利用協方差矩陣來降維?
43PCA主成分分析(下):為什麼要計算特徵值和特徵向量?
44奇異值分解:如何挖掘潛在的語義關係?
45線性代數篇答疑和總結:矩陣乘法的幾何意義是什麼?
46快取系統:如何通過雜湊表和佇列實現高效訪問?
47搜尋引擎(上):如何打造一個簡單的搜尋引擎?
48搜尋引擎(下):如何通過分類查詢,讓你的搜尋結果更相關?
49推薦系統(上):如何實現基於相似度的協同過濾?
50推薦系統(下):如何通過SVD分析使用者和物品的矩陣?
51綜合應用篇答疑和總結:如何進行個性化使用者畫像的設計?
訂閱價格:
為回報猿人學的粉絲,所有通過我分享的二維碼購買的使用者,請加我微訊號:dismissmewp,備註:返現。
享受完其它優惠後,我再給大家立即返¥12元現金。
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***