Skip to content

Lập trình - Tương tác (Code Interactive) ​

Code Interactive là sandbox lập trình không có test case. Mục tiêu là tự do thực hành — bạn viết code, chạy, xem output, lặp lại. Phù hợp cho:

  • Bài giảng có ví dụ minh họa cần học viên gõ và chạy thử
  • Thử nghiệm khái niệm mới trước khi vào bài có chấm
  • Workshop / lab session lập trình

Để hiểu cơ chế thực thi (giới hạn thời gian, mạng, các loại lỗi runtime) chung cho tất cả hoạt động lập trình, xem Thực thi Code.

Ngôn ngữ hỗ trợ ​

Tương tự Code Practicing — sandbox chạy được Python 3.11, JavaScript / Node 20, PHP 8.2, Java 21. Ngôn ngữ do giảng viên cố định cho từng activity.

Khác biệt với Code Practicing ​

Code InteractiveCode Practicing
Test casesKhôngCó (chấm tự động)
Cách hoàn thànhĐánh dấu thủ công hoặc theo activity gatingPass hết test cases
Mục đíchHọc, thực hành, thử nghiệmĐánh giá kỹ năng
Áp lựcThấp — không có "đúng/sai"Cao — có pass/fail

Giao diện ​

Đơn giản hơn Code Practicing:

  • Vùng đề bài / hướng dẫn (problem_statement) — yêu cầu / mục tiêu của session
  • Code editor (Monaco) — với starter_code do giảng viên cung cấp
  • Output panel — hiển thị stdout/stderr khi nhấn Run
  • Input panel (tùy bài) — gõ input thủ công cho code đọc qua stdin

Không có panel Test cases — đây là điểm khác biệt chính.

Quy trình làm ​

  1. Đọc problem statement — hiểu mục tiêu của bài (vd: "Viết hàm tính giai thừa và test với n=5, n=10").
  2. Đọc starter code — thường là khung sẵn có cấu trúc (function signature, import, comment hướng dẫn).
  3. Viết code vào editor.
  4. Nhấn Run → xem output.
  5. Sửa, chạy lại — lặp.
  6. Khi cảm thấy đã hoàn thành mục tiêu, nhấn Đánh dấu hoàn thành.

Multi-file project ​

Một số Code Interactive cho phép giảng viên cấu hình nhiều file (vd: main.py + helpers.py):

  • Chuyển file qua tab tên file ở phía trên editor.
  • Sửa file nào cũng được lưu riêng theo tên file.
  • Khi chạy, hệ thống thực thi file chính (file đầu tiên hoặc do giảng viên đánh dấu main); các file còn lại có sẵn trong cùng thư mục để import.

Ví dụ Python:

python
# helpers.py
def square(n):
    return n * n
python
# main.py
from helpers import square
print(square(5))   # → 25

Java tự javac tất cả file .java trong thư mục, rồi chạy class main được chỉ định.

Lưu code ​

Code tự động auto-save mỗi vài giây vào tài khoản của bạn. Khi quay lại sau vài ngày, bạn vẫn thấy code lần cuối — không bị mất.

  • Code lưu theo cặp (user_id, activity_id, filename) — không lẫn giữa các activity hay giữa các user.
  • Đăng nhập từ máy khác → code đồng bộ.
  • Một số khóa cho phép download code thành file .py/.js/… để giữ ở máy.

Reset starter code ​

Nhấn Reset (icon khôi phục) → đưa code về starter_code ban đầu. Hữu ích khi bạn muốn làm lại từ đầu sau khi thử nhiều cách không thành.

WARNING

Reset xóa toàn bộ code bạn đã viết. Cân nhắc copy lưu lại trước khi nhấn.

Hỗ trợ AI ​

Tương tự Code Practicing, có thể có AI helper:

  • Hỏi AI giải thích code, gợi ý sửa lỗi
  • AI không chấm — chỉ giúp học
  • Tốn AI Credit (AI Credits)

Trường hợp dùng phổ biến ​

Workshop "code-along" ​

Giảng viên giảng → bạn gõ theo + chạy → thấy output ngay. Hữu ích cho:

  • Bài giảng cú pháp ngôn ngữ mới
  • Demo thư viện
  • Hướng dẫn thuật toán step-by-step

Sandbox khám phá ​

Sau bài đọc lý thuyết, có Code Interactive cho bạn thử:

  • Viết hàm theo khái niệm vừa học
  • So sánh nhiều cách triển khai
  • Đo performance (vd: dùng time để so sánh thuật toán)

Chuẩn bị cho bài có chấm ​

Trước khi vào Code Practicing có deadline + chấm điểm, làm Code Interactive không áp lực để rèn kỹ năng + tự tin.

Mẹo ​

  1. Đừng vội — đây là chỗ học, không phải chỗ thi. Thử nhiều cách.
  2. Comment code khi thử — viết // thử cách 1: dùng for loop để khi quay lại không quên ý tưởng.
  3. Lưu nháp tốt ra Gist/file local — code Interactive có thể bị reset nếu giảng viên cập nhật starter_code.
  4. Nhấn hoàn thành khi xong — không nhấn = vẫn thấy "đang làm" trong tiến độ khóa học.

Đầu vào (stdin) ​

Nếu activity cho phép, có ô Input bên dưới editor. Mỗi dòng bạn gõ là một dòng stdin:

python
name = input()
print(f"Xin chào, {name}!")

Gõ Lan vào ô Input → chạy → output: Xin chào, Lan!

Xem chi tiết stdin theo từng ngôn ngữ ở Thực thi Code → Đầu vào & đầu ra.

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

Code Interactive có giới hạn thời gian/memory như Code Practicing? Có — sandbox vẫn áp dụng time/memory limit để bảo vệ hạ tầng. Mặc định 5 giây / 128 MB như Code Practicing; giảng viên có thể nới lỏng (10–30s) cho bài cần xử lý dữ liệu lớn.

Tôi muốn nộp code Interactive cho giảng viên review? Code Interactive không có cơ chế nộp. Nếu muốn được feedback, dùng Bài tập (Assignment) — copy code sang đó để nộp.

Output không hiển thị mặc dù tôi đã print()? Kiểm tra:

  • Code có vào hàm main() chưa được gọi?
  • print() đặt sau exception → exception ngắt thực thi (xem tab Stderr).
  • Output bị buffer → thêm sys.stdout.flush() (Python).
  • Code bị TLE → vòng lặp vô hạn → không kịp in ra.

Tôi đổi giảng viên/khóa, code Interactive có theo tôi? Code lưu theo activity_id cụ thể. Nếu bạn được di chuyển sang khóa mới có cùng activity (sao chép), code có thể không theo — kiểm tra với giảng viên.

Tôi có thể chạy code dài hơn 5 giây? Không, trừ khi giảng viên đã nâng time limit cho activity đó. Code Interactive không có nút "tăng time limit theo yêu cầu".

LMS Documentation