Trích dẫn mã nguồn, GitHub repository trong đồ án CNTT đúng chuẩn
Trích dẫn mã nguồn là việc ghi rõ nguồn gốc cho đoạn code, thư viện hoặc toàn bộ repository bạn tái sử dụng từ người khác khi làm đồ án, khóa luận ngành Công nghệ thông tin (CNTT). Khác với trích dẫn phần mềm công cụ (SPSS, R) vốn chỉ cần ghi tên và phiên bản, trích dẫn mã nguồn đòi hỏi ghi thêm tác giả repository, commit hoặc phiên bản cụ thể, và — quan trọng hơn — phải tuân thủ giấy phép mã nguồn mở (MIT, GPL, Apache) đi kèm, vì đây là nghĩa vụ pháp lý tách biệt với nghĩa vụ trích dẫn học thuật.
Cập nhật: tháng 9/2026 — Biên soạn bởi đội ngũ Kiểm Tra Tài Liệu, Metis JSC
Trích dẫn mã nguồn khác trích dẫn phần mềm ở đâu?
Trích dẫn mã nguồn (source code citation) và trích dẫn phần mềm là hai việc khác nhau dù thường bị nhầm lẫn. Trích dẫn phần mềm ghi nguồn cho công cụ bạn dùng để tạo ra kết quả — ví dụ SPSS, MATLAB, NVivo — như đã trình bày trong bài trích dẫn dataset và phần mềm trong luận văn. Trích dẫn mã nguồn ghi nguồn cho chính đoạn code bạn sao chép, chỉnh sửa hoặc dựa vào để xây dựng đồ án — ví dụ một module xử lý ảnh lấy từ GitHub, một hàm thuật toán copy từ Stack Overflow, hoặc toàn bộ khung dự án (boilerplate) clone từ repository công khai.
Theo GitHub Octoverse Report (GitHub, 2023), nền tảng này có hơn 100 triệu nhà phát triển đang hoạt động và hàng trăm triệu kho lưu trữ công khai — quy mô đủ lớn để GitHub trở thành nguồn tham khảo mã nguồn phổ biến nhất với sinh viên CNTT tại Việt Nam, vượt xa các diễn đàn lập trình truyền thống.
Sự khác biệt này quan trọng vì hội đồng chấm đồ án CNTT thường hỏi hai câu tách biệt: "phần mềm nào bạn dùng để phát triển?" và "đoạn code nào không phải do bạn tự viết?". Trả lời đúng câu thứ hai đòi hỏi trích dẫn mã nguồn, không chỉ trích dẫn công cụ.
Khi nào bắt buộc trích dẫn mã nguồn trong đồ án CNTT?
Ranh giới nằm ở mức độ bạn tái sử dụng: copy nguyên khối, sao chép có chỉnh sửa, hay chỉ tham khảo ý tưởng thuật toán rồi tự viết lại.
Ba tình huống thường gặp:
- Fork hoặc clone toàn bộ repository làm khung dự án (ví dụ lấy một boilerplate Next.js + Express có sẵn rồi phát triển thêm tính năng theo yêu cầu đề tài): bắt buộc trích dẫn repository gốc như một nguồn độc lập, đồng thời phải nêu rõ trong chương phương pháp phần nào là code gốc, phần nào do bạn viết thêm.
- Copy một hàm, class hoặc đoạn snippet cụ thể từ GitHub, Stack Overflow hoặc blog kỹ thuật, có chỉnh sửa để phù hợp đồ án: trích dẫn nguồn ngay tại vị trí đoạn code đó, thường bằng comment trong code kèm mục trích dẫn đầy đủ trong báo cáo.
- Chỉ đọc hiểu thuật toán rồi tự viết lại từ đầu bằng ngôn ngữ/logic riêng (không copy dòng nào): không bắt buộc trích dẫn mã nguồn theo nghĩa sao chép, nhưng vẫn nên trích dẫn nguồn ý tưởng thuật toán trong phần cơ sở lý thuyết nếu thuật toán đó không phải kiến thức phổ thông (ví dụ một biến thể thuật toán từ một bài báo cụ thể).
Ví dụ minh họa: một sinh viên làm đồ án tốt nghiệp về hệ thống nhận diện biển số xe, dùng lại nguyên một pipeline xử lý ảnh OpenCV từ repository công khai trên GitHub rồi chỉnh sửa tham số cho phù hợp camera thực tế — đây là tình huống 1, bắt buộc trích dẫn repository gốc trong danh mục tài liệu tham khảo, không chỉ ghi trong comment code.
Cách trích dẫn GitHub repository theo APA 7, IEEE và ACM
Ba định dạng phổ biến nhất trong đồ án CNTT tại Việt Nam đều yêu cầu bốn thành phần: tác giả (cá nhân hoặc tổ chức), năm, tên repository, và địa chỉ URL hoặc DOI.
| Chuẩn | Định dạng | Ví dụ |
|---|---|---|
| APA 7 (2020) | Tác giả. (Năm). Tên repository (Phiên bản/commit) [Mã nguồn máy tính]. GitHub. URL | Ultralytics. (2023). YOLOv8 (v8.0.0) [Mã nguồn máy tính]. GitHub. https://github.com/ultralytics/ultralytics |
| IEEE | [Số] Tác giả, "Tên repository," GitHub, Năm. [Online]. Available: URL | [8] Ultralytics, "YOLOv8," GitHub, 2023. [Online]. Available: https://github.com/ultralytics/ultralytics |
| ACM Reference Format | Tác giả. Năm. Tên repository. GitHub repository. URL | Ultralytics. 2023. YOLOv8. GitHub repository. https://github.com/ultralytics/ultralytics |
ACM (Association for Computing Machinery) — tổ chức nghề nghiệp lớn nhất thế giới về khoa học máy tính — dùng định dạng ACM Reference Format riêng cho các bài báo nộp về hội nghị và tạp chí ngành CNTT, khác cả APA lẫn IEEE ở cách đặt dấu câu và thứ tự thành phần. Nếu khoa của bạn không quy định cụ thể, ưu tiên IEEE vì đây là chuẩn phổ biến nhất cho khối kỹ thuật — chi tiết quy tắc chung xem tại bài chuẩn trích dẫn IEEE là gì? Hướng dẫn cho ngành kỹ thuật.
Với repository không có tên tác giả cá nhân (chỉ có tên tổ chức hoặc biệt danh GitHub — username), dùng chính username đó thay vị trí tác giả, tương tự cách xử lý khi trích dẫn trang web không rõ tác giả.
Trích dẫn commit, release cụ thể và cách lấy DOI qua Zenodo
Trích dẫn cả repository nói chung thường không đủ chính xác, vì mã nguồn trên GitHub thay đổi liên tục — code bạn tham khảo hôm nay có thể khác hoàn toàn phiên bản một năm sau. Cách xử lý đúng là trích dẫn đến một điểm cố định trong lịch sử: commit hash hoặc release/tag cụ thể.
Commit hash là chuỗi ký tự duy nhất (SHA-1, dài 40 ký tự, thường viết tắt 7 ký tự đầu) mà Git gán cho mỗi lần thay đổi mã nguồn, đóng vai trò như "dấu thời gian cố định" giúp người đọc truy cập chính xác phiên bản code bạn đã dùng, dù repository gốc đã được cập nhật nhiều lần sau đó.
Cách ghi trong trích dẫn: thêm commit hash hoặc số release ngay sau tên repository, ví dụ "GitHub. https://github.com/ultralytics/ultralytics/commit/a1b2c3d (truy cập ngày 15/8/2026)" hoặc dùng tag phiên bản "v8.0.0" nếu tác giả gốc có gắn release chính thức.
Với repository có ý nghĩa học thuật cao (bạn dùng làm nền tảng chính cho đồ án hoặc muốn công bố kèm khóa luận), nên lấy DOI cố định thay vì chỉ dùng URL:
- Zenodo — kho lưu trữ do CERN vận hành trong khuôn khổ OpenAIRE, ra mắt năm 2013, hỗ trợ tích hợp trực tiếp với GitHub ngay từ khi ra mắt: mỗi lần bạn tạo release mới trên GitHub, Zenodo tự động lưu trữ và cấp DOI vĩnh viễn cho đúng phiên bản đó.
- CITATION.cff — định dạng file văn bản thuần (Citation File Format) đặt ở thư mục gốc repository, cho phép tác giả tự định nghĩa cách trích dẫn dự án của họ; GitHub bổ sung hỗ trợ đọc trực tiếp file này từ năm 2021, hiển thị nút "Cite this repository" ngay trên giao diện web khi repository có file CITATION.cff hợp lệ.
Quy trình 3 bước kiểm tra cách trích dẫn "chính chủ" trước khi tự soạn: (1) mở repository trên GitHub, tìm nút "Cite this repository" ở khung bên phải — nếu có, đây là cách tác giả gốc muốn được trích dẫn; (2) nếu không có, tìm file README.md hoặc CITATION.md xem tác giả có ghi hướng dẫn trích dẫn thủ công không; (3) nếu cả hai đều không có, tự soạn theo định dạng chuẩn ở bảng trên, dùng username GitHub làm tên tác giả.
Trích dẫn snippet từ Stack Overflow và code do AI sinh ra
Hai nguồn mã nguồn phổ biến khác trong đồ án CNTT — Stack Overflow và công cụ AI như GitHub Copilot, ChatGPT — có quy tắc trích dẫn riêng, khác hẳn trích dẫn repository.
Từ tháng 5/2018, Stack Overflow áp dụng giấy phép nội dung Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0) cho mọi câu trả lời và đoạn code người dùng đăng tải, thay thế phiên bản CC BY-SA 3.0 trước đó — nghĩa là việc ghi công tác giả (attribution) là bắt buộc theo giấy phép, không chỉ là quy ước học thuật.
Cách trích dẫn một câu trả lời Stack Overflow: ghi tên người trả lời (username), tiêu đề câu hỏi, tên trang, URL cụ thể đến câu trả lời (không phải URL trang câu hỏi chung chung) và ngày truy cập — tương tự cấu trúc trích dẫn trang web thông thường nhưng cần đường dẫn chính xác đến đúng câu trả lời đã dùng.
Với code do AI sinh ra (GitHub Copilot ra mắt bản xem trước công khai năm 2021 và bản chính thức năm 2022; ChatGPT tạo code theo yêu cầu), quy tắc khác biệt rõ rệt: AI không phải "tác giả" theo nghĩa trích dẫn học thuật truyền thống, vì không sở hữu bản quyền theo hầu hết khung pháp lý hiện hành. Thay vào đó, sinh viên nên:
- Ghi chú trong báo cáo phương pháp nghiên cứu rằng một phần code được tạo với sự hỗ trợ của công cụ AI, nêu tên cụ thể (GitHub Copilot, ChatGPT) và mục đích sử dụng.
- Không trích dẫn AI như một nguồn tài liệu tham khảo dạng
[Software]giống công cụ phân tích SPSS, vì AI không phải phần mềm cố định mà là quá trình tạo sinh có thể cho kết quả khác nhau mỗi lần. - Luôn đọc hiểu và kiểm thử lại code do AI sinh ra trước khi đưa vào đồ án — hội đồng có quyền hỏi bạn giải thích logic bất kỳ dòng code nào trong bài, kể cả phần AI hỗ trợ.
Giấy phép mã nguồn mở và nghĩa vụ pháp lý khác với trích dẫn học thuật
Đây là điểm dễ bị bỏ sót nhất: trích dẫn đúng chuẩn học thuật không đồng nghĩa được phép sử dụng mã nguồn đó một cách tự do — hai việc này vận hành theo hai bộ quy tắc độc lập.
| Loại giấy phép | Yêu cầu chính | Có bắt buộc giữ lại license gốc trong đồ án không |
|---|---|---|
| MIT | Chỉ cần giữ nguyên thông báo bản quyền (copyright notice) và văn bản giấy phép khi phân phối lại | Có, đính kèm file LICENSE gốc trong mã nguồn nộp kèm đồ án |
| Apache 2.0 | Giữ thông báo bản quyền, ghi rõ các thay đổi đã thực hiện so với bản gốc | Có, kèm mô tả các thay đổi trong README hoặc báo cáo |
| GPL v3 | Mọi phần mềm phái sinh (derivative work) cũng phải công bố mã nguồn mở theo GPL | Có, và cần cân nhắc kỹ nếu đồ án dự định thương mại hóa sau này |
| Không ghi giấy phép (no license) | Theo luật bản quyền mặc định, tác giả giữ toàn bộ quyền — không được tự ý sao chép, kể cả có trích dẫn | Không được sử dụng nếu chưa xin phép trực tiếp tác giả |
Trường hợp cuối trong bảng là cái bẫy phổ biến nhất: repository công khai trên GitHub không đồng nghĩa "được phép sao chép tự do". Không có file LICENSE, theo luật bản quyền mặc định (bao gồm Luật Sở hữu trí tuệ Việt Nam), tác giả vẫn giữ toàn bộ quyền kiểm soát — trích dẫn nguồn đầy đủ không thay thế được việc xin phép khi cần.
Đạo văn mã nguồn (code plagiarism) khác đạo văn văn bản như thế nào?
Đạo văn mã nguồn là việc sao chép code của người khác vào đồ án mà không ghi công, tương tự đạo văn văn bản về bản chất nhưng cần công cụ phát hiện chuyên biệt vì cấu trúc code khác cấu trúc câu văn.
MOSS (Measure of Software Similarity) — công cụ phát hiện tương đồng mã nguồn do Alex Aiken phát triển tại Đại học Stanford từ năm 1994 — hoạt động bằng cách phân tích cấu trúc cú pháp (không chỉ so khớp văn bản), nên vẫn phát hiện được đạo văn mã nguồn dù sinh viên đã đổi tên biến, thêm comment hoặc sắp xếp lại thứ tự hàm.
Kiểm Tra Tài Liệu và các phần mềm kiểm tra đạo văn khác được thiết kế để đối chiếu văn bản trong báo cáo, thuyết minh — không phân tích trực tiếp mã nguồn chương trình. Nếu copy nguyên một dự án GitHub, phần thuyết minh viết lại bằng lời riêng có thể qua kiểm tra trùng lặp văn bản, trong khi phần code vẫn có thể bị phát hiện nếu khoa dùng thêm công cụ chuyên biệt như MOSS hoặc JPlag để đối chiếu mã nguồn nộp kèm.
Một số khoa CNTT tại Việt Nam yêu cầu nộp kèm mã nguồn đầy đủ (không chỉ báo cáo PDF) chính vì lý do này — hội đồng hoặc giảng viên phản biện có thể chạy công cụ đối chiếu code độc lập với việc kiểm tra trùng lặp văn bản báo cáo.
Tình huống thực tế của sinh viên CNTT Việt Nam
Ba tình huống dưới đây lặp lại nhiều nhất khi rà soát đồ án tốt nghiệp ngành CNTT:
- Lấy nguyên đồ án khóa trước từ nhóm Facebook/Zalo chia sẻ tài liệu, đổi tên biến và giao diện. Đây không chỉ là đạo văn mã nguồn mà còn thường vi phạm bản quyền của chính sinh viên khóa trước — thuyết minh viết lại có thể qua kiểm tra trùng lặp văn bản, nhưng code giữ nguyên logic thường bị phát hiện khi hội đồng phản biện trực tiếp đặt câu hỏi kỹ thuật.
- Dùng template/starter kit thương mại có điều khoản cấm dùng cho mục đích học thuật công khai mà không đọc kỹ giấy phép đi kèm — một số template bán trên các chợ mã nguồn (ThemeForest, CodeCanyon) có điều khoản giới hạn số lượng dự án được phép dùng lại, không phù hợp để nộp làm đồ án tốt nghiệp công khai trong thư viện trường.
- Trích dẫn đúng chuẩn trong báo cáo nhưng quên ghi comment trong chính file code. Hội đồng phản biện đọc trực tiếp mã nguồn thường mong đợi thấy comment ghi nguồn ngay tại đoạn code liên quan (ví dụ
// Nguồn: https://github.com/...), không chỉ ở phần tài liệu tham khảo cuối báo cáo.
Quy trình 5 bước trích dẫn mã nguồn trước khi nộp đồ án
Áp dụng quy trình sau cho mọi đoạn code, thư viện hoặc repository không phải do bạn tự viết từ đầu:
- Liệt kê toàn bộ nguồn mã nguồn bên ngoài đã dùng — rà lại từng file, đánh dấu đoạn nào copy, đoạn nào chỉnh sửa, đoạn nào tự viết dựa trên ý tưởng tham khảo.
- Kiểm tra giấy phép của từng nguồn — mở file LICENSE trên GitHub hoặc điều khoản sử dụng nếu là template thương mại, xác nhận việc dùng cho đồ án học thuật có được phép hay không.
- Tìm cách trích dẫn "chính chủ" qua nút "Cite this repository" hoặc file CITATION.cff/CITATION.md, ưu tiên hơn tự soạn định dạng.
- Ghi trích dẫn ở hai nơi: comment trực tiếp trong code tại vị trí đoạn được tái sử dụng, và mục riêng trong danh mục tài liệu tham khảo của báo cáo.
- Nộp kèm mã nguồn đầy đủ nếu khoa yêu cầu, không chỉ báo cáo PDF, để hội đồng có thể đối chiếu độc lập nếu cần.
Checklist áp dụng ngay trước khi nộp đồ án:
- [ ] Mọi repository, snippet code không tự viết đều có mục trích dẫn
[Mã nguồn máy tính]hoặc[Source code]riêng trong danh mục tham khảo - [ ] Đã kiểm tra giấy phép (MIT, Apache, GPL, hoặc không giấy phép) của từng nguồn mã nguồn tái sử dụng
- [ ] Đã trích dẫn đến commit hash hoặc số release cụ thể, không chỉ URL repository chung chung
- [ ] Code do AI hỗ trợ sinh ra đã được ghi chú trong phần phương pháp nghiên cứu, đã đọc hiểu và kiểm thử lại
- [ ] Có comment ghi nguồn trực tiếp trong file code tại vị trí đoạn tái sử dụng, không chỉ ở báo cáo
Câu hỏi thường gặp
Clone một repository GitHub về làm nền cho đồ án có bị coi là đạo văn không?
Không tự động là đạo văn nếu bạn trích dẫn đầy đủ nguồn gốc và nêu rõ trong báo cáo phần nào là code gốc, phần nào do bạn phát triển thêm. Nó trở thành đạo văn nếu bạn trình bày toàn bộ dự án như thể tự viết từ đầu mà không ghi công tác giả gốc.
Repository không có file LICENSE thì có được tự do sử dụng không?
Không. Theo luật bản quyền mặc định, tác giả vẫn giữ toàn bộ quyền kiểm soát dù không ghi rõ giấy phép trên GitHub. Trích dẫn nguồn đầy đủ là bắt buộc về mặt học thuật nhưng không thay thế việc xin phép tác giả nếu cần sử dụng cho mục đích ngoài tham khảo cá nhân.
Nên trích dẫn đến toàn bộ repository hay đến một commit cụ thể?
Nên trích dẫn đến commit hash hoặc số release cụ thể nếu có, vì mã nguồn trên GitHub thay đổi liên tục theo thời gian. Trích dẫn URL repository chung chung không đảm bảo người đọc sau này thấy đúng phiên bản code bạn đã tham khảo.
Code sinh ra bởi GitHub Copilot hoặc ChatGPT có cần trích dẫn như một nguồn không?
Không trích dẫn như nguồn tài liệu tham khảo [Software] thông thường, vì AI không phải tác giả theo nghĩa học thuật truyền thống. Thay vào đó, ghi chú trong phần phương pháp nghiên cứu rằng một phần code được tạo với sự hỗ trợ của công cụ AI cụ thể, và bạn phải đọc hiểu, kiểm thử lại toàn bộ trước khi nộp.
Phần mềm kiểm tra đạo văn như Kiểm Tra Tài Liệu có phát hiện được đạo văn mã nguồn không?
Không trực tiếp. Các công cụ như Kiểm Tra Tài Liệu đối chiếu văn bản trong báo cáo, thuyết minh — không phân tích cấu trúc mã nguồn chương trình. Phát hiện đạo văn mã nguồn cần công cụ chuyên biệt như MOSS hoặc JPlag, một số khoa CNTT có thể yêu cầu nộp kèm mã nguồn để đối chiếu riêng.
Dùng lại đồ án của khóa trước trong cùng trường có bị phát hiện không?
Có khả năng cao, đặc biệt nếu trường lưu trữ đồ án các khóa trước vào dữ liệu nội sinh dùng để đối chiếu kiểm tra trùng lặp. Phần thuyết minh viết lại có thể giảm trùng lặp văn bản, nhưng nếu hội đồng phản biện trực tiếp đọc code hoặc dùng công cụ đối chiếu mã nguồn, cấu trúc logic giống hệt vẫn dễ bị phát hiện.
Mua template thương mại rồi nộp làm đồ án tốt nghiệp có hợp lệ không?
Phụ thuộc vào điều khoản sử dụng của bên bán. Nhiều chợ mã nguồn thương mại giới hạn số dự án được phép triển khai hoặc cấm dùng cho mục đích công khai trong thư viện trường — cần đọc kỹ điều khoản trước khi quyết định, và nên trích dẫn rõ nguồn gốc template trong báo cáo dù đã mua bản quyền sử dụng.
Tóm tắt
- Trích dẫn mã nguồn khác trích dẫn phần mềm công cụ: cần ghi tác giả, commit/release cụ thể và tuân thủ giấy phép mã nguồn mở đi kèm.
- Ba chuẩn phổ biến cho đồ án CNTT: APA 7 (
[Mã nguồn máy tính]), IEEE (đánh số), và ACM Reference Format cho bài báo hội nghị/tạp chí ngành. - Ưu tiên trích dẫn "chính chủ" qua nút "Cite this repository" hoặc file CITATION.cff nếu có; dùng DOI qua Zenodo cho repository có ý nghĩa học thuật cao.
- Snippet Stack Overflow phải ghi công theo giấy phép CC BY-SA 4.0 (từ 2018); code do AI sinh ra cần ghi chú trong phương pháp nghiên cứu, không trích dẫn như phần mềm thông thường.
- Trích dẫn đúng chuẩn không thay thế nghĩa vụ tuân thủ giấy phép — repository không ghi giấy phép mặc định vẫn thuộc toàn quyền kiểm soát của tác giả gốc.
- Kiểm tra trùng lặp văn bản (như Kiểm Tra Tài Liệu) không thay thế được công cụ đối chiếu mã nguồn chuyên biệt như MOSS, JPlag.
Nguồn tham khảo: GitHub Octoverse Report (GitHub, 2023); Zenodo/CERN-OpenAIRE (thành lập 2013); GitHub Blog — hỗ trợ CITATION.cff (2021); Stack Overflow — thay đổi giấy phép nội dung sang CC BY-SA 4.0 (2018); MOSS — Alex Aiken, Stanford University (từ 1994).
Biên soạn bởi đội ngũ Kiểm Tra Tài Liệu, Metis JSC — phần mềm kiểm tra đạo văn, trùng lặp cho sinh viên, giảng viên và các đơn vị đào tạo tại Việt Nam.
