11 điểm bởi GN⁺ 2026-01-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Được xây dựng để giúp các lập trình viên vừa học tập vừa trải nghiệm những thử thách sáng tạo thông qua 73 ý tưởng dự án lập trình
  • Mỗi dự án bao quát nhiều lĩnh vực khác nhau như mạng, hệ thống, AI, đồ họa, bảo mật, cơ sở dữ liệu
  • Phần lớn ý tưởng được thiết kế để tự tay hiện thực các nguyên lý công nghệ cốt lõi, nhờ đó có thể học song song cả lý thuyết lẫn thực hành
  • Mỗi mục đều kèm theo các liên kết tới bài báo khoa học, tài liệu chính thức, hướng dẫn, giúp chỉ ra lộ trình học tập rõ ràng
  • Mang lại cơ hội để nhìn nhận lập trình không chỉ là viết mã mà còn là nghệ thuật của khám phá và sáng tạo

Tổng quan

  • Nhiều lập trình viên muốn bắt đầu side project nhưng không biết nên làm gì
    • Trên Internet có rất nhiều ý tưởng quen thuộc và nhàm chán
  • Bài viết này giới thiệu 73 dự án thú vị và có giá trị học tập cao
    • Mỗi dự án được xây dựng để người học có thể trực tiếp hiện thực và tiếp thu một khái niệm kỹ thuật cụ thể

Dự án về mạng và hệ thống

  • BitTorrent client: hiện thực một trình tải tệp để tìm hiểu cách hoạt động của mạng P2P
  • DNS server: xây dựng máy chủ bao gồm nhận truy vấn, phân tích gói tin, phân giải tên miền và bộ nhớ đệm
  • Container runtime: học kernel namespace, chroot, và cô lập tiến trình mà không cần Docker
  • TCP/IP stack: tự hiện thực giao thức TCP/IP trong không gian người dùng của Linux
  • Load balancer: hiện thực phân phối yêu cầu giữa các máy chủ backend, kiểm tra trạng thái và duy trì phiên

Dữ liệu và hệ thống phân tán

  • RAFT protocol: hiện thực hệ thống hỗ trợ đồng thuận phân tán và khôi phục khi xảy ra lỗi
  • Redis clone: xây dựng cơ sở dữ liệu trong bộ nhớ bao gồm các lệnh cơ bản, lưu bền RDB, sao chép và giao dịch
  • Kafka broker: hiện thực hệ thống log phân tán xử lý việc tạo topic và các yêu cầu sinh/tiêu thụ thông điệp
  • SQL engine và optimizer: học quá trình thực thi và tối ưu hóa truy vấn bằng cách mô phỏng cấu trúc của SQLite
  • Hệ thống CI: xây dựng hệ thống tích hợp tự động theo dõi kho Git, chạy kiểm thử và báo cáo kết quả

Trí tuệ nhân tạo và thuật toán

  • Wordle solver: chương trình suy đoán từ sử dụng các khái niệm lý thuyết thông tin và entropy
  • Trình tạo deepfake: hiện thực biến đổi khuôn mặt bằng Optimal Transport
  • Random forest: tự hiện thực cây quyết định và random forest để giải các bài toán phân loại
  • Neural network framework: xây dựng framework deep learning bao gồm tensor, autograd và optimizer
  • Thiết kế tiến hóa: mô phỏng tự động tiến hóa cấu trúc cơ khí bằng thuật toán di truyền

Đồ họa và phát triển game

  • Ray tracer: kết xuất cảnh 3D gồm hình cầu, mặt phẳng và ánh sáng
  • OpenGL renderer: hiện thực một renderer nhỏ để rèn luyện nền tảng lập trình đồ họa
  • Làm lại Dangerous Dave: tái hiện trò chơi cổ điển bằng SDL
  • Chess engine: hiện thực trò chơi cờ vua bao gồm cả UCI engine
  • Procedural Crossword: tạo ô chữ tự động bằng lan truyền ràng buộc

