5 điểm bởi GN⁺ 2023-12-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Nand2Tetris cung cấp tài liệu để người học muốn hiểu hệ thống máy tính từ nền móng có thể tự xây dựng một hệ thống máy tính đa dụng và các tầng phần mềm hiện đại
  • Bài giảng, tài liệu dự án và công cụ được tập hợp ở một nơi, có thể dùng miễn phí dưới dạng mã nguồn mở trong môi trường phi thương mại
  • Khóa học này được sử dụng tại hơn 400 trường đại học, trung học và bootcamp, với người học từ học sinh trung học đến nghiên cứu sinh tiến sĩ và kỹ sư kỳ cựu
  • Người tự học có thể theo các ghi chú bài giảng trên website và mục Projects, còn trên Coursera có thể học trả phí và nhận chứng chỉ hoàn thành chính thức
  • Cấu trúc được thiết kế cho cả tự học cá nhân và giảng dạy tại cơ sở giáo dục; giảng viên có thể liên hệ riêng để nhận thêm tài liệu

Tài liệu học cách xây dựng máy tính từ nền móng

  • Trang web chính thức của các khóa học Nand to Tetris tập hợp và cung cấp các tài liệu cần thiết để xây dựng một hệ thống máy tính đa dụng và các tầng phần mềm hiện đại từ đầu
  • Tài liệu gồm bài giảng, tài liệu dự án và công cụ, dành cho sinh viên, giảng viên và người tự học
  • Cuốn sách liên quan là The Elements of Computing Systems của Noam Nisan và Shimon Schocken
  • Tài liệu CACM liên quan đến khóa học được cung cấp dưới dạng văn bảnvideo

Lộ trình học và ứng dụng trong môi trường giáo dục

  • Khóa học Nand to Tetris được giảng dạy tại hơn 400 trường đại học, trung học và bootcamp
    • Người học bao gồm từ học sinh trung học, nghiên cứu sinh tiến sĩ đến kỹ sư kỳ cựu
    • Có thể xem đề cương mở rộng của phiên bản học thuật điển hình của khóa học
  • Có thể học tự do bằng cách theo các ghi chú bài giảng trên website và mục Projects
  • Khóa học trên Courseratrả phí và cung cấp chứng chỉ hoàn thành chính thức
  • Tài liệu bổ sung cho giảng viên có thể nhận bằng cách liên hệ nand2tetris@gmail.com

