Skip to content

LCOJ là gì?

LCOJ (Luyện Code Online Judge) là hệ thống chấm bài lập trình trực tuyến tại luyencode.net. Bạn đọc đề, viết chương trình, nộp lên và nhận kết quả chấm sau vài giây. Ngoài luyện tập, LCOJ còn dùng để tổ chức kỳ thi, làm bài kiểm tra trắc nghiệm và quản lý lớp học.

LCOJ là phần mềm mã nguồn mở, xây dựng dựa trên DMOJVNOJ. Bất kỳ ai cũng có thể tự cài một bản LCOJ cho trường, lớp hay câu lạc bộ của mình.

Hệ thống chấm bài trực tuyến là gì?

Một online judge (hệ thống chấm bài trực tuyến) là trang web tự động chấm chương trình của bạn. Mỗi bài tập có một bộ test mà bạn không nhìn thấy. Khi bạn nộp bài, hệ thống chạy chương trình trên từng test, so sánh kết quả in ra với đáp án rồi trả về kết quả chấm.

Ví dụ với bài "Tính tổng hai số": đề cho hai số nguyên ab, yêu cầu in ra a + b.

cpp
#include <iostream>
int main() {
    long long a, b;
    std::cin >> a >> b;
    std::cout << a + b << '\n';
}

Bạn nộp đoạn code trên. Máy chấm chạy nó với các test ẩn, chẳng hạn input 3 5 phải in ra 8, input -1000000000 -1000000000 phải in ra -2000000000. Nếu mọi test đều đúng, bạn nhận Kết quả đúng (AC). Nếu một test in sai, bạn nhận Kết quả sai (WA); nếu chạy quá lâu, bạn nhận Quá thời gian (TLE).

Ý nghĩa của từng mã kết quả có tại Mã trạng thái.

LCOJ có những gì?

Tính năngĐịa chỉ trên siteDùng đểĐọc thêm
Bài tập/problems/Luyện tập với kho bài lập trình, chấm tự độngNộp bài và chấm bài
Kỳ thi/contests/Thi có giờ, có bảng xếp hạng, nhiều định dạng (IOI, ICPC, AtCoder, VNOJ...)Tham gia kỳ thi
Bài kiểm tra trắc nghiệm/quizzes/Câu hỏi một đáp án, đúng/sai, nhiều đáp án, trả lời ngắn; chấm ngay khi nộpLàm bài trắc nghiệm
Thư viện đề thi/library/Đọc đề thi chính thức (PDF) dạng lật trang, vào làm bài nếu đề có kỳ thiThư viện đề thi
Tổ chức/organizations/Gom người dùng thành nhóm, lớp, trường; có bài tập và kỳ thi riêngTổ chức
Blog, bình luận, báo lỗi/blogs/, /tickets/Chia sẻ bài viết, thảo luận dưới đề, báo lỗi đề bàiBlog, bình luận và báo lỗi

Ai dùng LCOJ?

  • Học sinh, sinh viên luyện lập trình, ôn thi học sinh giỏi, Tin học trẻ, thi vào lớp 10 chuyên Tin, ICPC.
  • Giáo viên tạo lớp (tổ chức), giao bài, ra đề kiểm tra lập trình và trắc nghiệm, theo dõi kết quả của học sinh.
  • Người ra đề soạn bài tập kèm test, checker, grader.
  • Ban tổ chức mở kỳ thi cho câu lạc bộ, trường hoặc cộng đồng.
  • Quản trị viên và người vận hành tự cài LCOJ trên máy chủ riêng để phục vụ đơn vị của mình.

Các khái niệm chính

  • Bài tập (problem) gồm đề bài và bộ test. Người ra đề tải test lên và chọn cách chấm.
  • Bài nộp (submission) là một lần bạn gửi code cho một bài tập.
  • Máy chấm (judge) là máy chạy code trong môi trường cách ly (sandbox), trên test data của bài, rồi trả kết quả về website.
  • Kỳ thi (contest) gom nhiều bài tập vào một khoảng thời gian, kèm bảng xếp hạng.
  • Tổ chức (organization) gom người dùng lại, ví dụ một lớp học. Tổ chức có thể có bài tập và kỳ thi chỉ thành viên mới thấy.
  • Bài kiểm tra trắc nghiệm (quiz) là phần riêng: câu hỏi lấy từ ngân hàng câu hỏi, được website chấm trực tiếp, không cần máy chấm.

Định nghĩa đầy đủ của các thuật ngữ có tại Thuật ngữ.

Chọn lộ trình của bạn

Bạn làĐọc trướcSau đó
Học sinh, người luyện tậpTài khoản và đăng nhập, Nộp bài và chấm bàiTham gia kỳ thi, Làm bài trắc nghiệm, Mã trạng thái
Người ra đềRa đề đầu tiên, Quản lý bài tậpCấu trúc bài tập, Checker, Ví dụ bài tập
Giáo viên, ban tổ chức kỳ thiTổ chức kỳ thi đầu tiên, Tổ chức (nhóm, lớp học)Tạo và quản lý kỳ thi, Các định dạng kỳ thi, Tạo bài trắc nghiệm đầu tiên
Quản trị viên siteHệ thống phân quyền, Quản lý người dùngCấu hình giao diện và nội dung, Rút gọn liên kết
Người vận hành, tự cài đặtKiến trúc hệ thống, Cài đặt với DockerCài đặt judge, Vận hành hằng ngày, Cập nhật hệ thống

Chưa biết bắt đầu từ đâu?

Nếu bạn chỉ muốn giải bài trên luyencode.net, hãy đọc Nộp bài và chấm bài là đủ. Các câu hỏi hay gặp được tổng hợp ở Câu hỏi thường gặp.

Nguồn gốc và giấy phép

LCOJ kế thừa phần lớn mã nguồn từ DMOJ (hệ thống chấm bài của Canada) và VNOJ (bản phát triển của cộng đồng VNOI). Cảm ơn các nhóm phát triển DMOJ và VNOJ đã chia sẻ mã nguồn. Trên nền đó, LCOJ bổ sung thêm những phần như bài kiểm tra trắc nghiệm và thư viện đề thi.

Mã nguồn gồm hai repo chính: lcoj-docker (Docker Compose, script, cấu hình) và lcoj-site (website Django). LCOJ phát hành theo giấy phép AGPL-3.0, xem Giấy phép.

Cần giúp đỡ?