Đọc luận văn CNTT mẫu và kho mã mở để học cách người khác chia mô-đun, tổ chức dữ liệu, đánh giá và trình bày. Không bê mã của họ vào sản phẩm của bạn: đổi tên biến, đổi giao diện không biến mã đó thành của bạn, và vẫn là vi phạm liêm chính nếu không ghi nhận.
Kho mã mở là thư viện học tập lớn nhất mà sinh viên công nghệ thông tin có được. Đọc mã của các dự án tốt dạy bạn nhiều điều về kiến trúc mà giáo trình không dạy hết. Nhưng cũng chính vì mã có sẵn và chạy được, không ít khoá luận dừng ở mức tải về, đổi tên, thêm vài chức năng rồi nộp. Ranh giới giữa học và chép trong ngành này cần được nói rõ.
Đọc gì, học gì
Mỗi nguồn dạy một điều khác nhau. Đọc có mục tiêu giúp bạn không bị cuốn vào việc sao chép.
| Nguồn | Học được | Không nên lấy |
|---|---|---|
| Luận văn đã bảo vệ cùng hướng | Cách phát biểu bài toán, khung chương, mức độ chi tiết của thiết kế và đánh giá | Đoạn văn chương lý thuyết, bảng số liệu thực nghiệm |
| Kho mã mở của dự án lớn | Cách chia mô-đun, đặt tên, xử lý lỗi, viết kiểm thử, tổ chức cấu hình | Mô-đun nguyên khối để làm phần cốt lõi của đề tài |
| Kho mã của khoá luận khoá trước | Phạm vi vừa sức, các bẫy kỹ thuật họ gặp | Toàn bộ dự án để sửa thành sản phẩm của mình |
| Bài hướng dẫn, mẫu dự án | Cách dựng khung ban đầu, cách dùng thư viện | Toàn bộ ứng dụng mẫu làm sản phẩm khoá luận |
Đọc kho mã mở như người học kiến trúc
Bắt đầu từ cấu trúc thư mục
Trước khi đọc dòng mã nào, xem cách dự án chia thư mục: tầng giao diện, tầng xử lý, tầng dữ liệu nằm ở đâu, cấu hình tách ra thế nào, kiểm thử đặt cạnh mã hay riêng. Vẽ lại sơ đồ khối bằng tay. Bạn đang học cách người có kinh nghiệm tổ chức một hệ thống.
Theo một luồng từ đầu đến cuối
Chọn một chức năng, ví dụ đăng ký tài khoản, lần theo từ chỗ nhận yêu cầu tới chỗ ghi cơ sở dữ liệu và trả kết quả. Ghi lại mỗi bước đi qua lớp nào, vì sao tách như vậy. Đây là cách nhanh nhất để hiểu một kiến trúc.
Ghi chú bằng lời của mình
Sổ ghi chú nên chứa nhận xét kiểu “dự án này tách phần kiểm tra quyền thành một lớp trung gian, mọi yêu cầu đi qua đó”, không chứa đoạn mã chép lại. Khi thiết kế hệ thống của mình, bạn dùng ý tưởng từ ghi chú, viết mã mới, và ghi trong luận văn rằng kiến trúc tham khảo từ dự án nào.
Đọc luận văn mẫu: mỗi chương một câu hỏi
Mở đầu
Bài toán được phát biểu bằng mấy câu, phạm vi được giới hạn ra sao? Ghi lại cách họ nói điều không làm; đây là kỹ năng nhiều sinh viên thiếu.
Phân tích và thiết kế
Họ chọn những sơ đồ nào, sơ đồ nào thật sự giúp hiểu hệ thống, sơ đồ nào chỉ để cho đủ? Họ có giải thích quyết định thiết kế không, giải thích bằng cách nào?
Đánh giá và kết luận
Họ đánh giá bằng gì, có ca kiểm thử, phép đo, người dùng thử không? Kết luận có khớp với điều đã đo không? Một luận văn mẫu có phần đánh giá yếu vẫn dạy bạn được điều gì đó: dạy bạn điều cần làm tốt hơn.
Danh mục tài liệu
Họ dẫn những nguồn nào cho phần tổng quan? Danh mục này là gợi ý tốt để bạn tìm đọc tiếp, nhưng hãy đọc nguồn gốc trước khi dẫn, đừng chép nguyên danh mục.
Vì sao bê mã là vi phạm dù đã sửa?
Đổi tên biến không tạo ra tác phẩm mới
Cấu trúc, trình tự, cách tổ chức của chương trình là phần trí tuệ của người viết. Đổi tên biến, đổi thứ tự hàm, thêm chú thích là thay đổi bề mặt. Các công cụ so sánh mã dùng trong giảng dạy phát hiện được kiểu thay đổi này khá tốt, nhưng dù không bị phát hiện thì bản chất vẫn không đổi.
Khoá luận chấm năng lực của bạn
Sản phẩm khoá luận là bằng chứng bạn có năng lực phân tích, thiết kế, cài đặt. Nộp mã của người khác như của mình là nộp bằng chứng giả. Đó là lý do vấn đề này được xử lý như gian lận học thuật, không phải như lỗi trình bày.
Có thể vi phạm giấy phép
Mã mở có giấy phép. Dùng mà không giữ thông báo bản quyền, hoặc dùng mã không có giấy phép, có thể vi phạm quyền tác giả ngoài chuyện liêm chính.
Khi nào dùng lại mã là hợp lệ?
Dùng như thư viện, có ghi nhận. Nhúng một thư viện hoặc một mô-đun mã mở để làm phần phụ trợ, ghi rõ nguồn và giấy phép, phần cốt lõi của đề tài vẫn do bạn làm.
Kế thừa dự án có thoả thuận. Phát triển tiếp dự án của khoá trước khi người hướng dẫn giao, có ghi rõ phiên bản xuất phát và phần bạn bổ sung. Đóng góp của bạn được đánh giá trên phần bổ sung.
Đóng góp vào dự án mã mở. Đề tài là cải tiến một dự án mã mở có thật; luận văn mô tả rõ trạng thái trước, phần bạn thay đổi, và kết quả. Đây là hướng hay nếu bạn đã tham gia cộng đồng dự án.
Tình huống: hai cách dùng cùng một kho mã
Cách thứ nhất. Một sinh viên tìm được kho mã quản lý thư viện trên mạng, đổi giao diện sang tiếng Việt, thêm chức năng gia hạn sách, nộp như sản phẩm tự xây dựng. Khi bảo vệ, phản biện hỏi về cách xử lý giao dịch mượn trả đồng thời; sinh viên không trả lời được vì không viết phần đó.
Cách thứ hai. Một sinh viên khác đọc cùng kho mã, ghi chú cách họ tách tầng dữ liệu và xử lý mượn trả, tự thiết kế hệ thống quản lý tủ sách cho các lớp ở một trường tiểu học với yêu cầu khác hẳn (giáo viên mượn theo lớp, sách luân chuyển giữa các lớp). Luận văn ghi rõ kiến trúc tham khảo từ kho mã nào. Phần cốt lõi là bài toán luân chuyển, hoàn toàn do sinh viên làm.
Những việc không nên làm khi dùng kho mã tham khảo
Mỗi việc dưới đây đều từng khiến khoá luận bị đánh giá lại hoặc huỷ kết quả ở nhiều nơi.
- Tải dự án về, xoá lịch sử phiên bản và thông tin tác giả gốc.
- Nhờ hoặc thuê người khác viết phần cốt lõi rồi nộp như của mình.
- Dùng công cụ biến đổi mã để làm khác hình thức mã đã chép.
- Chép đoạn văn mô tả kiến trúc trong tệp hướng dẫn của dự án vào chương thiết kế.
- Nộp cùng một sản phẩm cho hai môn học hoặc hai bậc học mà không khai báo.
Quy trình tham khảo an toàn
Năm bước giúp bạn học được nhiều mà vẫn trung thực.
- Chốt bài toán và yêu cầu của mình trước khi tìm kho mã tham khảo.
- Đọc hai ba dự án cùng loại, ghi chú kiến trúc bằng lời, không chép mã vào dự án của mình.
- Thiết kế hệ thống của mình trên giấy, giải thích được từng quyết định.
- Viết mã mới; chỗ nào dùng thư viện hay đoạn mã có sẵn thì ghi nguồn ngay lúc dùng.
- Trong luận văn, có một đoạn nêu các dự án đã tham khảo và điều học được từ mỗi dự án.
Câu hỏi thường gặp
Đọc mã nguồn mở rồi viết lại theo ý hiểu có bị coi là chép không?
Nếu bạn học ý tưởng, tự thiết kế và tự viết mã mới, ghi nguồn kiến trúc tham khảo, thì đó là học tập hợp lệ. Nếu bạn gõ lại gần như từng dòng thì vẫn là sao chép.
Có được dùng lại mã từ khoá luận của khoá trước không?
Chỉ khi người hướng dẫn giao đề tài phát triển tiếp, có ghi rõ phiên bản xuất phát và phần đóng góp mới. Tự ý lấy dùng mà không ghi nhận là vi phạm.
Phần mềm kiểm trùng có so sánh được mã nguồn không?
Một số công cụ chuyên so sánh mã được dùng trong giảng dạy và phát hiện được việc đổi tên biến, đổi thứ tự. Tuy vậy, câu hỏi đúng là bạn đã ghi nhận đủ chưa.
Ghi nguồn kiến trúc tham khảo như thế nào?
Một đoạn trong chương thiết kế nêu tên dự án, nơi công bố, điều bạn học được, và trích dẫn trong danh mục tài liệu tham khảo theo kiểu trường bạn quy định.
Tìm kho mã tham khảo ở đâu cho đáng tin?
Ưu tiên dự án có tài liệu, có kiểm thử, có cộng đồng duy trì và giấy phép rõ. Kho mã cá nhân không có mô tả thì chỉ nên đọc để tham khảo cách làm.
Dùng ứng dụng mẫu của khung phát triển làm khởi đầu có được không?
Được khi bạn ghi rõ khởi đầu từ mẫu nào và phần lớn sản phẩm cuối là do bạn phát triển thêm. Nộp gần nguyên ứng dụng mẫu thì không có đóng góp để chấm.