用 Scala 做函數式程式設計專業課程

探索如何編寫可在首次執行時就有用的精美程式碼。該專業課對普遍使用的程式語言 Scala 進行提供函數式程式設計的實用介紹。它從函數正規化的基本建構區塊開始,在將這些概念組合起來架構出更大的函數式語言程式前,先展示了如何使用這些區塊來解決小問題。

你將看到函數正規化如何促進平行和分散式程式設計,並通過一系列動手操作範例和程式設計習題,學習如何分析從小到大的資料集。從多核體架構上的平行程式設計,到使用 Apache Spark 在叢集上的分散式程式設計。 最後的總整專案將使你能夠通過使用實際資料建構大型資料密集型應用程式而學到的技能。

你將學習的內容:

  • 使用遞迴、模式匹配和高階函數編寫純函數程式
  • 設計不可變的資料結構
  • 編寫有效使用平行集合( parallel collections )的程式達到高效能運作
  • 使用 Spark 和 Scala 處理資料

你將獲得的技能:

  • Scala 程式設計
  • 平行計算
  • Apache Spark
  • 函數式程式設計

報名參加課程

字幕

英文

製作方  

洛桑聯邦理工學院

洛桑聯邦理工學院(EPFL)(法語:École polytechnique fédérale de Lausanne,縮寫EPFL),是一所世界頂尖的理工院校,最早成立於1853年,後在於1969年從洛桑大學獨立。學校位於瑞士的法語區,與位於德語區的蘇黎世聯邦理工學院是姐妹校,也是瑞士僅有的兩所聯邦理工學院,直接由瑞士聯邦政府管理。2016在校生約10500名(大學生、碩士生、博士生以及博士後研究員),其中有一半的學生來自其他國家。340多名教授和5800多名教職員工分佈於建築設計系,基礎科學系,工程系,計算機與通訊科學系,生命科學系,管理系,人文系,7個系內。在教學與研究之外,洛桑聯邦理工學院還負責操作核反應爐CROCUS,一個託卡馬克聚變反應爐(Tokamak Fusion reactor),一臺Blue Gene/Q超級計算機以及P3 bio-hazard設施等。學校以其師生比例,國際視野以及科研影響力而聞名。學校一系列高水平研究專案更加推動了學校作為一個研究型大學的聲譽。其中最值得一提的是2013年的藍腦計畫(Blue Brain Project),學校從歐盟獲得了5億歐元的經費。建校宗旨:培養工程師和科學家、成為國家的科學與科技中心、並促進產學合作 ( 資訊來自維基百科 )

第 1 門課程  Scala 函數式程式設計原理

函數式程式設計在業界變得越來越普遍。這種趨勢是因為 Scala 已被採用為許多應用程式的主要程式語言。 Scala 在實用的軟體套件中融合了函數式和物件導向的程式設計。它可以與 Java 和 Javascript 無縫地互操作。

Scala 是許多重要框架的實現語言,包括 Apache Spark、Kafka 和 Akka。 它為 Twitter、Tumblr 和 Coursera 等網站提供了核心基礎結構。在本課程中,你將發現函數式程式設計風格的要素,並學習如何在日常程式設計中有效地應用它們。你還將通過瞭解不變量的證明和象徵性地執行追蹤,為函數式程式推理程式奠定堅實的基礎。

課程很實用;大多數單元都會介紹一些簡短的程式,這些程式可作為重要概念的例證,並邀請你親自實驗,修改和改進它們。本課程還輔以一系列程式設計專案作為家庭作業。

推薦背景:你應具有至少一年的程式設計經驗。精通 Java 或 C#是理想的選擇,但具有其他語言(如 C / C ++,Python,Javascript 或 Ruby)的經驗也足夠。你應該對命令行有所瞭解。

更多


第 2 門課程 Scala 的函數式程式設計

在本課程中,你將學習如何在大型應用程式的設計中應用函數式語言程式設計風格。你將瞭解重要的新函數式程式設計概念,從懶惰評估( lazy evaluation )到使用 monad 結構化你的程式庫。我們將研究更大、更複雜的範例,從狀態空間探索( state space exploration )到隨機測試( random testing )再到離散的電路模擬器( discrete circuit simulators )。你還將學習一些有關如何在現實世界編寫良好的 Scala 程式碼的最佳做法。

