Từ NAND đến Tetris (2017)
(nand2tetris.org)- 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ản và video
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 Coursera là trả 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
Ý 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ị
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
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 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 đ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ễ
Tôi thích các video của anh ấy, đặc biệt là phần giới thiệu vòng lặp và ngắ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 đó
Giờ tôi cũng nên xem NAND to Tetris
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ả 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...
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
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.”
Ở 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ử
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