1 bình luận

 
GN⁺ 2023-12-23
Ý kiến trên Hacker News
  • Lần đầu thử sau khi tốt nghiệp đại học 7 năm trước, tôi chỉ làm đến chương 2; rất đáng công nhưng rồi bỏ dở vì các dự án phụ khác
    Tôi bắt đầu lại 3 tháng trước và giờ đã đến chương 8, hoàn thành cổng logic, ALU, CPU, assembler và một nửa máy ảo; ở mỗi chương đều có lúc nghĩ “rốt cuộc cái này hoạt động thế nào?” rồi khi nó thực sự chạy thì cảm giác cực kỳ thỏa mãn
    Với một dự án phụ thuần để học, đây là thứ đáng công nhất tôi từng làm, và tôi khá tự hào vì bản thân vẫn bám đến cùng, nên rất khuyến nghị

    • Tôi cũng đã làm, và phải mất đến ba lần mới hoàn thành toàn bộ
      Mùa thu/đông năm ngoái, tôi làm song song với loạt bài tuyệt vời của Ben Eater về việc dựng máy tính 8-bit trên breadboard; trong vài tháng tôi mua linh kiện từ Trung Quốc và suốt mùa đông cứ hàng về là lắp các hệ thống con
      Tiếp theo bạn nên thử cái này; cũng rất đáng công, nhưng cảnh nhìn các LED nhấp nháy và hiểu bên trong đang diễn ra điều gì trông thật sự tuyệt
    • Nhìn những khóa học như thế này và những cuốn sách như Code, tôi cảm thấy vô cùng kính phục những người đầu tiên đã tìm ra các điều đó
    • Tôi tò mò bạn đã học kiến thức vật lý chất rắn cần thiết để hiểu trọn vẹn bối cảnh của hai chương đầu như thế nào
      Chẳng hạn cơ chế thực tế để một mạch tích hợp biến đầu vào thành đầu ra hữu ích; tôi chưa tìm được tài liệu nào giải thích thỏa đáng cách ngay cả mạch tích hợp đơn giản nhất ngoài đời như TI SN7400 thực sự hoạt động
    • Tôi đã làm toàn bộ dự án như một phần của môn học, và đó là một trong những lớp hay nhất tôi từng học trong chương trình khoa học máy tính; thật sự xuất sắc
  • Tôi rất thích khóa học này và rất khuyến nghị cho những ai làm việc với máy tính mà chưa từng học các môn khoa học máy tính cấp thấp
    Nó giúp bạn hiểu trực giác những phần cốt lõi trong cách máy tính hoạt động có ảnh hưởng đến chương trình cấp cao và ngôn ngữ lập trình; với cá nhân tôi, điều ngộ ra lớn nhất là hiểu đúng sự khác nhau giữa stack và heap
    Việc cứ chồng các mạch đơn giản lên nhau để tạo thành cỗ máy phức tạp mà chúng ta dùng cũng tạo cảm giác như phép màu, và các giảng viên giúp bạn nhanh chóng nắm được ý chính của những chủ đề như hợp ngữ mà không đơn giản hóa quá mức những nội dung có thể đủ cho nhiều học kỳ
    Nếu có thời gian thì thật sự nên thử; phần 1, từ cổng NAND đến xây CPU, rất thú vị và khá dễ, nhưng phần 2, từ máy tính đến một hệ điều hành hoàn chỉnh, thì tốn công hơn nhiều

    • Tôi thắc mắc liệu khóa học online và sách có phải là cùng một tài liệu không
      Tôi đang cố xác định có cần cả hai hay chỉ một là đủ
  • Rất khuyến nghị khóa học/cuốn sách này
    Làm đến cuối thì cực kỳ đáng công

  • Sau khi hoàn thành loạt 8-bit computer tuyệt vời của Ben Eater (https://eater.net/8bit/), chuyển sang nand2tetris là một luồng rất tự nhiên
    Nó giúp bạn thật sự hiểu những khái niệm nền tảng trong thiết kế máy tính mà thường hay bị lướt qua, và là một dự án rất hợp để bắt đầu trong kỳ nghỉ lễ

    • Đồng ý với khuyến nghị Ben Eater
      Tôi thích các video của anh ấy, đặc biệt là phần giới thiệu vòng lặpngắt
      Rất thỏa mãn khi thấy đoạn code anh ấy viết được viết lại tao nhã hơn nhiều nhờ các khái niệm đó
    • Mùa hè năm ngoái tôi đã làm máy tính 6502 của Ben Eater và cũng đáng giới thiệu
      Giờ tôi cũng nên xem NAND to Tetris
    • Khi ở Recurse tôi đã làm nand2tetris, và thời đó cũng xem Ben Eater rất nhiều
      Hai thứ rất hợp với nhau
  • Có một trò chơi NAND thú vị lấy cảm hứng từ khóa học này: https://nandgame.com/

    • Cũng có một trò còn vui hơn với đánh giá trên Steam cực kỳ tích cực: https://store.steampowered.com/app/1444480/Turing_Complete/
    • Hơi khác một chút nhưng tôi cũng khuyên thử TIS-100Shenzhen IO
      Cả hai đều theo kiểu viết bằng ngôn ngữ giống hợp ngữ, và học rất vui
  • Nếu bạn đang muốn hiểu máy tính ở mức thấp hơn, tôi cũng khuyên xem khóa Digital Design and Computer Architecture của ETH Zürich
    https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-EImKxYYY1...

    • Đây là một mỏ vàng
      Tôi đã học môn nhập môn kiến trúc máy tính, nhưng tiếc là không đi xa được; những phép màu như thực thi ngoài thứ tự mà CPU hiện đại làm thì hoàn toàn không được đề cập
      Có vẻ playlist này sẽ là chủ đề cho kỳ nghỉ lễ này của tôi
  • Tôi có những ký ức đẹp về cuốn sách này và thời điểm tôi cầm nó lên
    Khi đang uống cà phê với bạn gái, tôi nói rằng mình đọc được là chỉ với NAND có thể tạo ra mọi cổng logic, và vì tò mò chúng tôi lấy vài tờ khăn giấy, viết NAND lên đó rồi thử suy luận xem có thể tạo ra tất cả không
    Cuối cùng chúng tôi làm được và rất vui
    Mỗi khi tạo được một cổng bằng NAND, chúng tôi lại viết tên cổng mới lên khăn giấy, rồi mang những tờ khăn và niềm vui đó về nhà; vài ngày sau, tôi cố kết hợp các cổng đó để cuối cùng tìm ra cả ALU
    Trong quá trình đó xuất hiện multiplexer và nhiều thứ thú vị khác, rồi cuối cùng tôi bị kẹt, nhưng vì từng nghe đến cuốn sách này nên quyết định đặt mua
    Các chương sau đó thật sự giúp tôi hiểu được tầng thấp vốn luôn bí ẩn với một người chỉ có kinh nghiệm phần mềm như tôi
    Tuy vậy tôi chưa thực sự xây đến cùng
    Khi bước vào phần phần mềm cấp thấp, tôi đã có cảm giác mình hiểu đủ rồi nên bản thân công việc không còn hấp dẫn bằng, nhưng chỉ đọc thôi cũng đã rất tuyệt

  • Cũng có repository này của george hotz, khá thú vị
    https://github.com/geohot/fromthetransistor

    • Lúc đầu tôi không chắc mình đang nhìn vào cái gì
      Không có tài liệu, chỉ là một dàn ý sơ lược cho một khóa học giả định, nhưng xem các commit ban đầu thì rõ hơn
      “Tôi viết nó vài năm trước và muốn đưa lên mạng. Tuyển dụng rất khó, phần lớn giáo dục khoa học máy tính hiện đại thật sự khá tệ, và quá khó để tìm người hiểu stack máy tính hiện đại từ nguyên lý đầu tiên. Một ngày nào đó nếu lại có 12 tuần rảnh, có thể tôi sẽ cung cấp nó như một khóa học làm theo tại nhà. Tôi cũng muốn tham gia chơi cùng.”
    • Câu nói giáo dục khoa học máy tính hiện đại tệ khá thú vị
      Ở bậc đại học tôi học kỹ thuật máy tính chứ không phải CS, và chúng tôi đã học khoảng 80% các chủ đề trong danh sách đó
      Tôi học nhiều môn Verilog và hệ điều hành, cũng làm nhiều với vi điều khiển/FPGAs
      Điểm nhấn rõ ràng là sau khi tạo CPU bằng Verilog rồi viết assembler/compiler
      Đó là một chương trình khó, nhưng khi tốt nghiệp tôi cảm thấy mình hiểu toàn bộ stack khá tốt
      Có lẽ anh ấy không rành mảng kỹ thuật máy tính
  • Tôi tự hỏi liệu phần tiền truyện kiểu “sand2nand” có khả thi như một dự án DIY không

  • Khi còn làm nhà phân tích dữ liệu, tôi nghe khóa này với tâm thế nhẹ nhàng, nhưng nó đã trở thành bước ngoặt cho việc chuyển hướng sự nghiệp
    Đây là một khóa học thật sự tuyệt vời, nếu có thời gian thì nhất định nên thử

    • Chúc mừng
      Tôi tò mò không biết bạn có chuyển sang con đường lập trình cấp thấp hơn không