Quy định nộp bài tập

Lập trình Hướng đối tượng


Cập nhật ngày 26 tháng 09 năm 2017

Giới thiệu

Trong môn học Lập trình hướng đối tượng, sinh viên sẽ thực hiện các bài tập và báo cáo bài tập. Những bài tập này là cốt yếu để hiểu, nắm vững các kiến thức trong môn học này và đồng thời là công cụ để tôi đánh giá kết quả học tập của sinh viên. Ở đây, tôi cung cấp đầy đủ những thông tin cần thiết để giúp sinh viên thực hiện tốt các bài tập và báo cáo bài tập này.

Để thực hiện các bài tập này, sinh viên phải sử dụng ngôn ngữ lập trình C# trên chương trình Visual Studio Community 2017. Sinh viên chỉ được sử dụng thư viện .NET được cung cấp bởi Microsoft. Các bạn có thể dùng công cụ Object Browser hoặc truy cập vào trang web MSDN của Microsoft để tham khảo về thư viện .NET.

Đối với bài tập UML, các bạn sẽ không sử dụng ngôn ngữ C#. Thay vào đó, các bạn sẽ sử dụng ngôn ngữ mô hình hóa UML trên phần mềm StarUML hoặc công cụ Class Diagram của Visual Studio Community 2017 để thiết kế và trình bày sơ đồ lớp của các hệ thống cần phân tích.

GitHub Classroom

GitHub Classroom Lập trình hướng đối tượng là công cụ duy nhất để sinh viên lưu và nộp bài làm. Tất cả những tài liệu, bản thiết kế, mã nguồn dự án (project),... thuộc về bài tập, sinh viên đều lưu trữ tại kho (repository) trên GitHub thông qua các lần lưu trạng thái (commit). Do đó, bạn nên đọc kỹ hướng dẫn của GitHub hoặc đọc bài viết Lập trình "an tâm" cùng anh GitHub.

Có hai loại bài tập trong các Classroom:

  1. Bài tập cá nhân (Individual assignment): sinh viên vào liên kết của bài tập sẽ có nút Accept the assignment. Bấm vào đó, GitHub Classroom sẽ tạo cho bạn một kho (repository) mới để bạn làm bài, lưu tài liệu và nộp bài.
  2. Bài tập nhóm (Group assignment): sinh viên đầu tiên của nhóm truy cập vào liên kết của bài tập, điền tên nhóm vào ô Create a new team để tạo một nhóm mới. Các thành viên còn lại của nhóm truy cập vào liên kết của bài tập, chọn tên nhóm của mình trong danh sách các nhóm đã có để tham gia vào. Sau khi thành viên đầu tiên tạo nhóm, GitHub Classroom cũng tự động tạo một kho (repository) mới cho nhóm để làm bài.

Mỗi bài tập trên đều có thời hạn nộp bài. Xem thời hạn nộp bài tại Lịch học của lớp.


Quy định nộp bài tập

Yêu cầu cho mã nguồn chương trình

Bạn phải nộp mã nguồn bài tập của bạn :

  • Mã nguồn của bạn phải được chú thích tốt
    • giải thích những gì bạn đã làm, những lựa chọn cài đặt của bạn, và những biến chính
  • Mã nguồn của bạn phải dễ hiểu và được cấu trúc tốt (dưới dạng hàm và các lớp)
    • mã nguồn của bạn càng dễ hiểu, điểm của bạn sẽ càng cao
    • tránh sao chép trong mã nguồn của bạn
    • nếu bạn sử dụng một số đoạn mã của người khác, hãy chỉ ra nó trong chú thích và trong báo cáo của bạn (của ai, nguồn, URL,...) 
    • tránh lặp lại cùng một đoạn mã để xử lý cùng một vấn đề (hãy sử dụng hàm)
    • chỉ được sử dụng các kỹ thuật đã được học trong hai môn Cơ sở lập trình và Lập trình hướng đối tượng để cài đặt chương trình

Yêu cầu cho bản báo cáo bài tập

Bên cạnh phần mã nguồn chương trình, sinh viên phải nộp một báo cáo không cần có trang tiêu đề, không cần có mục lục và không cần phần giới thiệu. Bạn chỉ cần ghi họ tên của bạn, lớp và tiêu đề của bài thực hành ở trang đầu tiên của báo cáo. Không nêu lại yêu cầu của bài thực hành, cũng như những nội dung được dạy trong khóa học vào báo cáo của bạn. Nên tránh sao chép những nội dung không hữu ích và hãy tập trung vào những nội dung cốt yếu : công việc của bạn, kết quả của bạn và những phân tích của bạn.

