A Kết quả phân loại câu hỏi môn KTLT và CTDL&GT
4.20 Mơ hình cơ sở dữ liệu của tính năng quản lý ngân hàng câu hỏi
• Thêm bảngFolder: Đây là bảng lưu trữ các thư mục chứa các câu hỏi. Bảng 4.7:Bảng Folders
Tên trường Kiểu dữ liệu Mô tả trường
id UUID, PK
name TEXT Tên thư mục
organization_id UUID Khóa ngoại trỏ đến tổ chức (organization) của thư mục (bị null nếu là thư mục của ngân hàng riêng)
user_id UUID Khóa ngoại trỏ đến người dùng của thư mục
parent_id UUID, FK Khóa ngoại trỏ đến thư mục cha hierarchy_level INTEGER Chiều cao của nút so với nút gốc
created_by UUID Người tạo thư mục
created_at TIMESTAMP Được tạo ra vào lúc updated_at TIMESTAMP Được cập nhật vào lúc deleted_at TIMESTAMP Được xóa bỏ vào lúc
• Thêm bảngFolder Ancestors: Đây là bảng lưu trữ mối quan hệ giữa các thư mục, được
tạo với mục đích giúp việc truy xuất dữ liệu được thuận tiện hơn.
Bảng 4.8:Bảng Folder Ancestors
Tên trường Kiểu dữ liệu Mô tả trường
folder_id UUID, FK Khóa ngoại trỏ đến một thư mục
ancestor_id UUID, FK Khóa ngoại trỏ đến một thư mục là đời trước của thư mục trên(là nút cha, nút ơng, ...)
• Cập nhật bảngQuestion: Thêm cột folder_id, một câu hỏi giờ phải thuộc về một thư mục. Bảng 4.9:Cập nhật bảng Questions
Tên trường Kiểu dữ liệu Mơ tả trường
folder_id UUID, FK Khóa ngoại trỏ đến thư mục chứa câu hỏi.
• Thêm bảngExercise_Questions: Đây là bảng lưu trữ mối quan hệ giữa một bài thực hành
Bảng 4.10:Bảng Exercise_Questions
Tên trường Kiểu dữ liệu Mô tả trường
exercise_id UUID, FK Khóa ngoại trỏ đến bài thực hành question_id UUID, FK Khóa ngoại trỏ đến câu hỏi
4.3 Xây dựng lộ trình thực hành cho người học
4.3.1 Giới thiệu động cơ của tính năng
Trong các phần trước, nhóm tác giả đã giới thiệu và hồn thiện một số tính năng làm bài lập trình và chấm bài tự động cho người học. Tính năng làm bài cung cấp một mơi trường trực quan giúp người học dễ dàng điền các đoạn mã nguồn yêu cầu. Tính năng chấm bài tự động giúp người học nhận được phản hồi cho bài nộp một cách nhanh chóng, từ đó tiếp tục chỉnh sửa bài nộp và tăng tốc độ luyện tập lập trình. Nhìn chung, các tính năng này mang lại động lực luyện tập lập trình lớn cho sinh viên.
Mặt khác, nhóm xem xét sâu hơn về vấn đề động lực học tập của người học trên các hệ thống hỗ trợ lập trình. Nhóm nhận thấy, các hệ thống hỗ trợ lập trình này có điểm hạn chế chung là thiếu cơ chế khuyến khích việc học tập phù hợp đến từng người học. Việc khuyến khích học tập ở đây được định nghĩa là người học được đưa ra một câu hỏi vừa sức, người học sẽ được hướng dẫn làm các bài tập từ dễ đến khó. Từ đó, người học có thể cảm thấy hứng thú, và mong muốn tiếp tục luyện tập. Nhóm xin trình bày một số nguyên nhân dẫn đến việc thiếu động lực học tập như sau:
1. Giảng viên chưa ước lượng độ khó phù hợp với sinh viên. Thông thường, giảng viên phụ trách một lớp gồm nhiều sinh viên. Giảng viên sẽ thực hiện cơng việc ra đề, ước lượng độ khó cùng số lượng câu hỏi để gán sao cho phù hợp với sinh viên. Tuy nhiên, khảo sát trong nghiên cứu củavan de Watering and van der Rijt(2006) chỉ ra rằng, người dạy chỉ ước lượng chính xác một phần nhỏ độ khó của các câu hỏi đối với góc nhìn của người học. 2. Tri thức từ trước (prior knowledge) và khả năng của mỗi người học là khác nhau.
Trong thời đại Công nghiệp 4.0, mọi người đều có thể tiếp cận thơng tin một cách dễ dàng. Do vậy, mỗi người đều có thể học hỏi rất nhiều từ Internet. Dẫn đến tri thức từ trước của mỗi người có thể có sự khác nhau lớn. Khả năng học hỏi của mỗi người cũng khác nhau, có người có thể tiếp thu nhanh một số nội dung và với người khác thì điều đó khó khăn hơn. Do đó, một số câu hỏi được gán chung cho tập thể người học sẽ là quá dễ hoặc quá khó đối với mỗi người. Việc làm nhiều các câu hỏi quá dễ hoặc quá khó đều dẫn đến chán nản cho người học, hơn nữa với các câu hỏi quá khó, có thể làm người học từ bỏ học tập.
3. Người học gặp áp lực vì điểm số.Với các câu hỏi q khó, người học khơng thể làm bài được và tìm các nguồn để tham khảo. Thơng thường, người học tìm kiếm thơng tin về câu hỏi trên Internet. Tuy nhiên, lượng thông tin trên Internet là quá lớn. Người học gặp vấn đề này thường là những người mới bắt đầu học lập trình. Do vậy, họ khơng thể lựa chọn, hoặc mất nhiều thời gian lựa chọn các nguồn tham khảo cần thiết để trả lời câu hỏi. Một vấn đề khác gặp phải là đã tìm được một mã nguồn đáp án cho câu hỏi, nhưng người học không thể hiểu được mã nguồn này.
Do đó, nhóm hướng đến hiện thực tính năng Xây dựng lộ trình thực hành cho người học
trong hệ thống hiện tại với các mục tiêu sau:
1. Tạo một môi trường cho người học luyện tập.Đây là một môi trường làm bài riêng bên cạnh môi trường làm các bài tập do giảng viên gán. Môi trường này cho phép người học được vào luyện tập tự do với nhiều câu hỏi và khơng bị tính điểm.
2. Tự động hướng dẫn người học làm các câu hỏi từ dễ đến khó.Mơi trường này sẽ gồm nhiều câu hỏi ở cả 3 mức độ dễ, trung bình, khó. Người học sẽ được hướng dẫn làm các câu hỏi với độ khó là dễ trước. Sau khi luyện tập đủ nhiều và quen với độ khó hiện tại, người học sẽ được hướng dẫn làm các câu hỏi ở độ khó cao hơn.
3. Độ khó được xác định trên kết quả làm bài của người học. Độ khó của các câu hỏi khơng nên bị đánh giá q cao hoặc quá thấp bởi người dạy, dẫn đến không phù hợp với người học. Môi trường này sẽ sử dụng kết quả làm bài của người học để ước lượng độ khó cho câu hỏi.
4.3.2 Tổng quan tính năng
Tính năngXây dựng lộ trình thực hành cho người họcđược nhóm xác định gồm 2 tính năng chính. Tính năng đầu tiên là phân loại độ khó dưới góc nhìn của người học. Sau khi đã có độ khó của các câu hỏi, tính năng thứ hai thực hiện gợi ý câu hỏi đến người học sao cho độ khó là phù hợp.
Tính năng phân loại độ khó là nền tảng để có được độ khó của một câu hỏi dựa trên kết quả làm bài của sinh viên. Nhóm tác giả tìm hiểu các cơng thức liên quan đến độ khó của một câu hỏi ở mục 4.3.3. Sau đó, mục 4.3.4 giới thiệu giải thuậtk-means để gom cụm các câu hỏi theo
độ khó. Mục 4.3.5 sẽ trình bày việc thực nghiệm trên dữ liệu làm bài của AGS, trích xuất các giá trị tương ứng với các công thức liên quan ở trên và tiến hành phân cụm dữ liệu. Để hoàn thành việc phân loại, mục này trình bày một phương pháp gán độ khó cho cụm được nhóm để xuất. Sau đó đánh giá kết quả phân loại độ khó đạt được. Sau khi đã trình bày các cơ sở và đánh giá phương pháp, nhóm xây dựng một tính năng mới trên hệ thống dựa vào phương pháp phân loại này ở mục 4.3.6 và thực hiện các thay đổi cần thiết trên CSDL ở mục 4.3.8.
Tính năng gợi ý câu hỏi cần biết độ khó của một câu hỏi để thực hiện gợi ý. Ban đầu, độ khó này đến từ người dạy. Lúc tạo một câu hỏi trong hệ thống, người dạy sẽ cài đặt độ khó mà bản thân ước lượng. Sau đó, độ khó này có thể được cải thiện. Sau khi câu hỏi được người học làm, người dạy có thể sử dụng tính năng phân loại câu hỏi ở trên để xem xét độ khó theo kết quả làm bài. Từ đó, người dạy có thể lựa chọn để thay đổi độ khó của câu hỏi theo độ khó được phân loại.