Dạy phát triển phần mềm dễ dàng với GitLab

Dạy phát triển phần mềm dễ dàng với GitLab

Đối với giảng viên dạy phát triển phần mềm, một trong những thách thức về mặt hậu cần lớn nhất là việc phân phối bài tập và phản hồi ở quy mô lớn. Làm thế nào để cung cấp cho một nhóm sinh viên đông đủ quyền truy cập vào tài liệu khoá học, giữ mã giải pháp ở chế độ riêng tư, và vẫn cung cấp phản hồi có ngữ cảnh, hữu ích mà không tạo ra nhiều công việc hành chính?

Chương trình GitLab for Education cung cấp cho các cơ sở đủ điều kiện quyền truy cập miễn phí vào GitLab Ultimate, cho phép giảng viên xây dựng những quy trình làm việc chuyên nghiệp mô phỏng môi trường phát triển phần mềm thực tế. Trong bài viết này, bạn sẽ biết cách Stephen G. Dame, giảng viên tại khoa Computing and Software Systems, University of Washington, Bothell, sử dụng các quy trình đơn giản trong GitLab để quản lý mọi thứ từ tài liệu khoá học đến phản hồi sinh viên trên nhiều lớp học.

Từ hàng không vũ trụ đến học thuật: Mang GitLab vào lớp học

Dame đến với môi trường học thuật sau nhiều năm giữ vị trí trưởng kỹ sư phần mềm tại Boeing Commercial Airplanes, nơi GitLab được sử dụng cho các dự án hàng không. Khi là giảng viên thỉnh giảng, ông trở thành một trong những người tiên phong thúc đẩy việc sử dụng GitLab trong trường, tham gia chương trình GitLab for Education để tiếp cận đầy đủ các tính năng cần thiết cho việc triển khai các quy trình khoá học có cấu trúc và có thể mở rộng.

“GitLab cung cấp cách tốt nhất để tổ chức nhiều lớp học, bài tập của sinh viên, bài giảng và mẫu mã nguồn thông qua việc sử dụng Groups và Subgroups, điều mà tôi thấy là điểm khác biệt của GitLab so với các nền tảng kho lưu trữ khác.”

  • Stephen G. Dame, University of Washington, Bothell

Thiết lập Groups: Xây dựng cấu trúc phù hợp trước khi viết dòng mã nào

Nền tảng của một khoá học hiệu quả dựa trên GitLab là một hệ thống phân cấp group được hoạch định cẩn thận. Các Groups và Subgroups của GitLab cho phép giảng viên mô phỏng cấu trúc tự nhiên của một bộ môn, khoá học và vai trò với quyền kế thừa chính xác ở mọi cấp.

Cấu trúc của Dame đặt tên trường đại học ở gốc (UWTeaching), với mỗi khoá học chiếm một subgroup riêng (ví dụ css430). Bên trong mỗi khoá học có các kho mã cho lecture-materialscode, cùng các Subgroup riêng cho studentsgraders. Tài liệu của giảng viên được giữ riêng tư, trong khi các subgroup sinh viên và trợ giảng được cấu hình với quyền kiểm soát chặt chẽ để chỉ những người phù hợp mới nhìn thấy đề bài và lời giải.

Screenshot of GitLab group hierarchy — institution, course subgroup, and per-student subgroups

Quyền truy cập được truyền xuống qua hệ thống phân cấp thông qua Manage > Members, cho phép Dame thêm sinh viên vào subgroup students của khoá học với quyền Reporter và ngày hết hạn gắn với kết thúc học kỳ. Sinh viên có thể clone và pull từ các kho bài tập nhưng không thể push — giữ mã giải pháp dưới quyền kiểm soát của giảng viên.

Sinh viên được hướng dẫn thiết lập SSH keys trên tất cả môi trường làm việc của họ (máy cục bộ, cloud shells, máy ảo) để có thể clone repository và nhận cập nhật hàng tuần thông qua git pull. Họ sao chép mã liên quan vào kho riêng tư của mình để quản lý lịch sử phiên bản cá nhân.

