Skip to content

Soạn hoạt động lập trình ​

Module Hoạt động lập trình thêm tám loại hoạt động vào bài học, từ đọc hiểu một đoạn code, viết chương trình được máy chấm bằng bộ test, tới lập trình kéo khối cho người chưa gõ được cú pháp. Trang này đi qua bảy loại: mỗi loại có ô nào trên form, học viên làm gì, khi nào hoạt động tự hoàn thành. Loại thứ tám, Lưới Blockly, có trang riêng: Soạn hoạt động Lưới Blockly.

Ai dùng ​

  • Người quản lý khoá học và Quản trị viên: tạo và sửa hoạt động trong khoá.
  • Tài khoản khác cần quyền sửa hoạt động của khoá đó.

Đường vào ​

Cần tổ chức bật module Hoạt động lập trình cùng module BlocklyRuntime mà nó phụ thuộc — thiếu BlocklyRuntime thì cả tám loại đều không có trong menu.

Trong Course Builder, thêm hoạt động vào một bài và chọn một loại lập trình, rồi mở trang sửa hoạt động (/admin/activities/<mã hoạt động>/edit). Các ô riêng của từng loại nằm dưới phần thông tin chung (tiêu đề, mô tả, trạng thái…). Phần thông tin chung và các thiết lập có ở mọi loại (thử thách hoàn thành, cho xem trước, lịch sử nội dung, khối code nhúng trong bài đọc…): Thiết lập chung của hoạt động.

Chọn loại nào ​

Tên loại trong menu và trên form hiện bằng tiếng Anh, giữ nguyên như dưới đây.

LoạiHọc viên làm gìChấm thế nàoCần module chạy code
Code ReadingĐọc một đoạn code, gõ kết quả nó in raSo với Expected ResultKhông
Code InteractiveViết và chạy code tự do theo đề bàiKhông chấmCó
Code Terminal ExerciseViết chương trình in ra đúng một kết quảSo output với Kết quả mong đợiCó
Code PracticingViết chương trình qua được bộ testChạy từng test caseCó
Code InspectionTrò chuyện với AI về một đoạn code, trả lời câu hỏi của AIAI đánh giá theo tiêu chí, viết báo cáoKhông (cần AI)
BlocklyKéo khối để dẫn nhân vật qua mê cungTrong trình duyệtKhông
Python TurtleViết Python, vẽ hình bằng turtleBộ tiêu chí không cần viết codeKhông
Lưới BlocklyDẫn nhân vật qua lưới bằng khối hoặc mãMáy chấm ở máy chủKhông

"Module chạy code" là module Thực thi code của tổ chức: chạy code của học viên trong một hộp cát trên máy chủ. Tổ chức chưa bật module này thì các loại cần nó vẫn tạo và sửa được, nhưng học viên bấm chạy sẽ không chạy được. Cơ chế, giới hạn và lỗi thường gặp phía học viên: Thực thi Code.

Ba ô dùng chung ​

Code Interactive, Code Terminal Exercise và Code Practicing có chung ba ô; Code Reading chỉ dùng ô đầu.

ÔNội dung
LanguagePython (mặc định), JavaScript, Java, PHP, C, C++. Quyết định code của học viên được chạy bằng ngôn ngữ nào.
Problem StatementĐề bài, có định dạng, chèn ảnh và công thức toán.
Starter CodeCode điền sẵn trong ô soạn của học viên. Để trống nếu học viên bắt đầu từ trang trắng. Nút Đặt lại của học viên đưa ô soạn về đúng đoạn này.

Code chạy trong hộp cát với giới hạn mặc định: 5 giây, 128 MB bộ nhớ, không có mạng. Ra đề sao cho lời giải chạy xong trong vài giây và không cần tải gì từ Internet. Mỗi học viên chạy được tối đa khoảng 30 lần mỗi phút (mặc định); vượt thì học viên thấy "Bạn đã chạy quá nhiều lần trong một phút. Thử lại sau … giây — lượt này không bị tính là một lần nộp."

Code Reading ​

Học viên đọc một đoạn code rồi gõ kết quả nó in ra.

ÔNội dung
LanguageNgôn ngữ của đoạn code (để hiển thị).
CodeĐoạn code học viên đọc.
Expected ResultKết quả đúng. Học viên không thấy ô này.

Học viên thấy "Nhập kết quả của mã sau", gõ vào ô Kết quả và bấm Kiểm tra. Hệ thống bỏ khoảng trắng ở hai đầu cả hai bên rồi so nguyên văn: hoa/thường, dấu cách giữa các dòng và xuống dòng đều tính. Khớp thì hoạt động hoàn thành.

Mẹo: chọn đoạn code in ra kết quả ngắn, một dòng (một con số, một từ). Kết quả nhiều dòng thì học viên rất dễ lệch một dấu cách.

