Further Programming là nơi hai kỹ năng bạn tưởng không liên quan gặp nhau: viết Java sâu hơn, và làm việc nhóm trên cùng một codebase. Kỳ nào cũng có nhóm nộp bài muộn không phải vì code khó, mà vì bốn người sửa cùng một file và đêm cuối không ai merge được của ai.
COSC2440 khác gì Programming 1?
Nếu COSC2081 Programming 1 dạy bạn viết một chương trình chạy được, Further Programming đòi chương trình đó được thiết kế tử tế: generics, collections framework, xử lý exception nghiêm túc, đọc ghi file, và tùy kỳ có thể chạm tới giao diện (JavaFX) hoặc kiểm thử đơn vị. Assignment lớn các kỳ trước thường là group project: một hệ thống quản lý nhiều chức năng, nộp kèm lịch sử Git.
Nội dung và cấu trúc assessment đổi theo kỳ; bài này mô tả mặt bằng các kỳ trước. Course guide trên Canvas là chuẩn duy nhất.
Cấu trúc đánh giá (tính tới 2026): các kỳ gần đây môn thường trộn ba nhóm điểm: bài kiểm tra hoặc quiz theo tuần (nắm lý thuyết), assignment/task cá nhân hoặc nhóm (phần nặng điểm nhất, chính là thứ bài này hướng dẫn), và bài đánh giá cuối kỳ. Kỳ 2026 của bạn dùng đúng cấu hình nào, trọng số bao nhiêu: mở course guide trên Canvas để đối chiếu trước khi phân bổ thời gian.
Ba khối kiến thức đáng đầu tư nhất
- Collections + generics: chọn đúng cấu trúc (List, Map, Set) cho từng bài toán và hiểu vì sao. Đề chấm thiết kế thường soi đúng chỗ này.
- Exception handling: chương trình sập khi nhập sai là mất điểm oan. Mọi input người dùng đều phải được đón lỗi.
- Đọc ghi file: gần như kỳ nào project cũng cần lưu dữ liệu; viết phần này sớm vì nó ảnh hưởng thiết kế mọi class khác.
Group project: chia module, không chia file
Sai lầm phổ biến nhất là chia việc theo kiểu "mỗi đứa một chức năng" mà không thống nhất khung trước. Cách chia đúng:
- Buổi đầu: thiết kế chung. Cả nhóm chốt sơ đồ class và interface giữa các phần trước khi ai viết dòng nào. Một giờ ở đây tiết kiệm một tuần cuối kỳ.
- Chia theo module có ranh giới rõ, mỗi module một người sở hữu, giao tiếp qua interface đã chốt. Hai người không bao giờ cùng sửa một file.
- Git kỷ luật: mỗi người một branch, merge về main qua pull request nhỏ và thường xuyên. Merge mỗi tuần một lần thì xung đột là chuyện 10 phút; dồn tới đêm cuối là thảm họa kinh điển.
- Tích hợp sớm: bản chạy được đầu tiên ghép mọi module (dù mỗi module mới có chức năng tối thiểu) nên tồn tại trước deadline ít nhất 2 tuần.
Phần teamwork ngoài code (phân việc, xử lý thành viên biến mất, peer assessment) tụi mình viết riêng một bài đầy đủ: group assignment RMIT: chia việc và xử lý free-rider. Mọi nguyên tắc trong đó áp dụng nguyên vẹn, thêm một điều duy nhất: với project code, "bằng chứng đóng góp" chính là lịch sử commit của bạn.
Nếu nhóm bạn có bản chạy được nhưng không chắc thiết kế đạt band cao (tách trách nhiệm giữa các class, dùng generics đúng chỗ), tụi mình nhận review code và báo cáo kèm theo trước khi nộp. Chi tiết ở bảng báo giá.
Câu hỏi thường gặp
Chưa vững Programming 1 có nên học tiếp COSC2440 không?
Nếu bạn còn mơ hồ về OOP (class, inheritance, interface), hãy ôn lại phần đó trước tuần 1 vì môn này mặc định bạn đã vững. Cú pháp quên được, tư duy OOP thì không.
Trong nhóm mỗi người code một kiểu, làm sao thống nhất?
Chốt convention ngay buổi đầu: cách đặt tên, format (dùng auto-format của IDE), ngôn ngữ comment. Đây là một dòng trong team charter, và nó khiến phần chấm "code quality" không bị kéo xuống bởi sự chắp vá.
Điểm group project có chia theo đóng góp không?
Tùy kỳ, nhiều kỳ có peer assessment và lịch sử Git được xem như bằng chứng. Kiểm tra course guide, và commit đều tay từ tuần đầu.
Cần hỗ trợ 1-1 cho môn này? Xem bảng giá và quy trình nhận hỗ trợ của 7 Writing Service.