為什麼我們要開設此課程?

傳統電腦專業課程著重解釋作業系統與機器學習等專業知識,而培養基本電腦素養這個重要課題卻常常需要學生自行探索。

這些年,我們在MIT參與教授了許多課程,並且逐漸意識到許多學生對他們可使用的工具知之甚少。 電腦善於執行自動化任務,但學生們常常自己親自做重複性任務,或者沒有完全發揮出版本控制,文字編輯器等工具的強大能力。 好一些的情況下,他們只是效率降低並浪費了時間;更糟糕的情況是,這導致了資料損失或使學生無法完成指定任務。

這些論題在大學內不會傳授:學生始終不知道如何使用他們,或者至少不知道如何高效地使用他們。 這浪費了時間,也 本可以 使用更輕鬆的方式完成任務。 標準的電腦科學課程缺少了顯著減輕學生壓力的這門課程。

The missing semester of your CS education

為了解決這個問題,我們執教了這門課程,涵蓋了所有我們認為對成為高效電腦科學家或者程式設計師而言重要的主題。 該課程將十分實用,為你提供對於工和相關技術的詳細講解,使您可以立即在多種情況下使用這些東西。 此課程在 2020 年 1 月的 MIT “Independent Activities Period” 內舉行,這是為期一個月的短學期,主要由學生開設。 講座本身只適用於 MIT 學生,但是我們會公開所有講座材料和課程回放。

如果看起來這門課很適合你,以下是一些教學內容的具體示例:

命令列

如何使用別名、手稿語言與如何建立系統。 不要再「依次執行這 15 個指令」,不要再「你忘記執行這個了」,不要再「你忘記鍵入引數了」。

例如,快速搜尋歷史記錄可以節約你大量的時間。下面這個示例展示了利用 convert 來在shell中跳轉的幾個小技巧。

版本控制

如何 正確地 使用版本控制,利用它從災難中挽回損失,與他人合作,與快速找到導致問題的部分。 不要再 rm -rf; git clone,不要再製造合併衝突(呃,至少要少製造一點),不要再大量註釋程式碼,也不要再「靠北,我們是不是把有用的部分刪掉了」。 我們甚至會教授你如何通過 pull request 來向他人的專案做貢獻。

在這個示例中,我們使用 git bisect來尋找哪個提交未通過單元測試,並透過 git revert 進行改正。

文字編輯

如何在近端與遠端使用命令列高效編輯檔案,並使用編輯器的進階功能。 不要再來回拉取與複製檔案,也不要再重複編輯檔案。

Vim的巨集功能是它最好的功能之一,在下面這個示例中,我們使用 Vim 內嵌的巨集功能來快速講html表格轉換成了csv格式。

遠端電腦

在使用 SSH key 與終端多路復用操作遠端電腦時如何保持清醒。 不要再為了同時執行兩個指令開啟多個終端,也不要在每次連線時鍵入密碼,更不要因為網路斷開或者重啟手提時丟失所有資料。

在下面的示例中我們利用 tmux 使得會話在遠端伺服器保持活躍,並透過 mosh 使其支援網路漫遊與斷開連線。

尋找檔案

如何快速尋找你需要的檔案,而非逐個開啟所有檔案直至找到你需要的程式碼。

在下面的示例中我們利用 fd 快速搜尋檔案,並透過 rg 找到程式碼片段。我們也用到了 fasd 來迅速 cdvim 最近/常用的檔案/檔案夾。

資料處理

如何快速且易用地在命令列中對資料與檔案進行編輯,檢視,分詞,繪圖與計算。 不再從日誌中複製,不再手動統計資料,不再使用表格繪圖。

虛擬機器

如何使用虛擬機器嘗試全新作業系統,分隔不相關的專案,保持主系統整潔,不再因為進行安全性實驗導致電腦受損,且不再隨意安裝不同版本的軟件套件。

安全性

如何在不暴露隱私的情況下使用網路,不再為思考符合自己詭異規則的密碼煩惱,不再連線不安全的WiFi,不再傳送未加密訊息。

結語

這 12 節課會包含以上或者更多的內容,同時每課都提供了能幫你熟練使用這些工具的試驗。 如果你已經等不及到一月,也可以先瀏覽Hacker Tools上面的課程,這是我們去年所教授的, 也是此課程的前身,含有許多相同的主題。

希望能在一月與你相見,無論是線上還是親臨現場!

Happy hacking,
Anish, Jose, and Jon


Edit this page.

Licensed under CC BY-NC-SA.