Code Interactive ​

Một ô soạn code có nút Chạy, để học viên tự viết và thử theo đề bài. Dùng ba ô dùng chung, không có ô riêng.

Loại này không chấm: hệ thống chỉ lưu code học viên viết, để lần sau mở lại đúng chỗ. Muốn hoạt động được tính hoàn thành, bật Cho phép hoàn thành thủ công (học viên tự bấm hoàn thành) hoặc đặt một thử thách hoàn thành. Xem Thiết lập chung của hoạt động.

Code Terminal Exercise ​

Học viên viết một chương trình, bấm Chạy, và hoạt động hoàn thành khi chương trình in ra đúng kết quả bạn đặt.

Ngoài ba ô dùng chung, có thêm:

ÔNội dung
Kết quả mong đợiOutput mà code của học viên phải in ra để vượt qua bài. Được so sau khi bỏ khoảng trắng ở hai đầu.

Mỗi lần Chạy, chương trình chạy một lần, không nhập được dữ liệu từ bàn phím; ra đề không đòi người dùng nhập. Đạt khi chương trình kết thúc bình thường và output (bỏ khoảng trắng hai đầu) trùng từng ký tự với Kết quả mong đợi. Học viên thấy "Kết quả khớp với đáp án mong đợi." hoặc "Kết quả chưa khớp với đáp án mong đợi — hãy thử lại."

  • Để trống Kết quả mong đợi thì bài không chấm, chỉ chạy được (giống Code Interactive).
  • Kết quả mong đợi chỉ gồm đúng số 0 hiện không được chấm. Cho chương trình in thêm chữ, ví dụ Tong: 0.
  • Lượt bị chặn vì chạy quá nhanh, hoặc vì hệ thống chạy code đang trục trặc, không bị tính là một lần làm sai.

Code Practicing ​

Học viên viết chương trình, hệ thống chạy nó với từng bộ dữ liệu vào và so output với kết quả mong đợi. Qua hết các test thì hoạt động hoàn thành.

Ngoài ba ô dùng chung, có thêm:

ÔNội dung
Test Cases (JSON)Danh sách test case. Mỗi test có input (dữ liệu đưa vào chương trình) và expected_output (kết quả phải in ra).
SolutionLời giải tham khảo. Học viên thấy nút Xem lời giải sau hai lần chạy chưa đạt (đếm lại khi tải lại trang). Để trống thì không có nút này.

Viết test case ​

Ví dụ cho bài "đọc hai số trên một dòng, in ra tổng":

json
[
  {"input": "1 2", "expected_output": "3"},
  {"input": "5 10", "expected_output": "15"},
  {"input": "-4 4", "expected_output": "0"}
]

Lời giải Python tương ứng:

python
a, b = map(int, input().split())
print(a + b)

Cách máy chấm làm:

  • input được đưa vào chương trình như dữ liệu gõ từ bàn phím (đầu vào chuẩn). Nhiều dòng thì viết \n trong chuỗi, ví dụ "3\n1 2 3".
  • Output của chương trình và expected_output được bỏ khoảng trắng ở hai đầu rồi so nguyên văn, phân biệt hoa/thường. Nếu cả hai là JSON (mảng hoặc đối tượng) thì được so theo nội dung, không tính cách xuống dòng hay thứ tự khoá.
  • Chương trình chạy lỗi (ví dụ ném ngoại lệ) thì test đó trượt.
  • Câu trả lời chỉ đạt khi mọi test đều qua.

Học viên thấy toàn bộ test

Sau mỗi lần chạy, học viên thấy bảng Kết quả kiểm tra với Đầu vào, Kết quả mong đợi, Kết quả của bạn và Trạng thái của từng test. Không có test ẩn. Đừng dựa vào việc giấu test để chống "in sẵn đáp án"; hãy có đủ test với dữ liệu khác nhau để một chương trình in cứng kết quả không qua được.

Ô Test Cases (JSON) phải là JSON hợp lệ. Hãy chạy thử lời giải của bạn với từng input trước khi đăng: một test viết sai là học viên không bao giờ qua được bài và không hiểu vì sao.

Code Inspection ​

Học viên đọc một hoặc nhiều tệp code và trò chuyện với một AI mentor. AI hỏi, học viên trả lời; cuối phiên AI viết Báo cáo tổng kết theo các tiêu chí bạn đặt và hoạt động được đánh dấu hoàn thành. Hợp với bài "đọc hiểu thuật toán", "tìm lỗi trong đoạn code này", "giải thích vì sao đoạn này chạy chậm".

Các ô nằm trong khối Cấu hình Đọc hiểu mã nguồn:

