RePublic of CS
  • INFO
    • ❔What is RePublic of CS?
    • 🗺️RCS Open Course
    • 🏛️RCS Classroom
    • 👩‍🌾RCS Forum (soon)
    • 🌟RCS Mentors
    • 🙋如何參與學習?
      • ⏳RCS.101 x Miters (24 Q2)
  • ⚒️RCS.101
    • § DSA In Action
    • RCS.101.a
    • RCS.101.b
    • RCS.101.c
    • RCS.101.d
    • ¶ Graduation
      • Apx: BFS/Shortest Path
      • Apx: Classic Applications
      • Apx: Techniques & Tricks
      • Apx: Morris Traversal
      • Apx: RCS.101 x Miters W6
      • Apx: In-place Merge Sort
  • 📚RCS.102
    • § Algorithm Design & Analysis
    • ⌛ Divide & Conquer
    • ⌛ Recursion
  • 🧵RCS.103
    • § SYS/PARL Programming
  • 🦀RCS.201
    • § Rust
  • 🧱RCS.301
    • § Software Architecture
  • 🏰RCS.302
    • § Web System Design
  • 📣MEDIA
    • YouTube
    • Twitch
    • Threads
    • Discord Forum
    • Become an Editor
    • Resources
  • 📜Articles
    • System Design, Actually
Powered by GitBook
  1. RCS.101

§ DSA In Action

PreviousRCS.101 x Miters (24 Q2)NextRCS.101.a

Last updated 1 year ago

RCS.101 Offerings

RCS.101 是一份旨在培養軟體工程師對 「資料結構」 與 「演算法」 實作精熟程度的 Roadmap。

在 RCS.101 的四個模組中,RePublic of CS 編排了一系列在系統開發、學習 Standard Library 必不可少的的經典資料結構知識,搭配常見的 Online Judge,來鍛鍊實作能力。


RCS.101 並不包含 / Out of Scope

因此,RCS.101 有以下的特色:

  1. 預期參與者已經掌握基礎的 DSA 理論知識,如時間複雜度、空間複雜度;RCS.101 比起演算法課程,更偏重提供由淺入深的 Lab。

  2. 作為 System Programming (RCS.201 RCS.103) 相關主題的入門,此 Roadmap 的主題的編排次序並不是依照難度,而是他在系統開發上的相對重要性。

  3. 許多在解題、證明、問題分析上經典的知識,如 Dynamic Programming、Divide and Conquer、2 Pointers,是此 Roadmap 不會涵蓋的。而預期未來將它收錄在 RCS.102 上。

簡而言之,RCS.101 與 刷題培訓、演算法面試、LeetCode Grinding ... 這些常見的 DSA 學習場景,是有相當大區別的。RCS.101 的核心精神是想讓軟體工程師能從 DSA = 演算法面試 的困擾中跳脫,真正達到:

  1. 讀懂 DSA 的第一手資料

  2. 能夠自己設計測試資料,對應的去 benchmark 效能

  3. 從 DSA internals 來學習,成為 system、infrastructure hacker


RCS.101 參與須知 / Notice

採用較接近系統層的語言,是因為在開發過程中,Benchmark CPU/Memory 的用量都會較可控且容易。 許多經典的資料結構實作,也都是在系統層得到他的最大發揮。

  • 一起完整參與完 RCS.101 完整 Classroom 的夥伴,可以獲得 @rcs.101 🏅 的身份組。

由於 RCS.101 和 lab 的同質性,我們期待參與者:

  1. 在寫 「練習題」 時,極力避免去看 「任何形式的解答」 (如 Solutions/Hints/題解影片)。

  2. 因為 RCS.101 的學習目標是想將實作內化,而看解答很高機率會阻礙認知的培養。

  3. 務必實作完所有的 Lab,才能視為完成了該主題。

  4. 在練習實作時,使用 「本地編輯器開發」 和 「用單元測試描述測資」 來進行開發 (而非採用 online editor)。

    • 這是基於 RCS.101 希望能以此銜接 RCS.103 在開發與偵錯時的實體環境。

  5. 在解題時,Write Out Loud、White-boarding、Dry Run,儘管在 RCS.102 才會比較要求。但我們也鼓勵參與者用這些方式來讓自己更熟悉腦內構思的流程。

RCS.101 相較於其他屬性各異的教材 (Ex. 或 ),聚焦在 「理解」 和 「充分熟悉」 經典的 DSA 實作。

由於此 Roadmap 與 System Programming 預期帶來的銜接,我們會主要推薦參與者使用 Rust、C++、Go,或任何一門非 的程式語言來進行學習。

想與社群一起參與學習這份 Roadmap 的人,請去 RePublic of CS ,領取 @rcs.101 ⌛ 的身份組。

Introduction to Algorithms
九章算法
Just-in-time Compilation
Discord
⚒️
Page cover image