Kích thước tối đa của báo cáo : 10 trang

Định dạng tập tin báo cáo: nên xuất ra dạng PDF

Nội dung báo cáo thông thường sẽ có các thành phần sau :

Đối với bài tập lập trình

  • Hoạt động của chương trình của bạn 
    • mô tả cách hoạt động của chương trình
      • khi chương trình chạy thì cái gì hiển thị ra trên màn hình ? người sử dụng sẽ nhập dữ liệu gì vào ? tháo tác thế nào với chương trình ?
    • cú pháp câu lệnh (gọi chạy chương trình) và ý nghĩa của những tham số cần cung cấp trong đối số dòng lệnh (nếu có)
    • vài ví dụ về cách hoạt động, cách sử dụng câu lệnh của chương trình (nếu cần thiết) 
  • Thiết kế chương trình 
    • trình bày cách thiết kế chương trình của bạn 
    • các biến và ý nghĩa của nó 
    • có những phương thức nào và ý nghĩa của nó 
    • áp dụng thuật toán gì hay phương pháp gì đặc biệt 
    • khuyến khích thêm vào các hình ảnh, mô hình để giải thích tốt cho thiết kế chương trình của bạn
  • Kết quả
    • đưa ra một vài kết quả của chương trình của bạn 
    • hãy chọn lựa các kết quả và tham số một cách thông minh để chứng minh hoạt động tốt của chương trình mà không cần phải đưa ra quá nhiều ví dụ 
    • kết quả các test theo yêu cầu của bài tập
  • Trả lời câu hỏi (tùy bài tập)
    • trả lời các câu hỏi bằng cách đưa ra các ví dụ hay kết quả từ chương trình của bạn 
    • sửa đổi chương trình của bạn để trả lời các câu hỏi 
  • Thảo luận / kết luận (tùy ý - rất ngắn) 
    • kết quả của bạn đạt được là tốt hay chưa tốt (giải thích vì sao ?)
    • đâu là giới hạn của chương trình của bạn
    • nếu chương trình của bạn hoạt động không tốt, hãy nêu giải pháp để khắc phục
    • nêu nhận xét về bài thực hành
Những mục trên có thể được thay đổi cho phù hợp với bài tập. Bạn sẽ không bị đánh giá trên chất lượng trình bày của báo cáo, mà được đánh giá trên nội dung của công việc và của báo cáo của bạn. Hãy lựa chọn đưa ra những điểm quan trọng để chứng tỏ hoạt động tốt của chương trình của bạn. 

Đối với bài tập UML

  • Xác định lớp
    • quy trình phát hiện lớp, vì sao đó là lớp mà hệ thống cần có 
    • đặc tả ngắn gọn cho mỗi lớp
    • mỗi lớp có những đặc tính gì, phạm vi của nó, kiểu dữ liệu, giá trị mặc định (nếu có) 
    • mỗi lớp có những hành vi gì, phạm vi của chúng, các tham số và kiểu trả về
  • Xác định các mối quan hệ giữa các lớp 
    • vì sao có các mối quan hệ đó ?
    • xác định tên, vai trò, bản số của các mỗi quan hệ 
    • đặc tả ngắn gọn cho các mối quan hệ này 
    • nên kèm hình ảnh tổng thể của cả mô hình lớp
  • Trả lời câu hỏi (nếu có)
  • Thảo luận / kết luận

Phương pháp đánh giá

Sau đây là những tiêu chuẩn chính để đánh giá các bài làm : 
  • Kết quả đạt được
  • Phân tích kết quả và giải thích 
  • Trả lời câu hỏi (tùy bài tập) 
  • Mã nguồn + hoạt động của chương trình (file .mdj với bài tập UML)
Trên lớp, giáo viên có thể yêu cầu chạy thử hay hỏi một số vấn đề trên công việc của bạn đã làm.

Chú ý : những tiêu chuẩn này, cũng như trọng số, có thể thay đổi tùy vào bài tập. 

Điểm thưởng : đối với những sinh viên (khoảng 10% số sinh viên của lớp) nộp bài sớm trước thời hạn (2 hoặc 3 ngày) và trước những sinh viên khác, một điểm cộng sẽ được tính vào điểm cuối cùng của bài tập đó.

Điểm phạt : 
  • Trễ < 1 ngày : -0.5 điểm 
  • Trễ > 1 ngày : -1 điểm mỗi ngày 
  • Trễ > 1 tuần : điểm 0 
  • Hành vi sao chép là tuyệt đối không được chấp nhận. Nếu bị phát hiện, người sao chép và người cho sao chép sẽ bị điểm 0 đối với bài tập đó