ÔNội dung
Ngôn ngữPython, Java, JavaScript hoặc PHP. Bắt buộc. Code không được chạy, chỉ để đọc.
Tệp mã nguồnMột hoặc nhiều tệp, mỗi tệp có Tên tệp (ví dụ main.py) và Nội dung tệp. Kéo lên xuống để đổi thứ tự.
Mục tiêu học tậpBắt buộc. Học viên cần thể hiện điều gì. Ví dụ: Thể hiện sự hiểu biết về thuật toán bubble sort và độ phức tạp của nó.
Tin nhắn mở đầuBắt buộc. Tin nhắn đầu tiên AI mentor gửi để bắt đầu phiên.
Số câu hỏi tối đaSố lượt hội thoại tối đa, mặc định 20. Phải lớn hơn hoặc bằng số tiêu chí đánh giá.
Tiêu chí đánh giáMỗi dòng một điểm kiến thức hoặc kỹ năng AI sẽ đánh giá. Ví dụ: Xác định logic hoán đổi (swap) và giải thích vì sao cần đến nó. Có sẵn ba dòng trống; dòng để trống bị bỏ khi lưu.
Hướng dẫn bổ sung cho AI MentorTuỳ chọn: giọng văn, trọng tâm, điều cần tránh. Ví dụ: Không tiết lộ đáp án về logic hoán đổi cho đến khi học viên hỏi.

Phiên kết thúc khi AI thấy học viên đã thể hiện đủ các tiêu chí, hoặc khi hết Số câu hỏi tối đa. Khi đó AI viết báo cáo, hoạt động hoàn thành, và học viên đọc lại báo cáo được. Nút Luyện tập lại cho học viên làm một phiên mới.

Lưu ý:

  • Mỗi tin nhắn và bản báo cáo là một lượt gọi AI, nên tổ chức cần cấu hình AI ở Cài đặt → Trí tuệ nhân tạo. Chưa cấu hình thì học viên thấy lời nhắn báo quản trị viên, và hoạt động không bị đánh dấu hoàn thành.
  • Dịch vụ AI quá tải hay quá chậm thì học viên được báo gửi lại; lượt hỏng không tính vào số câu hỏi tối đa.
  • Đặt Số câu hỏi tối đa dư ra so với số tiêu chí (ví dụ 3 tiêu chí → 8–10 lượt) để học viên có chỗ hỏi lại và sửa câu trả lời.

Blockly ​

Lập trình kéo khối kiểu mê cung, chạy và kiểm hoàn toàn trong trình duyệt của học viên. Dùng cho người mới, học sinh nhỏ, buổi làm quen với tư duy lập trình. Nếu cần máy chấm ở máy chủ, khối khởi đầu, lời giải mẫu được kiểm, hay cho học viên gõ mã, dùng Lưới Blockly.

ÔNội dung
Toolbox Config (JSON)Bộ khối học viên được dùng, chia theo nhóm (biến, di chuyển, quyết định, vòng lặp, hàm, toán, văn bản).
Game Config (JSON)Mê cung: kích thước ô, bản đồ, màu sắc.

Hoạt động mới đã có sẵn một bộ khối và một mê cung mặc định. Hai ô là JSON thô, chỉ nên sửa khi bạn biết cấu trúc của chúng; để trống thì dùng cấu hình mặc định. Kiểm tra kết quả bằng cách mở hoạt động như học viên trước khi đăng.

Vì chấm trong trình duyệt, đây là đánh giá để luyện tập, không chống gian lận.

Python Turtle ​

Học viên viết Python ngay trong trình duyệt và thấy hình con rùa (turtle) vẽ ra trên canvas. Code chạy hoàn toàn trong trình duyệt, không cần module chạy code. Hợp với người mới học và học sinh nhỏ; cũng dùng được cho bài Python chỉ in chữ.

ÔNội dung
Đề bàiCó định dạng và chèn ảnh.
Code khởi tạoĐoạn Python điền sẵn trong ô soạn của học viên.
Hiện canvas turtleBật (mặc định) cho bài vẽ hình; tắt nếu bài chỉ in chữ.
Bật tự động kiểm traXem dưới.
Đáp án tham khảoLời giải của bạn, để tham khảo. Học viên không thấy.

Tự động kiểm tra ​

Tắt (mặc định): học viên chỉ có nút Chạy và Đặt lại. Hoạt động hoàn thành theo tuỳ chọn Cho phép hoàn thành thủ công hoặc thử thách hoàn thành (Thiết lập chung của hoạt động).

Bật: bạn dựng một bộ Tiêu chí hoàn thành mà không cần viết code. Mỗi lần học viên bấm Chạy và chương trình chạy xong, hệ thống kiểm luôn các tiêu chí; đạt thì học viên thấy "Chính xác! Đã hoàn thành hoạt động." và hoạt động hoàn thành. Không có nút kiểm tra riêng, dù dòng hướng dẫn dưới công tắc trên form có nhắc tới một nút như vậy.