Bảo mật và mật mã

  • Authentication server (JWT/Sessions) : hiện thực mã hóa, thời hạn hết hạn của token và quản lý phiên
  • Hệ thống bỏ phiếu ẩn danh: thiết kế cơ chế bỏ phiếu mã hóa bằng zero-knowledge proof (ZKP)
  • VPN: xây dựng mesh VPN chuyển tiếp lưu lượng mà không cần máy chủ trung tâm
  • Thử nghiệm malware: kiểm tra phản ứng của tường lửa trong môi trường máy ảo
  • Zip archiver: tự hiện thực các chức năng nén, mã hóa và đóng gói

Phát triển web và ứng dụng

  • Web server: hỗ trợ xử lý yêu cầu HTTP, phục vụ tệp tĩnh, routing và reverse proxy
  • Trình soạn thảo cộng tác: hiện thực trình soạn thảo văn bản phân tán dựa trên CRDT
  • Browser engine: xây dựng một engine đơn giản có thể phân tích HTML/CSS và render
  • Video editor: trình biên tập phía client chạy ngay trong trình duyệt
  • Browser extension: lưu và tự động điền mật khẩu, biểu mẫu và trạng thái clipboard

Trực quan hóa dữ liệu và tìm kiếm

  • Googlebot: tạo web crawler để học cấu trúc cơ bản của hệ thống tìm kiếm
  • Wikipedia search engine: hiện thực thuật toán lập chỉ mục, tokenization và xếp hạng
  • Knowledge graph: trực quan hóa quan hệ giữa các thực thể và tự động cập nhật từ web
  • Google Maps engine: hệ thống bản đồ lập chỉ mục dữ liệu đường sá, địa hình và địa điểm
  • Hệ thống CDN caching: thiết kế cấu trúc cache ngăn các yêu cầu lặp lại đối với tài sản tĩnh

Phần cứng và hệ thống nhúng

  • Hệ thống laser tag: hệ thống phát hiện thời gian thực sử dụng mã hóa IR và giao tiếp MQTT
  • Ứng dụng nhà thông minh: dự án IoT hỗ trợ điều khiển thiết bị IR, lập lịch và tự động hóa
  • Trình giả lập Game Boy Advance: tái hiện cấu trúc CPU, bộ nhớ, đồ họa và đầu vào

Blockchain và tài chính

  • Bitcoin node: hiện thực chức năng tải xuống và xác thực block
  • Bot giao dịch chứng khoán: thực hiện giao dịch tự động bằng hệ thống hướng sự kiện
  • Bỏ phiếu ẩn danh và smart contract: hệ thống bỏ phiếu đáng tin cậy dựa trên blockchain

Kết luận

  • 73 dự án nhấn mạnh cách tiếp cận mang tính thử nghiệm, học bằng cách tự tay hiện thực công nghệ cốt lõi
  • Mỗi ý tưởng đều nối tới tài liệu chính thức, bài báo khoa học và hướng dẫn, từ đó thúc đẩy việc học thông qua thực hành
  • Đây là những gợi ý thực tiễn giúp bạn khám phá lại lập trình như một nghệ thuật của khám phá và sáng tạo