Mẹo cho các lớp lớn: Với các khoá học có quy mô lớn, việc thêm từng sinh viên bằng tay là không thực tế. REST API của GitLab cho phép bạn tự động hoá việc tạo subgroup và quản lý thành viên từ danh sách tên người dùng. Dưới đây là một đoạn script Python mẫu thực hiện công việc này:

          import gitlab
    from datetime import datetime

    # Connect to your GitLab instance
    gl = gitlab.Gitlab('https://gitlab.com', private_token='YOUR_PRIVATE_TOKEN')

    # Target parent group ID (e.g., the ID for "css430 > students")
    parent_group_id = 12345678

    # Set expiration: typically the beginning of the next month after quarter end
    expiry_date = '2025-01-01'

    # List of collected student usernames
    student_list = ['alice_css430', 'bob_css430', 'carol_css430', 'dave_css430', 'eve_css430']

    for username in student_list:
        try:
            # 1. Create a personal subgroup for the student
            subgroup = gl.groups.create({
                'name': username,
                'path': username,
                'parent_id': parent_group_id,
                'visibility': 'private'
            })

            # 2. Add student to the new subgroup with Expiration
            user = gl.users.list(username=username)[0]
            subgroup.members.create({
                'user_id': user.id,
                'access_level': gitlab.const.REPORTER_ACCESS,
                'expires_at': expiry_date
            })
            print(f"Success: Subgroup created and student added for {username}")
        except Exception as e:
            print(f"Error processing {username}: {e}")

    

Ngoài ra còn có một dự án mã nguồn mở tự động hoá quản lý lớp học do GitLab công bố, cung cấp công cụ bổ sung cho quy trình này.

Giao phản hồi ngay tại nơi công việc thực sự tồn tại

Khi cấu trúc đã được thiết lập, quy trình phản hồi chính là nơi GitLab thể hiện giá trị đối với sinh viên. Dame yêu cầu sinh viên nộp bài bằng cách mở một merge request trong repository của họ. Điều này cung cấp cho giảng viên một diff rõ ràng ngay lập tức của tất cả những gì sinh viên đã viết.
A GitLab merge request showing inline code comment function for an instructor
Giảng viên có thể click vào bất kỳ dòng mã nào và để lại comment nội tuyến — không chỉ đánh dấu chỗ sai, mà còn giải thích lý do, và hướng dẫn xem cần chú ý vào điểm nào tiếp theo. Sinh viên nhận được phản hồi trong bối cảnh trực tiếp với mã của họ, điều này hữu dụng và dễ hành động hơn nhiều so với một bình luận ở cuối tài liệu nộp bài.

Tham gia GitLab for Education

Việc thiết lập bài tập đầu tiên trên GitLab đòi hỏi đầu tư ban đầu, nhưng khi cấu trúc đã có thì hệ thống sẽ vận hành gần như tự động. Giá trị thực sự vượt ra ngoài việc tổ chức: sinh viên tốt nghiệp ra trường sau khi làm việc hàng ngày trong một môi trường phản ánh phát triển phần mềm chuyên nghiệp, hình thành thói quen làm việc với version controlcode review thay vì chỉ học chúng như những khái niệm trừu tượng.

Nếu bạn mới bắt đầu, hãy giữ cho mọi thứ đơn giản. Bắt đầu với một group khoá học, một mẫu bài tập và một pipeline cơ bản. Cấu trúc sẽ phát triển dần theo cùng với độ tự tin của bạn với nền tảng.

Hãy đảm bảo đăng ký GitLab for Education để bạn và sinh viên được truy cập tất cả các tính năng hàng đầu, bao gồm số lượng reviewer không giới hạn trên merge request, thêm phút compute và mở rộng dung lượng lưu trữ.

Nộp đơn tham gia chương trình GitLab for Education ngay hôm nay.

Liên hệ Softribution để được tư vấn chuyên sâu về triển khai GitLab trong môi trường giáo dục của bạn hoặc mua các giải pháp phù hợp cho tổ chức — chúng tôi hỗ trợ từ thiết kế cấu trúc group, tự động hoá quản lý lớp, đến tối ưu hoá quy trình đánh giá và triển khai pipeline.

Share this post