Điều kiện đạt: Phải đạt TẤT CẢ tiêu chí (mặc định) hoặc Đạt ÍT NHẤT MỘT tiêu chí.

Mỗi tiêu chí chọn một kiểu ở ô Kiểm tra, rồi điền các ô hiện ra:

NhómKiểuÔ cần điền
Kết quả in raKết quả in ra bằng…, Kết quả in ra chứa…Chuỗi
Kết quả in ra khớp mẫu…Chuỗi (biểu thức chính quy)
Số dòng in ra…, Số đầu tiên in ra…So sánh (=, ≥, ≤) và Số
Cấu trúc codeCó định nghĩa hàm tên…, Có định nghĩa biến tên…, Có định nghĩa class tên…Tên
Biến bằng giá trị…Tên và Giá trị
Biến so sánh với số…Tên, So sánh, Số
Vẽ turtleSố lần tiến…, Số lần quay…, Tổng quãng đường tiến…, Số lần đóng dấu (stamp)…, Độ dày nét bút…So sánh và Số
Turtle kết thúc gần điểm (x, y)…X, Y, Dung sai (mặc định 5)
Có dùng màu…Chuỗi: tên màu; để trống là màu nào cũng được
Có tô màu hình (begin_fill)Không cần điền
Có viết chữ lên canvas…Chuỗi

Ví dụ bài "vẽ hình vuông cạnh 100": Số lần tiến… = 4, Số lần quay… = 4, Tổng quãng đường tiến… = 400, Turtle kết thúc gần điểm (x, y)… X = 0, Y = 0, Dung sai 5, điều kiện Phải đạt TẤT CẢ tiêu chí.

Đánh giá để luyện tập, không chống gian lận

Việc kiểm tra chạy trong trình duyệt của học viên, nên người rành kỹ thuật có thể qua mặt. Cần chấm điểm nghiêm túc thì dùng Code Practicing.

Nhờ AI soạn ​

Nút AI soạn nội dung trên trang sửa hoạt động (và lượt AI hoàn thiện nội dung cho cả khoá) soạn được nội dung cho Code Reading, Code Interactive, Code Terminal Exercise, Code Practicing, Code Inspection, Python Turtle và Lưới Blockly. Với Blockly (không phải Lưới Blockly), nút có tên AI gợi ý cho người soạn: AI chỉ viết bản hướng dẫn vào ô "Gợi ý từ AI" (bộ khối nên mở, mê cung nên dựng ra sao), không ghi cấu hình.

Với các loại có đáp án (Code Practicing, Code Terminal Exercise, Code Reading), hệ thống chạy thử lời giải do AI viết trước khi bạn xem bản nháp và gắn một trong ba trạng thái: đạt, không đạt, hoặc chưa kiểm chứng được (tổ chức chưa bật module chạy code, hoặc ngôn ngữ không chạy được). Python Turtle luôn ở trạng thái chưa kiểm chứng, vì nó chạy trong trình duyệt chứ không trên máy chủ. AI không soạn Tiêu chí hoàn thành của Python Turtle; bạn tự thêm sau khi áp dụng.

Ý nghĩa từng trạng thái, việc nên làm, và vì sao lượt AI cho cả khoá hạ bài chưa đạt về Nháp: Dùng AI soạn khoá học.

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

Học viên bấm Chạy mà không có kết quả, báo không chạy được Kiểm tra tổ chức đã bật module Thực thi code chưa (Code Reading, Code Inspection, Blockly, Python Turtle và Lưới Blockly không cần module này). Nếu đã bật mà vẫn báo "Không chạy được lúc này…", hệ thống chạy code đang trục trặc; lượt đó không bị tính là một lần làm sai. Báo quản trị viên.

Code Practicing: lời giải của tôi đúng mà test vẫn trượt Thường do output khác một chút: thừa dấu cách giữa các số, in thêm chữ ("Tổng là 3" thay vì "3"), hoặc khác hoa/thường. Chỉ khoảng trắng ở hai đầu được bỏ qua. Mở hoạt động như học viên, dán lời giải vào, bấm chạy và đọc cột Kết quả của bạn.

Muốn có test ẩn Hiện chưa có: học viên thấy mọi test sau khi chạy. Xem lưu ý ở mục Code Practicing.

Code Interactive không bao giờ hoàn thành Loại này không chấm. Bật Cho phép hoàn thành thủ công hoặc đặt thử thách hoàn thành; hoặc đổi sang Code Terminal Exercise / Code Practicing nếu muốn máy chấm.

Xem thêm ​

LMS Documentation