1 bình luận

 
GN⁺ 2026-01-02
Ý kiến trên Hacker News
  • Một số người cho rằng danh sách này trông như do AI tạo ra, nhưng tôi lại nghĩ việc ‘tự làm từ đầu’ mới là cách tốt nhất để giảm phụ thuộc vào AI
    Ở Nhật, quá trình này được gọi là ‘tu hành (修行, Shugyo)’. Người thợ dành thời gian dài mài công cụ không phải vì hiệu quả, mà để hiểu bản chất của thép
    Tự tay làm Redis hay Git không phải vì thành phẩm, mà là để xây dựng mô hình tư duy thông qua những va chạm trong quá trình đó. Đây chính là phần mà AI không thể thay thế

    • Sự tập trung vào tính tỉ mỉ của người Nhật lúc nào cũng khiến tôi thán phục. Tôi cũng đang cố áp dụng thái độ đó vào cuộc sống của mình
    • Tôi tự hỏi liệu điều đó có bao hàm cả sự lặp lại không. Có phải kiểu làm lại Redis khoảng 20 lần không
    • Có hơi mang yếu tố marketing, nhưng việc họ khuyên tham khảo tài liệu chính thức của Redis thay vì tutorial trả phí của chính mình thì tôi thấy cũng ổn
    • Việc cứ nhắc đến cách người Nhật dùng khái niệm này trong mọi bình luận có vẻ hơi quá. Nhìn tuổi đời tài khoản thì cũng hơi có cảm giác bot
    • Nhiều quay phim chỉ đạo xuất sắc vốn xuất thân từ đội ánh sáng. Tôi nghĩ cùng một nguyên lý như vậy
  • Xin giới thiệu bộ ý tưởng dự án tôi làm: Challenging programming projects every programmer should try

    • Danh sách này ngắn gọn và giải thích rõ bạn sẽ học được gì từ từng dự án nên tốt hơn nhiều. Trong khi đó bài gốc giống kiểu ‘100 cuốn sách nên đọc’, thiên về liệt kê hơn là thực hành
    • Hồi đại học tôi từng làm Space Invaders trên Zync FPGA, và việc tách phần cứng với phần mềm để thiết kế thực sự rất thú vị. Có một người bạn còn tạo khối phân tích tần số micro để điều khiển bằng sáo recorder
    • Tôi thích danh sách này hơn. Tôi vẫn chưa thử làm bảng tính, nhưng đó là thứ tôi cũng không thật sự muốn làm
    • Thật vui vì đây là bài tôi từng đánh dấu từ trước
  • Đây là danh sách từ codecrafters.io. Nền tảng này cho bạn triển khai dự án theo từng bước và cung cấp kiểm thử tích hợp cùng cộng đồng
    Tôi cũng đang làm dự án ‘Build your own Redis’ và thấy khá thú vị. Không phải do AI tạo, có vẻ là tập hợp các ý tưởng nhận được từ cộng đồng

  • Tôi cực kỳ khuyến nghị tự làm một client BitTorrent. Đặc tả đơn giản, còn các vấn đề chi tiết thì rất thú vị. Cảm giác hoàn thành rồi tự tải kernel Debian xuống rất đáng giá
    Nếu triển khai thêm magnet link hay chức năng seeding thì sẽ học được sâu hơn nữa. Trải nghiệm này khiến tôi quan tâm đến hệ thống P2P và DHT (như Chord)

    • Thời đại học tôi từng làm dự án tạo một ‘P2P client’, và quá trình tự triển khai những thứ như handshaking hay thiết kế kích thước chunk thực sự rất vui
  • Danh sách này hơi kỳ. Ví dụ #58 là triển khai malloc, vốn là chủ đề khá khó với người mới, mà ngay #59 lại bảo tự làm giao thức streaming từ đầu

    • Đọc đến khoảng giữa thì bắt đầu thấy văn phong như AI viết. Không tự nhiên lắm
  • Tôi muốn biết mọi người nghĩ gì về thử thách lập trình /g/ của 4chan. Cách phân loại độ khó có vẻ hơi tùy tiện. Ví dụ nói bootloader khó hơn trình biên dịch C thì khá lạ
    Liên kết ảnh tham khảo

    • Liên kết không mở trực tiếp thành ảnh. Có lẽ nên nối đến file .md thì tốt hơn
  • Tự làm những công cụ hay giao thức nhỏ nhưng hoàn chỉnh là rất tốt. Sự thỏa mãn đến từ tính rõ ràng và cảm giác hoàn thành, hơn là quy mô

  • Tôi hơi nghi liệu đây có phải là ‘astroturfing’ (quảng bá trá hình) không

  • Có dự án chỉ mất một ngày, nhưng cũng có dự án ở quy mô đồ án tốt nghiệp đại học hay thậm chí luận văn thạc sĩ

  • Nhìn danh sách này làm tôi thấy mình không phải một lập trình viên giỏi

    • Hầu hết các dự án lúc đầu đều có vẻ quá sức, nhưng nếu chia nhỏ thành từng phần thì hoàn toàn có thể thử được
    • Thực ra ngay cả với lập trình viên nhiều kinh nghiệm cũng có nhiều bài toán khó. Nhưng đó cũng chính là lý do để thử thách. Đừng so sánh với người khác, hãy tập trung vào quá trình học hỏi
      Nếu muốn bắt đầu, nên xem các công trình đi trước trong lĩnh vực bạn quan tâm. Ví dụ có thể tham khảo công việc của Adam Dunkels. Vì dành cho embedded nên nhỏ gọn và dễ hiểu
      Nếu cần, cũng nên tận dụng công cụ AI để hỗ trợ hiểu code hoặc sinh code