• Trang chủ
    • Môn học
    • Kỳ thi
    • Báo lỗi
    • Hướng dẫn

    Codelab · NEU Online Judge

    Hướng dẫn sử dụng Codelab

    Codelab là nền tảng thực hành lập trình, chấm bài tự động và tổ chức thi trực tuyến của Khoa Công nghệ thông tin, Trường Công nghệ, Đại học Kinh tế Quốc dân. Trang này hướng dẫn từng bước toàn bộ hệ thống, kèm ảnh chụp màn hình thật — các số khoanh đỏ trên ảnh tương ứng với các bước (1), (2)… trong phần chữ. Bấm vào ảnh để phóng to.

    Vào kho bài tập Công cụ Kỳ thi Bản in (PDF)

    Bắt đầu nhanh

    Người học

    Chạy thử code, luyện bài theo môn, nộp bài, hỏi trợ giảng AI, học khóa có bài giảng và dự thi.

    Luyện tập →Làm bài →Dự thi →
    Giảng viên

    Soạn bài và test case, sinh đề bằng AI, tạo kỳ thi, giám sát, chấm điểm, xuất kết quả, trình chiếu bài giảng.

    Soạn bài →Tạo kỳ thi →Chấm điểm →
    Quản trị viên

    Theo dõi thống kê và tình trạng hệ thống, quản lý người dùng, phân quyền, xử lý báo lỗi.

    Trung tâm quản trị →Phân quyền →
    Mục lục
    • 🧪Giới thiệu
      • Codelab là gì?
      • Tính năng chính
      • Các phân hệ
      • Lợi ích chính
      • Công nghệ sử dụng
      • Nhà phát triển & liên hệ
    • 🚀Bắt đầu
      • Dùng thử không cần đăng nhập
      • Đăng nhập
      • Đăng ký bằng email
      • Vai trò & quyền
      • Cài đặt tài khoản
    • 🎓Người học
      • Chạy code trên trang chủ
      • Môn học & chủ đề
      • Làm bài & chạy thử
      • Nộp bài & kết quả chấm
      • Trợ giảng AI
      • Khóa học có bài giảng
      • Tham gia kỳ thi
      • Quy tắc giám sát khi thi
      • Báo lỗi
    • 🧰Công cụ thực hành
      • Danh sách công cụ
      • Vẽ đồ thị (Python, R)
      • Phân tích số liệu
      • Toán kinh tế
      • Chạy Python từng bước
      • SQL, Web, Notebook
      • Terminal hệ điều hành
      • Máy chủ & Codespaces
    • 🧑‍🏫Giảng viên
      • Khu quản lý của giảng viên
      • Soạn bài tập
      • Sinh & tinh chỉnh đề bằng AI
      • Tạo kỳ thi
      • Thí sinh & tài khoản tạm
      • Trợ giảng AI trong kỳ thi
      • Giám sát thời gian thực
      • Chấm điểm & xuất kết quả
      • Log trợ giảng AI
      • Trình chiếu trên lớp
      • Quản lý khóa học
    • 🛡️Quản trị viên
      • Trung tâm quản trị
      • Người dùng & phân quyền
      • Nội dung & môn học
      • Xử lý báo lỗi
    • 🔒Công bằng & an toàn
    • ❓Câu hỏi thường gặp
    • 📞Hỗ trợ

    Giới thiệu Codelab

    NEU Online Judge (Codelab) — Khoa Công nghệ thông tin, Trường Công nghệ, Đại học Kinh tế Quốc dân. Nền tảng chấm bài, tổ chức thi lập trình trực tuyến hiện đại, đa tính năng, được thiết kế để đảm bảo sự công bằng, minh bạch và hiệu quả trong việc đánh giá kỹ năng lập trình của người học.

    Codelab (NEU OJ) là gì?

    NEU Online Judge (NEU OJ) là nền tảng chấm bài và tổ chức các kỳ thi lập trình trực tuyến hiện đại, được phát triển nhằm phục vụ nhu cầu học tập và đánh giá kỹ năng lập trình một cách công bằng, minh bạch và hiệu quả. Hệ thống hỗ trợ nhiều tính năng mạnh mẽ như chấm tự động, quản lý kỳ thi, thống kê kết quả, và hỗ trợ đa ngôn ngữ lập trình, giúp nâng cao trải nghiệm học tập và kiểm tra cho sinh viên cũng như giảng viên trong môi trường giáo dục số.

    Ở lõi hệ thống là bộ chấm tự động (Online Judge): người dùng viết code ngay trên trình duyệt, hệ thống biên dịch và chạy code với nhiều bộ dữ liệu kiểm thử (test case) rồi trả về kết quả đúng/sai cho từng bộ. Xung quanh bộ chấm là kho bài tập theo môn học, các khóa học có bài giảng, trợ giảng AI, bộ công cụ thực hành chạy trong trình duyệt và khu quản lý dành cho giảng viên.

    Hệ thống đặt tại fit.neu.edu.vn/codelab. Người học ngoài Đại học Kinh tế Quốc dân dùng địa chỉ codelab.ai.vn/codelab.

    Tính năng chính

    Trình soạn thảo code online

    Trình soạn thảo mạnh mẽ dựa trên Monaco với syntax highlighting, hỗ trợ nhiều ngôn ngữ lập trình.

    Quản lý cuộc thi

    Tạo và quản lý các cuộc thi lập trình với bảng xếp hạng thời gian thực và giám sát toàn diện.

    Thư viện bài tập

    Cơ sở dữ liệu bài tập toàn diện với nhiều cấp độ khó và test case chi tiết.

    Quản lý người dùng

    Hệ thống xác thực người dùng hoàn chỉnh với vai trò, quyền hạn và quản lý hồ sơ.

    Bảng điều khiển

    Công cụ quản trị mạnh mẽ để quản lý cuộc thi, bài tập, người dùng và bài nộp.

    Giám sát thời gian thực

    Theo dõi bài nộp trực tiếp, giám sát cuộc thi và phản hồi tức thì về việc thực thi code.

    Các phân hệ của hệ thống

    Phân hệDành choChức năng chính
    Trang chủ (editor nháp)Mọi người, không cần đăng nhậpViết và chạy thử code trên nhiều ngôn ngữ và môi trường
    Môn họcNgười họcKho bài tập theo chương trình đào tạo và theo ngôn ngữ, chấm tự động
    Khóa học có bài giảngNgười học, giảng viênBài giảng từng buổi, ví dụ chạy được, slide trình chiếu, giấy xác nhận hoàn thành
    Trợ giảng AINgười học đã đăng nhậpTra cứu khái niệm, giải nghĩa lỗi, gợi ý hướng làm, không giải bài hộ
    Công cụMọi ngườiPython, R, phân tích số liệu, toán kinh tế, SQL, Web, Notebook, Terminal chạy ngay trong trình duyệt
    Kỳ thiNgười học, giảng viênThi có giới hạn thời gian, giám sát hành vi theo thời gian thực, xuất điểm
    Quản lý bài tập, kỳ thi, khóa họcGiảng viênSoạn đề và test case, sinh đề bằng AI, tạo kỳ thi, theo dõi tiến độ lớp
    Trung tâm quản trịQuản trị viênThống kê, tình trạng hệ thống, người dùng và phân quyền

    Lợi ích chính

    • ✓Cung cấp môi trường học tập tương tác, hỗ trợ thực hành thuật toán và cấu trúc dữ liệu hiệu quả.
    • ✓Tổ chức các cuộc thi lập trình thời gian thực với hệ thống giám sát toàn diện, đảm bảo công bằng.
    • ✓Theo dõi chi tiết bài nộp và phân tích hiệu suất, giúp người dùng cải thiện kỹ năng lập trình.
    • ✓Hỗ trợ nhiều ngôn ngữ lập trình, đáp ứng sở thích và nhu cầu của các lập trình viên đa dạng.

    Công nghệ sử dụng

    Được xây dựng với các công nghệ hiện đại để đạt hiệu suất tối ưu và trải nghiệm phát triển tốt nhất.

    Next.js 15
    React 19
    TypeScript
    Tailwind CSS
    shadcn/ui
    NextAuth.js
    Socket.IO
    Monaco Editor
    Radix UI
    React Hook Form
    NestJS
    MongoDB
    Redis
    Docker

    Nhà phát triển & liên hệ

    DV
    Developer

    Duy Viett

    Sinh viên ngành Công nghệ Thông tin, Khoa Công nghệ Thông tin, Trường Công Nghệ, Đại học Kinh tế Quốc dân.

    EmailGitHubFacebook

    Có câu hỏi, đề xuất hoặc muốn đóng góp? Hãy liên hệ!

    Email

    [email protected]

    GitHub

    github.com/duyviet2101

    Facebook

    TranDuyViet211

    Được xây dựng với ❤️ bởi Duy Viett • Khoa Công nghệ Thông tin, Trường Công nghệ, Đại học Kinh tế Quốc dân

    Bắt đầu

    Codelab chạy hoàn toàn trên web: chỉ cần trình duyệt Chrome, Edge, Firefox hoặc Safari bản mới, không phải cài phần mềm. Phần này giúp bạn chọn cách vào hệ thống phù hợp.

    Dùng thử không cần đăng nhập

    Khách (chưa đăng nhập) vẫn dùng được khá nhiều chức năng: viết và chạy code trên trang chủ, xem môn học, đọc đề và chạy thử bài tập công khai, dùng phần lớn công cụ thực hành. Tài khoản cần khi nộp bài để chấm, lưu tiến độ, dùng trợ giảng AI và tham gia kỳ thi.

    Chức năng theo loại người dùng
    Chức năngKháchNgười họcGiảng viên
    Chạy code trên trang chủ, chạy thử bài công khaiGiới hạn 10 lần / 20 giây✔✔
    Xem môn học, đọc đề, đọc bài giảng✔✔✔
    Công cụ chạy trong trình duyệt (Python, R, SQL, Web, Terminal…)✔✔✔
    Nộp bài để chấm, lưu lịch sử và tiến độ—✔✔
    Trợ giảng AI—✔✔
    Tham gia kỳ thi—✔✔
    Codespaces, R / C++ trên máy chủ (cần được cấp quyền)—✔✔
    Soạn bài tập, tạo kỳ thi, giám sát, xuất điểm, quản lý khóa học——✔
    Giới hạn dành cho khách
    Khách chạy code tối đa 10 lần trong mỗi 20 giây. Vượt giới hạn, hệ thống báo “Bạn đã gửi quá nhiều yêu cầu. Vui lòng thử lại sau N giây.” Đăng nhập để bỏ giới hạn này.

    Đăng nhập

    Bấm Đăng nhập ở góc phải thanh điều hướng. Có các cách đăng nhập sau:

    1. Sinh viên, giảng viên Đại học Kinh tế Quốc dân
      Bấm Đăng nhập với Microsoft 365 (NEU) (1) và dùng thư điện tử của Đại học. Không cần tạo mật khẩu riêng; email được xác minh sẵn. Nút này chỉ hiện trên địa chỉ fit.neu.edu.vn.
    2. Tài khoản email và mật khẩu
      Nhập Email và Mật khẩu (2) rồi bấm Đăng nhập. Dùng cho tài khoản tự đăng ký, tài khoản do quản trị viên tạo và tài khoản thi tạm thời do giảng viên cấp.
    3. Người ngoài Đại học
      Dùng địa chỉ codelab.ai.vn/codelab. Ở đây có nút Đăng nhập với Google; lần đầu đăng nhập Google, hệ thống tự tạo tài khoản với vai trò bạn chọn ở hàng nút phía trên (🎓 Người học hoặc 🧑‍🏫 Người dạy).
    Hình 1. Màn hình đăng nhập: (1) Microsoft 365 của NEU, (2) email và mật khẩu
    Vào thẳng kỳ thi qua đường link
    Nếu giảng viên gửi link kỳ thi, cứ mở link: hệ thống sẽ yêu cầu đăng nhập rồi đưa bạn quay lại đúng trang kỳ thi đó.

    Đăng ký bằng email

    1. Trên màn hình đăng nhập, bấm Đăng ký ngay.
    2. Điền Họ tên, Email, Mật khẩu (tối thiểu 8 ký tự) và Xác nhận mật khẩu. Trên codelab.ai.vn có thêm mục Bạn là để chọn Người học hoặc Người dạy.
    3. Bấm Đăng ký, sau đó mở hộp thư và bấm vào đường link xác minh. Link chỉ có hiệu lực 24 giờ; không thấy thư thì kiểm tra mục Spam.
    Hình 2. Biểu mẫu đăng ký tài khoản bằng email
    Lưu ý
    Người dùng thuộc Đại học Kinh tế Quốc dân nên dùng nút Đăng ký với Microsoft 365 (NEU) ngay dưới biểu mẫu thay vì tạo mật khẩu riêng. Hệ thống hiện chưa có chức năng tự đặt lại mật khẩu (xem Câu hỏi thường gặp).

    Vai trò & quyền

    Mỗi tài khoản có một trong ba vai trò:

    Vai tròĐược làm gì
    🎓 Người học (Học viên)Luyện tập, nộp bài, học khóa học, dùng trợ giảng AI, tham gia kỳ thi, gửi báo lỗi.
    🧑‍🏫 Giảng viên (Người dạy)Thêm quyền soạn bài tập (kể cả bằng AI), tạo và giám sát kỳ thi, chấm và xuất điểm, xem log trợ giảng AI, quản lý khóa học được giao.
    🛡️ Quản trị viênToàn quyền: thống kê, tình trạng hệ thống, nhật ký lỗi, người dùng và phân quyền, quản trị nội dung theo môn.

    Vai trò được gán thế nào?

    • Email @st.neu.edu.vn → người học.
    • Email @neu.edu.vn đăng nhập bằng Microsoft 365 → giảng viên. Nếu đăng ký bằng email và mật khẩu, tài khoản @neu.edu.vn chỉ thành giảng viên sau khi bấm link xác minh email.
    • Người ngoài Đại học tự chọn vai trò khi đăng ký (hoặc khi đăng nhập Google lần đầu).
    • Người học đã xác minh email có thể tự nâng cấp thành giảng viên trong Cài đặt tài khoản (mục dưới).

    Cài đặt tài khoản

    Mở trang Cài đặt tài khoản (cần đăng nhập; đường link này cũng có trong thư xác minh email). Trang gồm các thẻ:

    ThẻNội dung
    Thông tin tài khoảnHọ tên, Email (nhãn Đã xác minh / Chưa xác minh), Vai trò. Chỉ để xem.
    Xác minh email của bạnChỉ hiện khi email chưa xác minh. Bấm “Gửi mail xác minh” để nhận lại thư.
    Trở thành giảng viênChỉ hiện với người học. Bấm “Nâng cấp lên Giảng viên” — quyền được cấp ngay. Email phải được xác minh trước.
    Vai trò tài khoảnChỉ hiện với giảng viên. Bấm “Chuyển về Người học” nếu muốn quay lại vai trò người học.

    Bấm ảnh đại diện ở góc phải thanh điều hướng để mở menu cá nhân: 💾 Codespaces (dự án code đã lưu), và với giảng viên là 🏫 Quản lý kỳ thi, 📝 Quản lý bài thực hành; với quản trị viên là 🛡️ Trung tâm quản trị. Cuối menu là Đăng xuất.

    Dành cho người học

    Đi theo thứ tự sử dụng: chạy thử code, chọn môn và bài, làm bài và nộp, nhờ trợ giảng AI, học khóa có bài giảng, dự thi và báo lỗi.

    Chạy thử code ngay trên trang chủ

    Trang chủ là một trình soạn thảo code (dựa trên Monaco — cùng lõi với VS Code) dùng được ngay, không cần tài khoản.

    1. Chọn ngôn ngữ ở ô (1). Danh sách có ô tìm kiếm, chia hai nhóm Multiple Files (dự án nhiều tệp với HTML, Java, Python) và Single File.
    2. Viết code vào trình soạn thảo.
    3. Bấm nút ▶ màu xanh (2) (phím tắt Alt + R) để mở khung Run Code. Nếu chương trình cần đọc dữ liệu, nhập vào ô Input (stdin):.
    4. Bấm Chạy Code (hoặc Ctrl + Enter). Khung Output hiện kết quả, thông báo biên dịch, thời gian chạy (Time) và bộ nhớ (Memory).
    Hình 3. Trang chủ Codelab: (1) chọn ngôn ngữ, (2) chạy code

    Bên cạnh các ngôn ngữ phổ biến như C, C++, Java, Python, JavaScript, TypeScript, Go, PHP, Rust, C#, hệ thống còn hỗ trợ R, Kotlin, Swift, Scala, Haskell, Pascal, Fortran, COBOL, Assembly và nhiều ngôn ngữ khác. Nhóm cơ sở dữ liệu gồm SQLite, SQL Server (T-SQL), MySQL 8.0 và MongoDB Shell. Python có thêm bản kèm sẵn thư viện khoa học dữ liệu (numpy, pandas, scikit-learn, matplotlib).

    Hình 4. Danh sách ngôn ngữ có ô tìm kiếm, chế độ nhiều tệp (Multiple Files) và một tệp (Single File)
    Mẹo
    Đã đăng nhập, bạn có thể bấm nút 💾 để lưu đoạn code thành một Codespace và mở lại sau; nút tải xuống lưu tệp code về máy. Nút bàn phím ở cuối thanh công cụ hiện danh sách phím tắt.

    Chọn môn học, chủ đề và bài tập

    Mục Môn học sắp xếp kho bài theo hai cách. Nhóm Theo chương trình đào tạo (1) bám các học phần của Khoa; mỗi thẻ ghi số bài, số chủ đề và nhãn 📖 Có bài giảng nếu môn đã có khóa học.

    Hình 5. Trang Môn học, nhóm theo chương trình đào tạo

    Nhóm Theo ngôn ngữ lập trình (1) gom bài theo Python, Java, C++, C#, JavaScript, TypeScript, Go, PHP, Rust và C. Một bài có thể thuộc đồng thời một môn theo chương trình và một nhóm ngôn ngữ. Nút Xem tất cả chủ đề mở danh sách toàn bộ chủ đề kèm số bài.

    Hình 6. Nhóm môn học theo ngôn ngữ lập trình

    Bấm vào một môn để xem các chủ đề con. Môn có khóa học sẽ có các tab 📖 Bài giảng và ⌨ Bài tập (một số môn có thêm tab 💻 Thực hành hoặc 📊 Phân tích số liệu). Ví dụ môn Python có các chủ đề Nhập môn, Rẽ nhánh, Vòng lặp, Hàm, Chuỗi, OOP và Data Science. Chọn chủ đề (1) để mở danh sách bài.

    Hình 7. Các chủ đề của môn Python

    Trang danh sách bài gồm:

    • Dãy tab lọc theo ngôn ngữ (1) ở phía trên.
    • Ô Tìm kiếm bài tập..., nút Sắp xếp (theo tên, độ khó, trạng thái, ngày tạo) và nút Lọc theo độ khó (Demo, Dễ, Trung bình, Khó).
    • Mỗi bài ghi độ khó (easy / medium / hard), tỉ lệ nộp đúng, số lượt nộp và nhãn 📖 Có đáp án nếu đáp án đã được công khai. Vòng tròn bên trái đánh dấu bài bạn đã giải.
    • Góc trên bên phải là tiến độ của bạn trong chủ đề (số bài đã giải / tổng số).

    Bấm tên bài (2) để vào làm.

    Hình 8. Danh sách bài của chủ đề Python: Rẽ nhánh

    Làm bài và chạy thử

    Màn hình làm bài chia làm hai cột:

    • Cột trái (1) là đề bài: mô tả, định dạng đầu vào, ràng buộc, định dạng đầu ra và ví dụ (có nút sao chép).
    • Cột phải là trình soạn thảo. Thanh công cụ phía trên có: ô chọn ngôn ngữ (2), nút ▶ mở khung chạy thử (3), nút Lưu bài màu đỏ để nộp chấm chính thức (4). Nút vàng ↻ (Reset template) đặt lại khung code mẫu của ngôn ngữ đang chọn.
    • Nút robot ở góc dưới bên phải (5) mở Trợ giảng AI.
    • Dải dọc bên trái (6) chuyển giữa Đề bài, Các lượt nộp, Danh sách bài cùng chủ đề, Trang chủ (về trang Môn học) và Báo lỗi.
    Hình 9. Màn hình làm bài

    Các bước làm một bài

    1. Đọc đề, chọn ngôn ngữ — hệ thống tự nạp khung code mẫu — rồi viết lời giải.
    2. Bấm ▶ (hoặc Alt + T) để mở khung chạy thử, chọn Test mẫu (1) (phím F9) để chạy với các ví dụ trong đề. Mỗi test (2) hiện Input, Output thực tế, Expected Output, thời gian chạy và bộ nhớ.
    3. Muốn thử dữ liệu khác: nhập vào ô input... (1) rồi bấm Input tùy chỉnh (2) (phím Ctrl + Enter). Kết quả hiện ở khung (3).
    4. Khi đã đạt test mẫu, bấm Lưu bài để nộp (nút chỉ bật sau khi bạn đã sửa code). Xem tiếp mục Nộp bài & kết quả chấm.
    Hình 10. Chạy test mẫu: test #1 trả về Accepted
    Hình 11. Chạy với input tùy chỉnh 404, chương trình in CLIENT_ERROR
    Lưu ý
    Mỗi lần chạy có đồng hồ đếm ngược 60 giây và nút Dừng để hủy. Chạy thử chỉ dùng test mẫu công khai; khi nộp, bài còn được chấm thêm các test ẩn, nên kết quả chính thức có thể khác kết quả chạy thử.

    Với bài đã được công khai đáp án sẽ có nút Xem đáp án. Bài làm trên giao diện web (HTML/CSS/JS) có thêm nút xem trước HTML Preview.

    Nộp bài và đọc kết quả chấm

    1. Bấm Lưu bài. Nộp thành công sẽ hiện thông báo Nộp bài thành công kèm liên kết Xem kết quả nộp. Không nộp được code trống.
    2. Trang Chi tiết bài nộp tách hai phần: test mẫu hiện chi tiết từng bộ; phần Test ẩn chỉ ghi số lượng dạng “8/10 test ẩn đạt” kèm nhãn Đạt / Chưa đạt. Nội dung test ẩn được giữ kín để bảo đảm công bằng.
    3. Tab Các lượt nộp (trang Lịch sử nộp bài) liệt kê mọi lần nộp với các cột Kết quả (Đúng / Sai / Đang chờ / Đang xử lý / Lỗi), Ngôn ngữ, Thời gian nộp và nút Chi tiết.

    Các trạng thái chấm

    Trạng tháiÝ nghĩaNên làm gì
    AcceptedĐúng với test—
    Wrong AnswerChạy được nhưng kết quả saiKiểm tra định dạng in ra (khoảng trắng, xuống dòng) và các trường hợp biên
    Time Limit ExceededChạy quá thời gian cho phépTìm vòng lặp vô hạn, chương trình chờ nhập thêm dữ liệu, hoặc thuật toán quá chậm
    Compilation ErrorLỗi biên dịchĐọc thông báo biên dịch; kiểm tra đúng ngôn ngữ/phiên bản đã chọn
    Runtime Error (SIGSEGV, SIGFPE, NZEC…)Lỗi khi chạy: truy cập bộ nhớ sai, chia cho 0, ngoại lệ không bắt…Kiểm tra chỉ số mảng, phép chia, dữ liệu rỗng
    In Queue / ProcessingBài đang chờ hoặc đang chấmChờ vài giây
    Internal ErrorLỗi phía hệ thống chấmNộp lại; nếu lặp lại hãy gửi Báo lỗi

    Trợ giảng AI

    Nút robot ở góc dưới bên phải mở khung Trợ giảng Codelab. Trợ giảng giúp tra cứu khái niệm, cú pháp, giải nghĩa thông báo lỗi và gợi ý các bước tư duy cho đúng bài đang mở. Cần đăng nhập để gửi câu hỏi.

    1. Gõ câu hỏi vào ô “Hỏi về khái niệm, cú pháp, lỗi...”, bấm Enter để gửi (Shift + Enter để xuống dòng).
    2. Câu trả lời hiện dần theo thời gian thực; đoạn code được định dạng riêng cho dễ đọc.
    Hình 12. Khung Trợ giảng Codelab mở bên cạnh bài đang làm

    Khi luyện tập, trợ giảng luôn ở mức Hướng dẫn các bước (“Tra cứu & hướng dẫn các bước — không giải bài hộ”). Trong kỳ thi, mức hỗ trợ do giảng viên đặt và hiện ở dòng phụ đề của khung chat:

    MứcTrợ giảng được làm gì
    TắtKhông có trợ giảng AI trong kỳ thi (không thấy nút robot).
    Chỉ tra cứuGiải thích khái niệm, cú pháp, cách dùng hàm/thư viện, giải nghĩa lỗi. Không gợi ý cách giải bài.
    Hướng dẫn các bướcNhư trên, cộng gợi ý hướng tiếp cận, chia nhỏ bài toán thành các bước tư duy. Không viết code lời giải.
    Không chặn (hỗ trợ tối đa)Hỗ trợ tối đa, kể cả viết code — giảng viên chủ động cho phép để đánh giá kỹ năng dùng AI.
    Trợ giảng không giải bài hộ
    Ở mức Chỉ tra cứu và Hướng dẫn, câu trả lời chứa code lời giải bị chặn và câu hỏi đòi lời giải được đánh dấu — kể cả khi bạn dán đề hay nói “thầy cho phép”. Toàn bộ hội thoại được lưu để giảng viên xem lại; mỗi kỳ thi có thể giới hạn số lượt hỏi.

    Khóa học có bài giảng

    Một số môn có khóa học hoàn chỉnh: SQL, Thiết kế Web và Java. Khóa học nằm ở tab 📖 Bài giảng của trang môn. Trang khóa hiển thị số buổi, thời lượng, số bài thực hành, thanh Tiến độ của bạn, điều kiện hoàn thành (ví dụ “🎯 Hoàn thành khóa: giải được ≥70% số bài thực hành” — tỉ lệ do từng khóa đặt) và lộ trình từng buổi.

    1. Bấm Bắt đầu học — Buổi 1 (1) (khi đã làm bài, nút đổi thành Tiếp tục học — Buổi N), hoặc Vào học → ở thẻ của từng buổi.
    2. Khóa SQL có thêm 📦 Tài liệu & hướng dẫn cài đặt môi trường (2) để thực hành trên máy cá nhân.
    Hình 13. Trang khóa SQL: tiến độ, điều kiện hoàn thành và lộ trình 10 buổi

    Trang bài giảng

    Gồm mục lục bên trái (1), liên kết sơ đồ dữ liệu mẫu dùng chung cho cả khóa (2, khóa SQL), nút 🖨 Tải PDF / In (3), nút 🖥️ Trình chiếu (4) và nút nổi 🧰 Công cụ (5) mở ngăn công cụ ở cạnh dưới. Cuối trang có ← Buổi trước / Buổi tiếp theo →.

    Hình 14. Bài giảng Buổi 1 của khóa SQL

    Mỗi ví dụ SQL trong bài giảng có nút ▶ Chạy thử (1). Bạn chọn chạy trên SQL Server hoặc MySQL, bấm ✎ Sửa để sửa câu lệnh tại chỗ và xem bảng kết quả ngay bên dưới (2).

    Hình 15. Chạy thử câu lệnh SQL ngay trong bài giảng

    Sơ đồ dữ liệu mẫu mô tả 9 bảng của một công ty chứng khoán: Customers, Accounts, Securities, MarketPrices, Orders, Trades, Portfolio, CustomerStats, AuditLog, kèm khóa chính, khóa ngoại và quan hệ.

    Hình 16. Sơ đồ dữ liệu mẫu của khóa SQL

    Ngăn 🧰 Công cụ có các tab tùy môn:

    KhóaCác tab trong ngăn Công cụ
    SQL⌨ Chạy SQL · 📋 Tra cứu cú pháp · 🗂 Bảng & cột · 📊 Dữ liệu & tải về · 📝 Ghi chú của tôi
    Java☕ Chạy Java · 📋 Tra cứu cú pháp · 📝 Ghi chú của tôi
    Thiết kế Web🌐 Chạy Web · 📋 Tra cứu cú pháp · 📝 Ghi chú của tôi

    Tab 📊 Dữ liệu & tải về cho xem toàn bộ dữ liệu từng bảng và tải về dạng Excel, CSV, JSON (1); cũng tải được trọn bộ 9 bảng dưới dạng tệp Excel hoặc kịch bản SQL (2) để thực hành trên máy cá nhân. Khung chạy SQL dùng bản sao dữ liệu mới cho mỗi lần chạy, nên câu lệnh INSERT, UPDATE, DELETE không ảnh hưởng người khác.

    Hình 17. Xem và tải dữ liệu mẫu

    Bài tập thực hành và giấy xác nhận

    Trong mỗi buổi có phần Thực hành — Bài tập của buổi với số bài đã giải. Bấm Làm bài → (1) để mở bài trên màn hình làm bài như mục Làm bài.

    Hình 18. Bài tập thực hành cuối buổi học
    1. Khi đạt tỉ lệ bài yêu cầu, trang khóa hiện “🎓 Bạn đã đủ điều kiện hoàn thành khóa học” và nút Nhận giấy xác nhận.
    2. Trang Giấy xác nhận hoàn thành khóa học có nút 🖨 In / Lưu PDF. Mỗi giấy có một mã xác nhận.
    3. Bất kỳ ai cũng đối chiếu được giấy tại địa chỉ /courses/verify/<mã>: mã hợp lệ hiện “✓ Mã xác nhận hợp lệ” cùng người học, khóa học, kết quả, ngày cấp.

    Tham gia kỳ thi

    Mục Kỳ thi cần đăng nhập. Trang Các kỳ thi có ô tìm kiếm theo tên, bộ lọc Trạng thái (Đang diễn ra / Sắp diễn ra / Đã kết thúc) và nút sắp xếp Mới nhất / Cũ nhất. Mỗi kỳ thi có nhãn Giám sát hoặc Yêu cầu mật khẩu nếu có.

    1. Bấm "Vào thi"
      Với kỳ thi có giám sát, hộp thoại “⚠️ Bạn sắp tham gia kỳ thi” liệt kê các hành vi bị ghi nhận. Đọc kỹ, chờ vài giây rồi bấm Tiếp tục — trình duyệt chuyển sang toàn màn hình.
    2. Bấm "Đăng ký"
      Kỳ thi có mật khẩu sẽ hỏi Nhập mật khẩu gồm 6 ký tự do giảng viên cung cấp. Thời gian làm bài của mỗi người tính từ lúc đăng ký thành công; đồng hồ đếm ngược hiện ở phía trên.
    3. Làm bài
      Làm từng bài như mục Làm bài. Mỗi lần Lưu bài là một lượt nộp được chấm. Code đang viết được tự lưu vào trình duyệt khoảng 5 giây sau mỗi lần sửa, nên lỡ tải lại trang vẫn còn.
    4. Nếu mất mạng
      Bài nộp được giữ lại và tự gửi khi có mạng (góc màn hình báo “Đang chờ gửi lại N bài nộp…”) — không cần bấm nộp lần nữa.
    5. Bấm "Kết thúc" khi làm xong
      Hộp thoại xác nhận có thêm nút Tải về bài thi để lưu bản bài làm. Hết giờ, hệ thống tự kết thúc và đưa bạn về trang chủ sau 5 giây.
    Kỳ thi chưa tới giờ
    Mở link của kỳ thi sắp diễn ra, màn hình hiện “Kỳ thi chưa bắt đầu” và đồng hồ đếm ngược (Ngày / Giờ / Phút / Giây). Đến giờ, trang tự cập nhật và mở đề.

    Quy tắc giám sát khi thi

    Với kỳ thi bật giám sát, màn hình làm bài áp dụng các ràng buộc sau. Mỗi vi phạm hiện cảnh báo “Cảnh báo giám sát” và được gửi ngay về màn hình giám sát của giảng viên.

    Tình huốngĐiều gì xảy ra
    Thoát toàn màn hìnhHiện cảnh báo yêu cầu vào lại ngay; không quay lại trong 3 giây sẽ bị ghi nhận.
    Chuyển tab / chuyển cửa sổBị ghi nhận (có 3 giây ân hạn cho thao tác nhầm).
    Rời / đóng trangTrình duyệt hỏi lại “Bạn có chắc muốn rời khỏi trang thi?” và bị ghi nhận. Tải lại bằng F5 không tính là vi phạm.
    Không thao tác 5 phútBị ghi nhận “không hoạt động”.
    Mất kết nối mạngHiện thông báo kèm nút Tải lại; sự kiện mất/kết nối lại được ghi nhận.
    Dán nội dung chép từ tab/cửa sổ khácBị chặn (“Đã chặn paste từ ngoài”) và ghi nhận. Sao chép trong cùng trang thi vẫn được.
    Kéo-thả nội dung vào trình soạn thảoBị chặn.
    Phím F1–F12, EscBị chặn trong lúc thi.
    Nút Back / vuốt lùiBị chặn (“Không thể quay lại khi đang làm bài”), không tính vi phạm.
    Cần rời chỗ một lát?
    Bấm nút Xin phép tạm thoát ở góc dưới bên phải, ghi lý do rồi bấm Gửi & tạm thoát 60s. Bạn có 60 giây rời màn hình mà không bị tính vi phạm (có dải đếm ngược). Quá 60 giây chưa quay lại sẽ bị ghi nhận. Lý do bạn ghi được hiển thị cho giảng viên.

    Báo lỗi

    Phát hiện đề chưa rõ, test case nghi sai hay lỗi hiển thị? Vào mục Báo lỗi trên thanh điều hướng, hoặc tab Báo lỗi ở dải dọc bên trái màn hình làm bài.

    1. Chọn Loại lỗi (Lỗi giao diện / Lỗi chức năng / Khác), đặt Tiêu đề ngắn gọn.
    2. Chọn Mức độ ưu tiên (Thấp / Trung bình / Cao / Nghiêm trọng) và viết Mô tả chi tiết.
    3. Tùy chọn: mở Thông tin kỹ thuật (Không bắt buộc) để ghi các bước tái hiện lỗi, kết quả mong đợi, kết quả thực tế, trình duyệt và thiết bị; chọn Gửi báo cáo ẩn danh hoặc để lại Email liên hệ.
    4. Bấm Gửi báo cáo. Quản trị viên tiếp nhận và xử lý.
    Hình 19. Biểu mẫu báo lỗi
    Báo lỗi tốt = xử lý nhanh
    Ghi rõ bạn ở bài nào, nhập dữ liệu gì, hệ thống trả về gì và bạn mong đợi kết quả gì.

    Bộ công cụ thực hành

    Các công cụ chạy ngay trong trình duyệt, không cần cài đặt, phục vụ học các môn công nghệ, dữ liệu và toán kinh tế. Phần lớn chạy trên máy bạn — dữ liệu không gửi lên máy chủ.

    Danh sách công cụ

    Menu Công cụ (1) trên thanh điều hướng mở danh sách công cụ. Mục Xem tất cả công cụ (2) mở trang Công cụ, sắp xếp theo ba nhóm: Công nghệ thông tin; Khoa học dữ liệu & Dữ liệu; Toán kinh tế & Thống kê. Công cụ cần tài khoản có nhãn Cần đăng nhập.

    Hình 20. Menu Công cụ trên thanh điều hướng
    Hình 21. Trang tổng hợp công cụ theo nhóm môn
    Công cụDùng đểĐăng nhập
    📈 Vẽ đồ thị & tính toán (Python, R)Python (numpy, pandas, scipy, sympy, matplotlib) và R chạy trong trình duyệt, hiện đồ thị ngay cạnh code: giải phương trình, thống kê, vẽ biểu đồ.Không cần
    🧮 Toán kinh tếQuy hoạch tuyến tính (đơn hình, giá mờ, đồ thị), ma trận và mô hình Leontief, NPV/IRR, lịch trả nợ, cung – cầu và thuế.Không cần
    📐 Vẽ sơ đồ phân tích thiết kếERD (tạo từ SQL), UML (use case, hoạt động, tuần tự, lớp…), DFD, BFD bằng Mermaid/PlantUML; vẽ kéo thả bằng draw.io; xuất SVG/PNG.Không cần
    📊 Phân tích số liệuThống kê mô tả, kiểm định, hồi quy kiểu SPSS/Stata bằng R; dữ liệu ở lại trên máy bạn.Không cần
    🔍 Chạy Python từng bướcXem từng dòng chạy, biến, khung gọi hàm, list/dict/object thay đổi ra sao: dễ hiểu vòng lặp, đệ quy, cấu trúc dữ liệu.Không cần
    🗄️ SQLBộ dữ liệu chứng khoán HNX nạp sẵn, kèm câu mẫu và danh sách bảng – cột; chạy trên SQL Server hoặc MySQL.Không cần
    🍃 NoSQLRedis, Cassandra (CQL), Neo4j (Cypher) và MongoDB với dữ liệu mẫu nạp sẵn: khoá – giá trị, cột rộng, đồ thị, tài liệu.Không cần
    🖧 Mạng & Kiến trúc máy tínhChia mạng con IPv4/VLSM, định tuyến Dijkstra và Bellman–Ford từng bước, đổi cơ số, bù 2, IEEE 754, rút gọn mạch logic, mô phỏng bộ nhớ đệm.Không cần
    📓 Notebook PythonJupyterLite: viết và chạy notebook như Jupyter.Không cần
    🖥️ R / C++ trên máy chủChạy R, C++ (OpenMP) nhiều nhân trên máy chủ Codelab cho bài toán lớn; cần được cấp quyền.Cần
    🔀 Automat & văn phạmBiểu thức chính quy → NFA → DFA → DFA tối thiểu có đồ thị; chạy thử chuỗi; FIRST/FOLLOW, bảng LL(1), khử đệ quy trái.Không cần
    💻 Terminal hệ điều hànhLinux, FreeBSD, OpenBSD, Minix, Unix V7, Windows CMD, PowerShell: gõ lệnh ngay trong trình duyệt.Không cần
    🔐 Hộp công cụ mật mãBase64/Hex, hàm băm, HMAC; Caesar, Vigenère, Affine, Playfair và phá mã bằng tần suất; RSA, Diffie–Hellman từng bước; AES-GCM/CBC.Không cần
    🗂️ CodespacesCác không gian code bạn đã lưu trên Codelab.Cần

    Vẽ đồ thị & tính toán (Python, R)

    Công cụ Vẽ đồ thị & tính toán chạy Python hoặc R ngay trong trình duyệt và hiện đồ thị bên cạnh code; chọn ngôn ngữ ở nút Python / R trên thanh tiêu đề. Python có sẵn numpy, pandas, scipy, sympy, matplotlib, statsmodels; R tự tải gói khi gọi library(). Chỉ cần chạy code thông thường thì dùng editor ở trang chủ.

    1. Chọn một ví dụ ở ô Ví dụ mẫu… (1), hoặc tự viết code.
    2. Muốn dùng dữ liệu của mình, bấm Tải file (3) để nạp tệp CSV (đọc trong code với tên data.csv).
    3. Bấm Chạy (2) (hoặc Ctrl + Enter). Kết quả và đồ thị hiện bên dưới; Dừng để ngắt, Xoá để dọn kết quả.
    Hình 22. Phòng tính toán Python: mô phỏng phân phối điểm và vẽ biểu đồ
    Hình 23. Hồi quy tuyến tính trên bộ dữ liệu mtcars bằng R, kèm đồ thị

    Phân tích số liệu không cần viết code

    Phân tích số liệu dành cho sinh viên các ngành kinh tế làm khảo sát, nghiên cứu khoa học. Phép tính chạy bằng R ngay trong trình duyệt; dữ liệu ở lại trên máy bạn.

    1. 1. Dữ liệu: bấm Tải file CSV / Excel, hoặc chọn Dữ liệu mẫu (1) — ví dụ bộ khảo sát Likert.
    2. 2. Phép phân tích (2): Thống kê mô tả, Bảng tần số; So sánh 2 nhóm (t-test), So sánh nhiều nhóm (ANOVA), Chi bình phương; Tương quan, Hồi quy tuyến tính; Cronbach’s alpha; Histogram, Boxplot theo nhóm, Biểu đồ phân tán.
    3. Chọn biến (3), bấm Chạy phân tích (4). Kết quả hiện ở khung Kết quả.
    Hình 24. Kiểm định độ tin cậy thang đo bằng Cronbach's alpha

    Mục Xem code R sẽ chạy (1) hiện đoạn code R tương ứng — vừa có kết quả, vừa học được cách viết lệnh R.

    Hình 25. Boxplot điểm trung bình theo giới tính và đoạn code R tương ứng

    Toán kinh tế

    Toán kinh tế có bốn tab:

    TabChức năngNút
    Quy hoạch tuyến tínhNhập hàm mục tiêu và ràng buộc; bài hai biến có hình miền khả thi, bảng giá mờ và trạng thái từng ràng buộcGiải · ↺ Ví dụ mẫu
    Ma trận & LeontiefMô hình Input–Output (Leontief); ma trận và hệ phương trìnhTính tổng sản lượng · Tính
    Tài chínhThẩm định dự án: NPV, IRR, hoàn vốn; lịch trả nợTính · Lập lịch
    Cung – cầuĐiểm cân bằng thị trường, tác động của thuếTính cân bằng
    Hình 26. Giải bài toán quy hoạch tuyến tính hai biến
    Hình 27. Tab Tài chính: NPV, IRR, thời gian hoàn vốn và lịch trả nợ

    Chạy Python từng bước

    Chạy Python từng bước cho thấy chương trình chạy từng dòng — hợp với Nhập môn lập trình và Cấu trúc dữ liệu.

    1. Chọn ví dụ ở ô Ví dụ… (đệ quy, sắp xếp nổi bọt, tìm kiếm nhị phân, lãi kép, danh sách liên kết…) hoặc tự viết code. Nếu code có input(), nhập dữ liệu vào ô Dữ liệu nhập cho input().
    2. Bấm ▶ Chạy từng bước (Ctrl + Enter).
    3. Bấm Tiếp ▶ (1) / ◀ Lùi hoặc phím mũi tên để đi tới, lùi. Khung Khung gọi hàm (stack) và Đối tượng (heap) (2) cho thấy giá trị biến, list, dict thay đổi ra sao; khung Đã in ra hiện output. Tối đa 1000 bước.
    Hình 28. Theo dõi thuật toán sắp xếp nổi bọt qua từng bước

    SQL, Web, Notebook Python

    SQL có các Câu mẫu: (1), chọn SQL Server hoặc MySQL (2), xem 📋 Bảng & cột (3) và bấm ▶ Chạy (4) (Ctrl + Enter). Mỗi lần chạy dùng một bản sao dữ liệu mới, nên câu lệnh INSERT, UPDATE, DELETE không lưu lại và không ảnh hưởng người khác. ↺ Đặt lại đưa câu lệnh về mặc định.

    Hình 29. SQL trên dữ liệu chứng khoán mẫu

    Soạn HTML, CSS, JavaScript và xem kết quả: dùng editor ở trang chủ với ngôn ngữ HTML (nhiều file, có khung xem trước).

    Notebook Python là JupyterLite — viết và chạy notebook như Jupyter, ngay trong trình duyệt.

    Hình 30. Notebook Python dựa trên JupyterLite

    Terminal hệ điều hành

    Terminal dùng cho học phần Hệ điều hành và các môn cần dòng lệnh.

    • Ô Chọn hệ điều hành (1): Linux (Alpine) là máy ảo thật chạy trong trình duyệt, có sẵn bash, vim, nano, gcc, python. Nhóm Unix gồm FreeBSD 12, OpenBSD 6.6, Minix 3.3 và Unix V7 (1979) — ảnh hệ điều hành thật được giả lập trong trình duyệt. Windows CMD và Windows PowerShell là môi trường giả lập để học lệnh.
    • Dải Thử: (2) gợi ý lệnh để bấm chạy thử.
    • Với Linux, nhóm nút (3) Lưu home (lưu thư mục home vào trình duyệt), Tải lên (đưa tệp vào máy ảo), Tải về (lấy tệp ra).
    • Nút Trình chiếu (4) chuyển sang chữ lớn, nền sáng để chiếu trên lớp; ngoài ra có chỉnh cỡ chữ, nền sáng/tối, khởi động lại và toàn màn hình.
    Hình 31. Terminal Linux chạy thật trong trình duyệt

    Windows CMD và PowerShell giúp học các lệnh dir, copy, type, tệp .bat, pipeline đối tượng và các cmdlet như Get-ChildItem, Get-Process.

    Hình 32. Giả lập Windows Command Prompt
    Hình 33. Giả lập PowerShell với pipeline và cmdlet
    Hình 34. Chế độ trình chiếu của Terminal: nền sáng, chữ lớn
    Lưu ý
    Lần đầu mở Linux hoặc các bản Unix, trình duyệt cần tải ảnh hệ điều hành nên có thể mất một lúc; các lần sau nhanh hơn nhờ bộ nhớ đệm.

    R / C++ trên máy chủ và Codespaces

    R / C++ trên máy chủ

    R / C++ trên máy chủ chạy R, C++ (OpenMP) nhiều nhân cho bài toán lớn. Cần đăng nhập và được quản trị viên cấp quyền (chưa có quyền sẽ thấy “Chưa được cấp quyền”). Đính kèm dữ liệu bằng Đính kèm dữ liệu, bấm Chạy trên máy chủ và theo dõi trạng thái: Đang chờ, Đang chạy, Hoàn tất, Lỗi, Quá giờ, Hết RAM, Đã huỷ.

    Codespaces

    1. Trên trang chủ (đã đăng nhập), bấm nút 💾, nhập Tiêu đề rồi Lưu.
    2. Mở menu ảnh đại diện → 💾 Codespaces để xem trang Codespaces của tôi: tiêu đề, ngôn ngữ, trạng thái (Public/Private), lần cập nhật cuối; Chỉnh sửa hoặc Xoá; Tạo mới.
    3. Khi mở codespace của mình, code được tự lưu sau mỗi 5 giây. Chia sẻ bằng mã QR (“Quét mã QR để mở codespace này”); người khác mở sẽ lưu thành bản sao của họ.

    Dành cho giảng viên

    Tài khoản giảng viên dùng được mọi chức năng của người học, cộng thêm khu quản lý bài tập, kỳ thi và khóa học. Xem cách nhận quyền giảng viên ở mục Vai trò & quyền.

    Khu quản lý của giảng viên

    Bấm ảnh đại diện ở góc phải → 🏫 Quản lý kỳ thi hoặc 📝 Quản lý bài thực hành. Khu quản lý (tiêu đề Trung tâm quản trị) có ba tab:

    TabDùng để
    Quản lý kỳ thiDanh sách kỳ thi bạn tạo hoặc được chia sẻ; nút Thêm kỳ thi, Giám sát nhiều ca; menu từng dòng: Bài nộp, Giám sát, Chỉnh sửa.
    Quản lý bài tậpNgân hàng bài tập dùng chung cho luyện tập và kỳ thi; nút Thêm bài tập, Tạo bài bằng AI.
    Quản lý khóa họcSoạn khóa học có bài giảng, bộ slide, bài thực hành; xem dashboard tiến độ lớp.

    Soạn bài tập

    1. Tab "Quản lý bài tập" → "Thêm bài tập"
      Điền Tên bài tập, Trạng thái (Bản nháp / Công khai / Riêng tư), Độ khó (Dễ / Trung bình / Khó), nhãn chủ đề (ô List câu hỏi), Nội dung câu hỏi, Định dạng đầu vào, Ràng buộc, Định dạng đầu ra, Ghi chú. Chọn Nhiều file đầu vào nếu là bài nhiều tệp và Chọn ngôn ngữ hỗ trợ.
    2. Tab "Test cases"
      Bấm Thêm test case, nhập Đầu vào và Đầu ra; tích Test case mẫu nếu muốn hiện test này trong đề (các test còn lại là test ẩn). Có thể thêm Giải thích. Nhiều test thì dùng Tải lên file zip (tối đa 10 MB, có Tải file mẫu để xem cấu trúc).
    3. Tab "Ngôn ngữ"
      Với từng ngôn ngữ, đặt Template (khung code ban đầu người học thấy) và Đáp án (lời giải mẫu). Bài nhiều tệp bật Bật Multiple Files trong Cấu hình Multiple Files.

    Chấm bài SQL theo trạng thái cơ sở dữ liệu

    Với câu INSERT, UPDATE, DELETE, thủ tục, trigger…, kết quả in ra không đủ để chấm. Mở mục Chấm bài SQL nâng cao (tùy chọn) trong test case, chọn Bộ dữ liệu mẫu (seed) và nhập Câu truy vấn kiểm tra trạng thái DB: hệ thống chạy bài của người học trên một cơ sở dữ liệu tạm, rồi chạy câu kiểm tra và so sánh với kết quả mong đợi.

    Công khai đáp án

    Trên trang làm bài, người tạo bài (hoặc quản trị viên) bấm Xem đáp án rồi chọn 🌐 Công khai đáp án (sinh viên cũng xem được); bỏ bằng 🔒 Bỏ công khai. Bài đã công khai đáp án có nhãn 📖 Có đáp án trong danh sách.

    Sinh và tinh chỉnh đề bằng AI

    1. Ở tab Quản lý bài tập, bấm Tạo bài bằng AI. Lần đầu, hệ thống yêu cầu nhập mật khẩu tính năng AI (do quản trị viên cung cấp) — lớp bảo vệ để tránh gọi AI ngoài ý muốn.
    2. Trong hộp thoại Tạo bài tập bằng AI, mô tả Yêu cầu bài toán (ví dụ “Tạo bài toán về mảng, dùng prefix sum”), chọn Độ khó và Ngôn ngữ chính cho bài toán.
    3. Bấm ✨ Tạo bài bằng AI. AI soạn đề tự đủ (tên, mô tả, input/output, ràng buộc), tự phản biện và sửa tối đa ba vòng. Đầu ra của test case được lấy bằng cách chạy lời giải mẫu thật trên hệ thống chấm, không do AI tự đặt; lời giải mẫu được lưu làm đáp án.
    4. Với bài do AI tạo, trang sửa bài có khung Chỉnh sửa bằng AI: mô tả thay đổi (“Làm cho đề bài khó hơn”, “Thêm ví dụ minh hoạ”…) rồi bấm Gửi yêu cầu.
    Luôn rà lại trước khi dùng
    AI tạo bản nháp tốt, nhưng hãy đọc lại đề và kiểm tra test case trước khi đưa vào kỳ thi thật.

    Tạo kỳ thi

    1. Tab "Quản lý kỳ thi" → "Thêm kỳ thi"
      Điền Tên kỳ thi, Mô tả, Thời gian bắt đầu, Thời gian kết thúc, Thời lượng (phút); bật Chế độ giám sát nếu cần; chọn Trợ giảng AI khi thi. Khoảng từ bắt đầu đến kết thúc phải lớn hơn thời lượng (vì mỗi người tính giờ từ lúc đăng ký). Kỳ thi mới được lưu ở trạng thái bản nháp.
    2. Mở "Chỉnh sửa" để hoàn thiện
      Trang sửa có các tab Chi tiết, Bài tập, Quản trị viên, Log AI, Cài đặt.
    3. Chọn trạng thái
      Trong Chi tiết, đặt Trạng thái: Bản nháp / Công khai / Riêng tư / Mật khẩu truy cập. Với Mật khẩu truy cập, nhập Mật khẩu đúng 6 ký tự. Bấm Cập nhật kỳ thi.
    4. Tab "Bài tập"
      Bấm Thêm bài tập, tìm theo tên hoặc đề bài, lọc theo trạng thái, độ khó, tag rồi thêm vào kỳ thi. Kéo thả để sắp xếp thứ tự.
    5. Tab "Quản trị viên"
      Bấm Thêm quản trị viên để mời đồng nghiệp cùng coi thi, cùng chấm, với quyền xem hoặc Sửa.

    Xuất đề thi ra Word

    Nút Xuất đề (.docx) mở hộp thoại Xuất đề thi theo mẫu đề thi chuẩn của Đại học Kinh tế Quốc dân: nhập Tên môn học, Mã đề, Ngày thi, Thời lượng (phút), Khoá, ghi chú; tích In link vào thi, In mật khẩu; chọn phần nội dung cần in (tên bài, nội dung, đầu vào, đầu ra, ràng buộc), Cỡ chữ, Đề 2 cột, và Xuất đề tiếng Anh (100% English) nếu cần bản tiếng Anh.

    Thí sinh và tài khoản tạm

    Tab Cài đặt → mục Quản lý thí sinh:

    • Chế độ truy cập: Truy cập tự do (ai cũng đăng ký được) hoặc Giới hạn theo danh sách (chỉ người có trong danh sách).
    • Bảng thí sinh có cột Đăng ký, Trạng thái (Đang tham gia / Đã rời / Hết giờ / Chưa đăng ký), Còn lại, Thao tác.
    • Cộng giờ cho một thí sinh: bấm vào giá trị ở cột Còn lại, sửa Thời gian còn lại (phút) rồi Lưu.
    • Gỡ một người: Huỷ đăng ký hoặc Thu hồi quyền tham gia.

    Tài khoản thi tạm thời

    1. Bấm Thêm tài khoản tạm, chọn Thêm 1 tài khoản hoặc Thêm nhiều (1–200 tài khoản mỗi lần, tên mặc định “Sinh viên 01”…).
    2. Mật khẩu 6 chữ số chỉ hiện một lần: bấm Sao chép hoặc Tải Excel để lưu lại và phát cho thí sinh.
    3. Kỳ thi tự chuyển sang Giới hạn theo danh sách. Thi xong, dùng Xoá TK tạm để xoá toàn bộ tài khoản tạm.

    Trợ giảng AI trong kỳ thi

    Mục Trợ giảng AI khi thi có bốn mức (mặc định Tắt):

    MứcAI được làm gìDùng khi
    TắtKhông cho dùng AI.Thi truyền thống
    Chỉ tra cứuKhái niệm, cú pháp, hàm, giải nghĩa lỗi — không hướng dẫn giải.Thi ngặt nhưng vẫn cho tra cứu
    Hướng dẫn các bướcGợi ý hướng, chia bước tư duy — không viết code lời giải.Kiểm tra có hỗ trợ định hướng
    Không chặn (hỗ trợ tối đa)AI làm mọi thứ, kể cả viết code.Đánh giá kỹ năng dùng AI để giải quyết vấn đề

    Khi chọn mức khác Tắt, đặt thêm hạn mức cho mỗi sinh viên:

    TrườngÝ nghĩaGiá trị 0
    Số lượt hỏi tối đa / SVTổng số câu hỏi trong cả kỳ thiKhông giới hạn
    Token vào tối đa / lượtĐộ dài tối đa của một câu hỏiKhông giới hạn
    Token ra tối đa / câu trả lờiĐộ dài tối đa của câu trả lờiMặc định 600
    Số lượt chat / phút / SVChống hỏi dồn dậpMặc định 10

    Giám sát thời gian thực

    1. Một kỳ thi: ở menu dòng của kỳ thi, chọn Giám sát. Nhiều ca cùng lúc: bấm Giám sát nhiều ca → Chọn ca thi → Bắt đầu giám sát; Thêm ca để bổ sung.
    2. Màn hình cập nhật tức thời (trạng thái Đang kết nối / Mất kết nối; nút Làm mới).
    3. Tab Hoạt động vi phạm liệt kê từng sự kiện (chuyển tab, chuyển cửa sổ, thoát toàn màn hình, rời trang, không hoạt động, mất mạng, dán từ ngoài, quá giờ tạm thoát…) kèm lý do thí sinh ghi khi xin tạm thoát.
    4. Tab Thí sinh lọc Đang làm bài / Chưa vào / Đã kết thúc, với các cột số bài AC, điểm, lần nộp cuối và số vi phạm.

    Chấm điểm và xuất kết quả

    Bảng kết quả

    Ở menu dòng của kỳ thi, chọn Bài nộp: xem toàn bộ bài nộp và bảng xếp hạng; Xuất Excel tải bảng xếp hạng (họ tên, số bài đã giải, tổng điểm); Re-run tất cả chấm lại mọi bài nộp (ví dụ sau khi sửa test case).

    Xuất điểm

    Bấm Xuất điểm trên màn hình giám sát (hoặc tích nhiều kỳ thi trong danh sách để xuất gộp). Tệp Excel gồm Mã SV, Họ tên, Đề, Điểm, Pass test, Đánh giá lập trình & tư duy, Đánh giá hành vi. Các tùy chọn:

    Tùy chọnGiá trị
    Phương pháp chấm điểmA. Test case (theo số test đúng) · B. Heuristic (chỉ Python — phân tích mẫu code) · C. AI (chấm theo đề, đáp án và tiêu chí của giảng viên; cần mật khẩu tính năng AI)
    Thang điểm/10 · /100 · Theo test case (mỗi bài 100)
    Thêm cột “Đánh giá hành vi”Cảnh báo các dấu hiệu đáng chú ý: code trùng nhau giữa thí sinh, nộp dồn dập (spam-submit), lẫn cú pháp giữa các ngôn ngữ (ví dụ JS/Java)…
    Loại tài khoản testBỏ các tài khoản không phải mã sinh viên khỏi bảng điểm

    Nút Tải bài làm tải toàn bộ bài nộp thành một tệp ZIP sắp theo thư mục.

    Chấm minh bạch
    Kết hợp kết quả test case, chấm AI (khi cần, chỉ để tham khảo — giảng viên quyết định cuối cùng), log trợ giảng và cột đánh giá hành vi giúp đánh giá vừa chính xác vừa công bằng, nhất là với kỳ thi cho phép dùng AI.

    Log trợ giảng AI

    Tab Log AI trong trang sửa kỳ thi (trang Log Trợ giảng AI) cho xem lại toàn bộ hỏi–đáp của thí sinh với trợ giảng:

    • Lọc theo thí sinh để đọc riêng hội thoại của từng người.
    • Tích Chỉ lượt nghi đòi giải bài để lọc nhanh các câu hỏi bị hệ thống đánh dấu là cố nhờ AI giải hộ.
    Lưu ý
    Nên báo trước cho người học rằng mọi hỏi–đáp với trợ giảng đều được lưu và giảng viên có thể xem.

    Trình chiếu bài giảng trên lớp

    Trong trang bài giảng, nút 🖥️ Trình chiếu biến bài giảng thành bộ slide toàn màn hình. Thanh công cụ (1) gồm:

    NútPhímChức năng
    ☰ Mục—Nhảy tới slide bất kỳ
    🎤 Giảng viên—Mở cửa sổ “Màn hình giảng viên”: thời gian đã trình bày, slide đang chiếu, slide kế tiếp, ghi chú; đồng bộ với màn hình chiếu
    ⌨ Công cụSChạy SQL, tra cứu cú pháp (C), lược đồ dữ liệu
    ✏️ VẽDBút, bút dạ quang để đánh dấu trên slide
    ⏱ (Hẹn giờ)TĐồng hồ đếm ngược cho phần làm bài tại lớp
    🎲 (Gọi tên ngẫu nhiên)RNhập danh sách lớp rồi bấm 🎲 Quay; có tùy chọn “Không gọi trùng”
    ⬛ (Tắt màn hình)BTạm che màn hình chiếu
    📝 Ghi chúNGhi chú của giảng viên
    A− / A++ / −Phóng to, thu nhỏ chữ
    🌙 Nền tối / ☀ Nền sáng—Đổi nền
    ⛶ Toàn màn hìnhFBật/tắt toàn màn hình

    Chuyển slide bằng ← →, PageUp/PageDown, Space, Home/End; thoát bằng Esc hoặc nút Thoát.

    Hình 35. Chế độ trình chiếu bài giảng và thanh công cụ của giảng viên
    Hình 36. Công cụ gọi tên ngẫu nhiên khi trình chiếu
    Hình 37. Vẽ trực tiếp lên slide

    Quản lý khóa học

    1. Tab Quản lý khóa học → Tạo khóa học, hoặc mở khóa có sẵn. Đặt điều kiện Hoàn thành khóa khi giải được ≥ X % (người đạt sẽ nhận giấy xác nhận), Công khai toàn bộ khóa, Thêm buổi.
    2. Mỗi buổi soạn ở Nội dung giảng dạy (markdown). Cú pháp mở rộng: {{practice:3.1}} chèn nhóm bài thực hành ({{practice:all}} cho tất cả), {{figure:…}} chèn hình, khối SQL có dòng -- @run sẽ có nút Chạy thử, > **Lưu ý:** tạo hộp lưu ý.
    3. Bộ slide trình chiếu: mỗi slide bắt đầu bằng # Tiêu đề; khối :::note là ghi chú chỉ giảng viên thấy (không chiếu lên màn hình); có thêm :::cols, :::reveal, :::sandbox để chia cột, hiện dần và chèn khung chạy code.
    4. Giảng viên ảo: thêm khối :::say vào slide để viết lời giảng; ở chế độ trình chiếu, người học bấm Nghe giảng (G) để giảng viên ảo đọc thành tiếng, hiện phụ đề và tự chuyển màn. Viết câu ngắn, không dùng ký hiệu (viết «x bình phương», không viết «x²»); dùng [dừng 2] để im lặng 2 giây, [nghĩ 5: câu hỏi] để người học tự nghĩ có đếm ngược.
    5. Người quản trị bài giảng: thêm email giảng viên khác (đã từng đăng nhập Codelab) để cùng sửa bài giảng, slide, bài tập và xem tiến độ.
    6. Theo dõi lớp: Tiến độ học viên (có Xuất Excel) và 📊 Dashboard; Xem trang học viên để xem đúng giao diện người học.
    Chỉ số trên DashboardÝ nghĩa
    Học viên đã làm bàiSố người đã nộp ít nhất một bài của khóa
    Hoàn thành khóaSố người đạt điều kiện hoàn thành
    Đang kẹtNgười nộp sai từ 3 lần trở lên ở cùng một bài
    Hoạt động 7 ngàyHoạt động trong 7 ngày gần nhất
    Tiến độ trung bìnhTỉ lệ bài đã giải trung bình của lớp

    Dashboard còn có biểu đồ Lượt nộp 14 ngày gần nhất, thống kê Theo buổi học, danh sách Bài khó nhất và bộ lọc người học Đang kẹt / Hoàn thành / Lâu không vào.

    Dành cho quản trị viên

    Quản trị viên có mọi quyền của giảng viên, cộng thêm khu vực thống kê, tình trạng hệ thống, người dùng và phân quyền.

    Trung tâm quản trị

    Bấm ảnh đại diện → 🛡️ Trung tâm quản trị (chỉ hiện với quản trị viên). Trang có ba tab:

    TabNội dung
    Tổng quan & Thống kêThẻ Tổng số lần chạy code, Số lần chạy hôm nay, Kích thước Database; biểu đồ Số lần chạy code theo thời gian (30 ngày gần nhất), Trạng thái kết quả, Ngôn ngữ lập trình.
    Hệ thống & LogSức khỏe hạ tầng; Log lỗi ứng dụng (tìm theo message/url); Hàng đợi xử lý bài; Lượt dùng công cụ (7/30/90 ngày: lượt mở, lượt chạy, số trình duyệt, số tài khoản); log thô. Nút Tải lại để cập nhật.
    Người dùng & Phân quyềnTìm kiếm, lọc theo vai trò, đổi vai trò, vô hiệu hóa tài khoản, tạo người dùng mới.

    Người dùng & phân quyền

    1. Tìm người dùng bằng ô “Tìm kiếm theo tên hoặc email...”, lọc bằng Lọc theo vai trò. Bảng có các cột Người dùng, Loại đăng nhập, Trạng thái, Vai trò, Ngày tạo.
    2. Đổi vai trò ngay trên dòng: chọn Sinh viên, Giáo viên hoặc Quản trị.
    3. Khóa/mở tài khoản bằng cột Trạng thái: Hoạt động / Vô hiệu.
    4. Tạo tài khoản: Thêm người dùng → nhập Họ và tên, Email → Tạo người dùng. Hệ thống sinh Mật khẩu tạm thời và chỉ hiện một lần — hãy gửi cho người dùng ngay.
    Lưu ý
    Các tài khoản super-admin luôn mang vai trò Quản trị và không đổi được trên giao diện. Quyền dùng công cụ R / C++ trên máy chủ được cấp riêng qua nút Người dùng trong chính công cụ đó.

    Nội dung và môn học

    • Quản trị nội dung theo môn: trên trang một môn học, quản trị viên thấy liên kết Quản trị nội dung. Nhập email (ví dụ [email protected]) rồi bấm Thêm để cho người đó xem đáp án mẫu của các bài thuộc môn.
    • Người quản trị bài giảng: mỗi khóa học có danh sách giảng viên được sửa bài giảng, slide, bài tập và xem tiến độ (xem Quản lý khóa học).
    • Quản trị viên xem, sửa được mọi bài tập, kỳ thi và khóa học trong khu quản lý của giảng viên.

    Xử lý báo lỗi

    Trang /reports/admin (Quản lý báo cáo lỗi) tập hợp báo lỗi người dùng gửi:

    • Thẻ thống kê: Tổng báo cáo, Chờ xử lý, Đang xử lý, Đã giải quyết, Đã đóng, Đã từ chối.
    • Tab Tất cả / Chờ xử lý / Đang xử lý / Đã giải quyết / Đã đóng; tìm kiếm và lọc theo loại lỗi, mức độ ưu tiên.
    • Bấm vào một báo cáo để mở trang chi tiết (mô tả, thông tin kỹ thuật, email liên hệ nếu có). Bấm Chỉnh sửa để đổi trạng thái, mức độ ưu tiên, thêm Ghi chú admin và — khi chọn Đã giải quyết — Ghi chú giải quyết, rồi Lưu thay đổi.

    Công bằng và an toàn khi chấm

    • Mỗi bài nộp chạy trong môi trường cách ly, bị giới hạn thời gian và bộ nhớ.
    • Máy chấm đặt trong mạng riêng, không truy cập được dữ liệu người dùng.
    • Bài SQL và MongoDB chạy trên một cơ sở dữ liệu tạm riêng cho từng lượt nộp, xóa ngay sau khi chấm.
    • Test ẩn chỉ báo đạt hay không đạt, không lộ nội dung.
    • Mỗi lượt nộp có mã định danh riêng, nên mạng chập chờn hay bấm lại nhiều lần cũng không sinh bài nộp trùng.
    • Trợ giảng AI dùng mô hình ngôn ngữ chạy trên máy chủ của Đại học; mọi hội thoại được lưu để giảng viên đối chiếu.

    Câu hỏi thường gặp

    Hỗ trợ

    Gặp sự cố khi thi, lỗi hệ thống hoặc cần trợ giúp về tài khoản? Gửi báo lỗi ngay trong hệ thống, hoặc liên hệ đội hỗ trợ Codelab.

    [email protected][email protected]
    Để được hỗ trợ nhanh
    Ghi rõ họ tên, mã sinh viên/lớp (nếu có), tên kỳ thi hoặc bài tập, thời điểm xảy ra lỗi và ảnh chụp màn hình. Lỗi về đề bài, test case nên gửi qua mục Báo lỗi.

    Bản hướng dẫn rút gọn để in: huong-dan.pdf · bản web cũ huong-dan.html. Giao diện thực tế có thể thay đổi theo phiên bản; khi có khác biệt, ưu tiên theo hệ thống. Thắc mắc khác gửi Văn phòng Khoa Công nghệ thông tin qua trang Liên hệ. Codelab — Khoa Công nghệ thông tin, Trường Công nghệ, Đại học Kinh tế Quốc dân.