本課程的幾個部分處理函數式程式設計如何與可變狀態( mutable state )互動的問題。我們將探索函數與狀態相結合的結果。我們還將研究使用無限資料結構或函數反應式程式設計的可變狀態的純函數的替代方案。

學習成果 – 在本課程結束時,你將能夠:

  • 認識並應用函數式程式的設計原則
  • 設計函數式程式庫及其API
  • 在一個程式中游刃有餘地結合函數( functions )和狀態( state )  
  • 了解結合函數和狀態的推理技術
  • 編寫簡單的函數反應式應用程式。

推薦背景:你應具有至少一年的程式設計經驗。精通 Java 或 C#是理想的選擇,但具有其他語言(如 C / C ++,Python,Javascript 或 Ruby)的經驗也足夠。你應該對命令行有所瞭解。 本課程是假設你已有前一課程的基礎。

更多


第 3 門課程  平行程式設計

隨著每台智慧手機和電腦現在都擁有多個處理器,運用函數式的想法來促進平行程式設計變得越來越普遍。在本課程中,你將從任務平行到資料平行的平行程式設計基礎。特別是,你將看到從函數式語言程式設計中有多少個熟悉的想法可以完美地對映到資料平行範例。我們將詳細介紹如何有效地平行化熟悉的集合操作( collections operations ),並且將建立平行集合,這是 Scala 標準程式庫中提供的可用於生產的資料平行集合程式庫( library )。

於整個課程中,我們將通過幾個動手操作一些可以分析現實世界的資料(k-means 叢集之類的流行演算法 )的範例來應用這些概念。

學習成果 – 到本課程結束時,你將能夠:

  • 對於任務和資料平行程式的推理
  • 以函數式表達通用演算法並平行地解決它們
  • 熟練地使用微基準( microbenchmark )平行程式碼
  • 寫出有效地使用平行集合的程式以達到好表現

推薦背景:你應具有至少一年的程式設計經驗。精通 Java 或 C#是理想的選擇,但具有其他語言(如 C / C ++,Python,Javascript 或 Ruby)的經驗也足夠。你應該對命令行有所瞭解。 本課程是假設你已有前一課程的基礎。

更多


第 4 門課程  使用 Scala 和 Spark 進行大數據分析

使用函數概念來操縱分佈在叢集上的大數據在業界十分普遍,並且可以說是最早在業界廣泛使用的一種函數的想法。 MapReduce 和 Hadoop 以及最近發佈的 Apache Spark(一種用 Scala 編寫的快速的記憶體中分散式集合框架)的流行證明了這一點。在本課程中,我們將瞭解如何從頭到尾使用 Spark 將資料平行範例擴充到分散式案例。我們將詳細介紹 Spark 的程式設計模型,並仔細瞭解它與熟悉的程式設計模型(例如共享記憶體平行集合或按順序的 Scala 集合)之間其本質特性與應用時機的區別。通過 Spark 和 Scala 中的動手範例,我們將學習何時應考慮與分發有關的重要問題,例如延遲和網路通訊,以及如何有效解決這些問題以提高效能。

學習成果 – 在完成本課程時,你將能夠:

  • 從永續性儲存中讀取資料並將其載入到 Apache Spark 中
  • 使用 Spark 和 Scala 處理資料
  • 以函數式風格表達用於資料分析的演算法
  • 認知如何避免洗牌並在 Spark 中進行重新計算

推薦背景:你應具有至少一年的程式設計經驗。精通 Java 或 C#是理想的選擇,但具有其他語言(如 C / C ++、Python、Javascript 或 Ruby)的經驗也足夠。你應該對命令行有所瞭解。 本課程是假設你已有前一課程的基礎。

更多


第 5 門課程  Scala 總整課程的函數式程式設計

在最後的總整專案中,你將通過使用實際資料建構大型資料密集型應用程式學到技能。你將實現一個完整的應用程式,處理幾個千兆位元組的資料。該應用程式將顯示世界各地溫度隨時間變化的互動式視覺化。這種應用程式的開發將涉及:

  • 將氣象站提供的資料轉換為有意義的資訊,例如最近十年中全球每個點的平均溫度;
  • 然後,使用空間和線性推估( spatial and linear interpolation )技術由資訊資料製作出影像;
  • 最後,實現使用者介面如何響應使用者的操作。

更多


到官方網站了解本課程與上課

Sponsored by Coursera

你可能會有興趣

 歡迎使用 App / Email | Telegram 訂閱 網站更新

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: