5 คะแนน โดย GN⁺ 2023-12-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Nand2Tetris มอบสื่อการเรียนสำหรับผู้ที่ต้องการทำความเข้าใจระบบคอมพิวเตอร์ตั้งแต่พื้นฐาน โดยให้สร้าง ระบบคอมพิวเตอร์เอนกประสงค์ และเลเยอร์ซอฟต์แวร์สมัยใหม่ด้วยตนเอง
  • รวมบทเรียน เอกสารโปรเจกต์ และเครื่องมือไว้ในที่เดียว และสามารถใช้งานแบบโอเพนซอร์สได้ฟรีใน สภาพแวดล้อมที่ไม่แสวงหากำไร
  • หลักสูตรนี้ถูกใช้ใน มหาวิทยาลัย·โรงเรียนมัธยม·บูตแคมป์ มากกว่า 400 แห่ง โดยมีผู้เรียนตั้งแต่นักเรียนมัธยม นักศึกษาปริญญาเอก ไปจนถึงวิศวกรอาวุโส
  • ผู้เรียนด้วยตนเองสามารถเรียนตาม lecture notes และส่วน Projects บนเว็บไซต์ได้ ส่วนบน Coursera มีการเรียนแบบเสียค่าใช้จ่ายและออกใบรับรองอย่างเป็นทางการได้
  • โครงสร้างเนื้อหามุ่งทั้งการเรียนรู้ส่วนบุคคลและการสอนในสถาบันการศึกษา โดยผู้สอนสามารถติดต่อแยกต่างหากเพื่อรับเอกสารเพิ่มเติมได้

สื่อการเรียนสำหรับสร้างคอมพิวเตอร์ตั้งแต่พื้นฐาน

  • เว็บไซต์ทางการ Nand to Tetris courses รวบรวมและมอบสื่อที่จำเป็นสำหรับการสร้าง ระบบคอมพิวเตอร์เอนกประสงค์ และเลเยอร์ซอฟต์แวร์สมัยใหม่ตั้งแต่เริ่มต้น
  • สื่อประกอบด้วยบทเรียน เอกสารโปรเจกต์ และเครื่องมือ โดยมุ่งเป้าไปที่ นักเรียน·ผู้สอน·ผู้เรียนด้วยตนเอง
  • หนังสือที่เกี่ยวข้องคือ The Elements of Computing Systems โดย Noam Nisan และ Shimon Schocken
  • เอกสาร CACM ที่เกี่ยวข้องกับหลักสูตรมีให้ในรูปแบบ ข้อความ และ วิดีโอ

เส้นทางการเรียนและการใช้งานในภาคการศึกษา

  • หลักสูตร Nand to Tetris ถูกสอนในมหาวิทยาลัย โรงเรียนมัธยม และบูตแคมป์ มากกว่า 400 แห่ง
    • ผู้เรียนครอบคลุมตั้งแต่นักเรียนมัธยม นักศึกษาปริญญาเอก ไปจนถึงวิศวกรอาวุโส
    • สามารถดู ประมวลรายวิชาแบบขยาย ของหลักสูตรเวอร์ชันวิชาการทั่วไปได้
  • การเรียนแบบอิสระสามารถทำได้โดยเรียนตาม lecture notes และส่วน Projects บนเว็บไซต์
  • หลักสูตรบน Coursera เป็นแบบ เสียค่าใช้จ่าย และมีใบรับรองอย่างเป็นทางการ
  • เอกสารเพิ่มเติมสำหรับผู้สอนสามารถขอรับได้โดยติดต่อ nand2tetris@gmail.com

1 ความคิดเห็น

 
GN⁺ 2023-12-23
ความเห็นจาก Hacker News
  • ตอนลองครั้งแรกหลังเรียนจบมหาวิทยาลัยเมื่อ 7 ปีก่อน ทำได้แค่ถึงบท 2 แต่ก็รู้สึกคุ้มค่ามาก ก่อนจะหยุดไปเพราะโปรเจกต์ข้างอื่น
    เมื่อ 3 เดือนก่อนกลับมาเริ่มใหม่ ตอนนี้มาถึงบท 8 แล้ว ทำ ลอจิกเกต, ALU, CPU, แอสเซมเบลอร์ และครึ่งหนึ่งของ virtual machine เสร็จไปแล้ว ซึ่งทุกบทจะมีช่วงที่คิดว่า “สิ่งนี้มันทำงานยังไงกันแน่?” แต่พอมันทำงานได้จริงก็สะใจมาก
    ในฐานะโปรเจกต์ข้างเพื่อการเรียนรู้ล้วน ๆ นี่คือสิ่งที่ให้ความคุ้มค่ามากที่สุดที่เคยทำมา และก็ค่อนข้างภูมิใจกับตัวเองที่ยังทำต่อจนถึงตอนนี้ แนะนำอย่างมาก

    • ฉันก็เคยทำเหมือนกัน และใช้เวลา สามรอบ กว่าจะจบทั้งหมด
      ช่วงฤดูใบไม้ร่วง/ฤดูหนาวปีที่แล้วก็ทำคู่ไปกับซีรีส์ยอดเยี่ยมของ Ben Eater ที่สร้าง คอมพิวเตอร์ 8 บิต บน breadboard และใช้เวลาหลายเดือนซื้อชิ้นส่วนจากจีน ค่อย ๆ สร้างซับซิสเต็มไปตลอดหน้าหนาวตามของที่ทยอยมาถึง
      แนะนำให้ลองอันนั้นต่อเป็นลำดับถัดไป ได้ความคุ้มค่ามากเหมือนกัน และภาพไฟ LED กระพริบพร้อมกับเข้าใจว่าสิ่งที่เกิดขึ้นภายในคืออะไรนั้นเจ๋งมากจริง ๆ
    • พอได้เห็นกระบวนการแบบนี้ รวมถึงหนังสืออย่าง Code ก็ยิ่งทำให้รู้สึก เคารพอย่างลึกซึ้ง ต่อคนที่ค้นพบสิ่งเหล่านี้เป็นครั้งแรก
    • อยากรู้ว่าคนอื่นไปเรียน ความรู้ด้านฟิสิกส์ของแข็ง ที่จำเป็นต่อการเข้าใจพื้นหลังในสองบทแรกอย่างถ่องแท้จากที่ไหน
      เช่นกลไกจริง ๆ ที่ทำให้วงจรรวมเปลี่ยนอินพุตเป็นเอาต์พุตที่มีประโยชน์ เพราะแม้แต่วงจรรวมที่ง่ายที่สุดในโลกจริงอย่าง TI SN7400 ก็ยังหาแหล่งข้อมูลที่อธิบายการทำงานจริง ๆ ได้ดีพอไม่เจอ
    • ฉันทำโปรเจกต์ทั้งหมดนี้เป็นส่วนหนึ่งของวิชาเรียน และมันเป็นหนึ่งใน วิชาที่ดีที่สุด ที่เคยเรียนในหลักสูตรวิทยาการคอมพิวเตอร์ ยอดเยี่ยมมากจริง ๆ
  • ฉันชอบคอร์สนี้มาก และแนะนำอย่างยิ่งสำหรับคนที่ทำงานกับคอมพิวเตอร์แต่ไม่เคยเรียนวิชาคอมพิวเตอร์ศาสตร์ระดับล่าง
    มันช่วยให้เข้าใจอย่างเป็นธรรมชาติว่าคอมพิวเตอร์ทำงานอย่างไรในส่วนสำคัญที่ส่งผลต่อโปรแกรมระดับสูงและภาษาโปรแกรม และสำหรับฉันจุดที่ได้เห็นภาพชัดที่สุดคือการเข้าใจ ความต่างระหว่าง stack กับ heap อย่างแท้จริง
    การได้เห็นว่าวงจรง่าย ๆ ถูกต่อยอดซ้อนกันขึ้นไปจนกลายเป็นเครื่องจักรซับซ้อนที่เราใช้อยู่ทุกวันนั้นให้ความรู้สึกเหมือนเวทมนตร์ และผู้สอนก็ทำให้จับแก่นของหัวข้ออย่างภาษาแอสเซมบลีได้อย่างรวดเร็วโดยไม่ทำให้เนื้อหาที่จริง ๆ อาจกินเวลาหลายภาคการศึกษาถูกลดทอนเกินไป
    ถ้ามีเวลาแนะนำมากจริง ๆ โดยภาค 1 ตั้งแต่ NAND gate ไปจนถึงการสร้าง CPU นั้นสนุกและค่อนข้างง่าย แต่ภาค 2 ที่พาจากคอมพิวเตอร์ไปสู่ระบบปฏิบัติการเต็มรูปแบบนั้นงานเยอะกว่ามาก

    • สงสัยว่าคอร์สออนไลน์กับหนังสือเป็น เนื้อหาเดียวกัน หรือเปล่า
      กำลังพยายามตัดสินใจว่าต้องใช้ทั้งสองอย่างหรืออย่างใดอย่างหนึ่งก็พอ
  • ขอแนะนำ คอร์ส/หนังสือ นี้อย่างมาก
    ถ้าทำจนจบจะรู้สึกคุ้มค่ามาก

  • หลังจากทำซีรีส์คอมพิวเตอร์ 8 บิตอันยอดเยี่ยมของ Ben Eater (https://eater.net/8bit/) จบแล้ว การต่อมาที่ nand2tetris เป็นเส้นทางที่เป็นธรรมชาติมาก
    มันช่วยให้เข้าใจแนวคิดพื้นฐานของการออกแบบคอมพิวเตอร์ที่มักถูกอธิบายแบบผ่าน ๆ ได้อย่างแท้จริง และเป็นโปรเจกต์ที่เหมาะมากสำหรับเริ่มทำในช่วงวันหยุดยาว

    • เห็นด้วยกับคำแนะนำ Ben Eater
      ฉันชอบวิดีโอของเขา โดยเฉพาะตอนแนะนำ ลูป และตอนแนะนำ interrupt
      การได้เห็นโค้ดที่เขาเขียนถูกนำมาเขียนใหม่อย่างสวยงามขึ้นมากด้วยแนวคิดเหล่านี้เป็นอะไรที่น่าพอใจมาก
    • เมื่อหน้าร้อนที่แล้วฉันลองทำ คอมพิวเตอร์ 6502 ของ Ben Eater และก็แนะนำได้เหมือนกัน
      ตอนนี้คงต้องไปดู NAND to Tetris บ้างแล้ว
    • ตอนอยู่ที่ Recurse ฉันทำ nand2tetris และช่วงนั้นก็ดู Ben Eater เยอะมาก
      สองอย่างนี้เข้ากันได้ดีมาก
  • มีเกม NAND สนุก ๆ ที่ได้แรงบันดาลใจจากคอร์สนี้: https://nandgame.com/

    • ยังมีอีกอันที่สนุกกว่าและได้รีวิวใน Steam เป็น overwhelmingly positive: https://store.steampowered.com/app/1444480/Turing_Complete/
    • ต่างออกไปนิดหน่อย แต่ก็แนะนำ TIS-100 กับ Shenzhen IO ด้วย
      ทั้งคู่เป็นสไตล์เขียนด้วยภาษาคล้ายแอสเซมบลีและสนุกมากในเชิงการเรียนรู้
  • ถ้ากำลังพยายามเข้าใจคอมพิวเตอร์ในระดับที่ลึกลงไปอีก ขอแนะนำคอร์ส Digital Design and Computer Architecture ของ ETH Zürich ด้วย
    https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-EImKxYYY1...

    • อันนี้คือขุมทรัพย์จริง ๆ
      ฉันเคยเรียนวิชาแนะนำสถาปัตยกรรมคอมพิวเตอร์มา แต่เสียดายที่ไปได้ไม่ไกลนัก และไม่ได้แตะเรื่องมหัศจรรย์อย่าง out-of-order execution ที่ CPU สมัยใหม่ทำเลย
      เพลย์ลิสต์นี้น่าจะกลายเป็นหัวข้อประจำวันหยุดครั้งนี้ของฉัน
  • ฉันมีทั้งความทรงจำดี ๆ กับหนังสือเล่มนี้ และกับช่วงเวลาที่ได้หยิบมันขึ้นมาอ่าน
    ตอนนั่งดื่มกาแฟกับแฟน ฉันบอกเธอว่าเพิ่งอ่านมาว่าสามารถสร้าง ลอจิกเกต ทุกชนิดได้ด้วย NAND อย่างเดียว เธอเลยเกิดความสงสัย แล้วเราก็ช่วยกันเขียน NAND ลงบนกระดาษเช็ดปากหลายแผ่นเพื่อดูว่าจะสร้างทั้งหมดออกมาได้จริงไหม
    สุดท้ายก็ทำได้ และสนุกมากจริง ๆ
    ทุกครั้งที่สร้างเกตหนึ่งตัวจาก NAND ได้ เราจะเขียนชื่อเกตใหม่ลงบนกระดาษเช็ดปาก แล้วฉันก็เอากระดาษพวกนั้นกับความสนุกกลับบ้านไปด้วย หลังจากนั้นอีกไม่กี่วันก็พยายามเอาเกตเหล่านั้นมาประกอบกันจนไปถึง ALU ทั้งชุด
    ระหว่างทางก็ได้เจอ multiplexer และสิ่งน่าสนใจอีกหลายอย่าง สุดท้ายแม้จะตัน แต่เพราะเคยได้ยินชื่อหนังสือเล่มนี้มาก่อนก็เลยตัดสินใจสั่งมา
    บทถัด ๆ มาช่วยให้ฉันเข้าใจโลกระดับล่างที่เคยเป็นเรื่องลึกลับมาตลอดสำหรับคนที่มีแต่ประสบการณ์ซอฟต์แวร์อย่างฉันได้มากจริง ๆ
    แต่ในทางปฏิบัติฉันไม่ได้สร้างมันต่อจนจบ
    พอเข้าไปถึงฝั่งซอฟต์แวร์ระดับล่าง ฉันรู้สึกว่าเข้าใจมากพอแล้วจึงไม่ดึงดูดให้ลงมือทำต่อเท่าไร แต่แค่อ่านก็ยอดเยี่ยมมากแล้ว

  • ยังมีรีโพซิทอรีของ george hotz อันนี้ด้วย และค่อนข้างน่าสนใจ
    https://github.com/geohot/fromthetransistor

    • ตอนแรกไม่ค่อยแน่ใจว่ากำลังดูอะไรอยู่
      ไม่มีเอกสาร มีแค่โครงร่างคร่าว ๆ ของคอร์สสมมุติ แต่ถ้าไปดูคอมมิตแรก ๆ จะชัดขึ้น
      “ผมเขียนสิ่งนี้ไว้เมื่อหลายปีก่อนและอยากเอาขึ้นออนไลน์ การจ้างคนเป็นเรื่องยาก การศึกษาวิทยาการคอมพิวเตอร์สมัยใหม่จำนวนมากนั้นแย่มากจริง ๆ และมันยากเกินไปที่จะหาคนที่เข้าใจสแตกคอมพิวเตอร์สมัยใหม่จาก หลักการพื้นฐาน วันหนึ่งถ้าผมมีเวลา 12 สัปดาห์ว่างอีกครั้ง อาจจะทำเป็นคอร์สให้เรียนตามจากที่บ้านก็ได้ ผมเองก็อยากมาร่วมสนุกด้วย”
    • คำพูดที่ว่าการศึกษาวิทยาการคอมพิวเตอร์สมัยใหม่นั้นแย่เป็นอะไรที่น่าขำดี
      ตอนปริญญาตรีฉันไม่ได้เรียน CS แต่เรียน วิศวกรรมคอมพิวเตอร์ และหัวข้อในลิสต์นั้นประมาณ 80% ก็ครอบคลุมอยู่แล้ว
      ฉันเรียนทั้ง Verilog กับวิชาระบบปฏิบัติการหลายตัว และยังทำไมโครคอนโทรลเลอร์/FPGAs เยอะมาก
      ไฮไลต์ที่สุดคือการสร้าง CPU ด้วย Verilog แล้วต่อด้วยเขียนแอสเซมเบลอร์/คอมไพเลอร์
      มันเป็นหลักสูตรที่หนักมาก แต่ตอนเรียนจบฉันรู้สึกว่าเข้าใจทั้งสแตกได้ค่อนข้างดี
      บางทีเขาอาจไม่ค่อยรู้จักฝั่งวิศวกรรมคอมพิวเตอร์ก็ได้
  • สงสัยว่า “sand2nand” ซึ่งเหมือนเป็นภาคก่อนหน้า จะทำเป็นโปรเจกต์ DIY ได้ไหม

  • ตอนทำงานเป็นนักวิเคราะห์ข้อมูล ฉันลองเรียนคอร์สนี้เล่น ๆ แบบไม่คิดอะไรมาก แต่มันกลายเป็นจุดเริ่มต้นของ การเปลี่ยนสายอาชีพ
    เป็นคอร์สที่ยอดเยี่ยมมาก ถ้ามีเวลาขอแนะนำให้ลองจริง ๆ

    • ยินดีด้วย
      อยากรู้ว่าได้ย้ายไปเส้นทางสายการเขียนโปรแกรมระดับล่างมากขึ้นหรือเปล่า