Table of Contents
Setup Guide for Administrators
This page summarizes, in order of work, the preparation needed before classes can start with Exercode, for the administrator in charge of setup (such as a staff member in the administrative office) who introduces Exercode to the organization. The administrator in charge receives the organization administrator role in step 1 and performs the subsequent tasks. For who can perform each step, see Steps and Required Permissions.
For detailed explanations and exceptional cases, see the linked pages at the end of each step.
Glossary
Types of Permissions
Exercode has four types of permissions. In addition, there is the service administrator (WillBooster Inc.), who manages the entire service. The service administrator's permissions cannot be configured on the user side.
| Name | Permission | Intended for | Table cell |
|---|---|---|---|
| Administrator in charge | Organization administrator | Overall head of a school or faculty, administrative staff. Invites members to the organization and creates groups. The reader of this guide | |
| Instructor | Group administrator | Class or course instructors, TAs. Readers of the Instructor User Guide | |
| Material author | Member of the material repository | People who create and maintain materials in the GitHub material repository | |
| Student | General member | Students taking classes |
In this guide, students are called "students." They may appear as "learners" or "attendees" on screen, but all mean the same thing.
Organizations and Groups
| Term | Meaning | Example |
|---|---|---|
| Organization | An educational institution such as a school or university | 〇〇 University, 〇〇 Vocational College |
| Group | A class or department within an organization. Created by the administrator in charge, and is the unit an instructor is assigned to | Department of 〇〇, Year 1 Class A (AY 2026) |
| Member | A user belonging to an organization or group (both instructors and students) |
An organization has multiple groups. The structure looks like this:
- Organization (〇〇 University)
- Group (〇〇 Dept. Year 1 Class A)
- Member (instructor)
- Member (Student A)
- Member (Student B)
- Group (〇〇 Dept. Year 1 Class B)
- Member (instructor)
- Member (Student C)
- Member (Student D)
- Group (〇〇 Dept. Year 1 Class A)
Material Structure
| Term | Meaning | Example |
|---|---|---|
| Course | The overall unit of material. Corresponds to one subject in a class | Python Language Basics, Java Practice |
| Lesson | A unit that makes up a course. Corresponds to one class session | Lesson 1: Variables and Types |
| Material | The smallest unit of material. Includes explanatory text, problems, and submission settings | Exercise 1-1 |
For example, a course "Python Language Basics" that proceeds over 15 lessons is registered in Exercode as follows. Each lesson contains the materials to work on in that session.
- Course: Python Language Basics
- Lesson: Lesson 1 Variables and Types
- Material: Exercise 1-1 Variable Declaration
- Material: Exercise 1-2 Type Conversion
- Lesson: Lesson 2 Conditional Branching
- Material: Exercise 2-1 if Statement
- Material: Exercise 2-2 Comparison Operators
- … (continues through Lesson 15)
- Lesson: Lesson 1 Variables and Types
To make this course available to students, add the course to a group. For example, if "Python Language Basics" is added to the group "Computer Science Year 1 Class A," it will appear in the Course List of students in Class A.
Steps and Required Permissions
| Step | Required permission | Necessity |
|---|---|---|
| 1. Prepare an organization administrator account | None (permission is granted by WillBooster Inc.) | Required |
| 2. Create groups and register instructors | Organization administrator | Required |
| 3. Add materials | Organization administrator or group administrator (organization administrator and material author when importing from GitHub) | Required |
| 4. Add courses to groups | Organization administrator or group administrator | Not required if you selected the target group when creating in step 3-1 |
| 5. Register students | Organization administrator (group administrators can also add to groups) | Required |
| 6. Register a Gemini API key | Organization administrator | Optional |
| 7. Set class schedule | Organization administrator, group administrator, or material author | Optional |
1. Prepare an Organization Administrator Account
What you need: The email address of the person who will become the organization administrator
This is a one-time task required for the organization. If you already have an organization administrator account, start from step 2.
1-1. Create an Account
The person who will become the organization administrator performs this task.
-
Press
Create account / Sign inat the top right of the screen. -
Enter the email address to use for the organization.
-
Press
Send verification code. -
Enter the 8-digit verification code from the email you received, and press
Verify and sign in.
1-2. Request Organization Administrator Permission
Permission is granted on the service administrator side (WillBooster Inc.). It cannot be configured on the user side.
- Send the email address of the created account via Contact.
- Once permission is granted, the organization name appears in the
Affiliationmenu at the top right, and you can open the organization settings from there.
2. Create Groups and Register Instructors
What you need: A list of instructors' email addresses
Create a group for each class, invite instructors to the organization, and then make them group administrators. For the relationship between organizations, groups, and members, see "Organizations and Groups" in Glossary.
2-1. Create a Group
Create a group for each class. Only organization administrators can perform this operation.
-
Open
Affiliationat the top right of the screen. If the screen is narrow, it is in the person icon menu at the top right. -
Open the target organization name.
-
Open
Groups. -
Press
New group. -
Enter the group name and press
Create.
For each group, you can check student progress and AI chat usage. For how to check, see the Instructor User Guide.
2-2. Invite Instructors to the Organization
Invite instructors to the organization. Only organization administrators can perform this operation.
-
Open
Affiliation. -
Open the target organization name.
-
Open
Members. -
Enter instructors' email addresses. You can enter multiple addresses at once, separated by line breaks or spaces.
-
Set
Automatically create account if it does not existaccording to who you are inviting.- When also inviting people who have never used Exercode (such as when using it for the first time in class): Check the box. Accounts are created for people who do not have one, and invitation emails are sent to newly invited people. Emails are not sent to existing members of the organization or people already invited who have not yet accepted.
- When inviting only people who already have Exercode accounts: Uncheck the box. Invitations are sent only to people who have an account. Email addresses for which no account was found are listed on screen after you press
Invite to organization.
-
Check the following two settings.
- Instructors will be added as group administrators in step 2-3, so leave
Also invite to groupasNot selectedat this point. Grant organization management permissionis the setting that grants organization administrator permission. Check it only when you want to delegate management of the entire organization to the instructor. If you entered existing members, checking this promotes them to organization administrators. Unchecking does not remove existing management permissions.
- Instructors will be added as group administrators in step 2-3, so leave
-
Press the
Invite to organizationbutton.
Immediately after inviting, the person appears in the Pending invitations list. When the invited person logs in via the invitation email link and presses Join on the screen that appears, they move to the Members list. After the instructor has joined, perform step 2-3.
2-3. Add Instructors to the Group
Make the responsible instructor a group administrator. Once a group administrator, the instructor can add members, assign courses, view learning analytics, and set class schedules without going through the organization administrator.
Only people who belong to the organization can be added to a group. Do this after instructors invited in step 2-2 have joined. If the group has no administrators yet, only an organization administrator can add the first group administrator.
-
Open
Affiliation. -
Open the organization name.
-
Open
Groups. -
Open the target group.
-
Open
Members. -
Enter the instructor's email address you want to add.
-
Check
Management permission. -
Press
Add / Update permissions.
3. Add Materials
Courses, lessons, and materials can be created on the Exercode screen, or imported from a GitHub material repository. Choose step 3-1 or 3-2 according to how you want to create and manage them. For the relationship between courses, lessons, and materials, see "Material Structure" in Glossary.
3-1. Create on the Exercode Screen
Performed by an organization administrator, or the group administrator of the target group.
-
Open
Coursesfor the target group and pressCreate course. -
Enter the course name and description, select the group to publish to in
Group, and create.Organization administrators can also select
None. If you selectNone, the course is added to the organization and is available to all members of the organization. For courses where instructors (group administrators) use learning analytics or manual grading, always select a group. A course that is only added to the organization will not showGroup administrator menuorLearning analyticson instructors' screens. -
On the course edit screen that appears after creation, add lessons and materials.
-
Open the material settings screen from
Edit Markdownfor the material, and configure the body, questions, submission period, and so on. If you delegate setting the submission period to instructors, tell them so (instructors configure it in "5-4. Set the publication timing and deadline of a material" in the Instructor User Guide).
The created course is added to the selected group. If you create it in the group where you register students, step 4 is not required.
- Material settings such as the submission period are set once per material. If the same course is added to multiple groups, changes apply to all students using that material.
- Courses created on screen have no material repository, so you cannot disable AI chat or hints as described in 3-2-1. The only way to stop students' AI chat is exam mode.
- If you delete a lesson or material on the course edit screen after students have started submitting, all their submissions and progress for that lesson or material are deleted and cannot be restored. After operation starts, do not delete lessons or materials; instead, set unused materials' submission release to a future date/time so students cannot see them.
For details, see Edit Materials.
3-2. Import from a GitHub Material Repository
What you need: A material repository on GitHub, and the permission to install a GitHub App on the GitHub account or organization that hosts the repository
For the folder structure and how to write files in the material repository, see Sample material repository description.
Proceed in two stages:
- Before importing, check the AI chat and hint settings in the material repository (only if needed; see 3-2-1).
- Add the material repository to Exercode and import (3-2-2).
AI chat and hint settings are written inside the material repository, so check them before importing.
3-2-1. Check AI Chat and Hint Settings Before Import (Only If Needed)
Exercode has two AI features that support student learning.
- AI chat: A feature where students can ask the AI about materials and problems. The AI searches and reads materials in the same course to answer.
- Hints: For coding problems, a feature where the AI indicates the error location and how to fix written code.
AI chat and hints are available in all materials without any configuration. If you use them as-is, this step is unnecessary. Material authors (members of the material repository) change settings in the material repository before import only in cases like the following:
| When | Setting |
|---|---|
| You want students to solve a quiz or exam without AI help | Set exam mode (isExamination: true) per material. Students cannot use AI chat for that material and problem, and cannot reference its content from AI chat on other screens. During the submission period (until the hard submission deadline), hints are also not displayed. |
| You want students to think on their own without using AI chat | Set isMaterialChatDisabled: true to disable student AI chat. The content of that material also cannot be referenced from AI chat on other screens. |
| You do not want students to use hints | Setting both isDebugHintDisabled: true and isFixHintDisabled: true hides the Hints tab. To disable only "additional hints," set isFixHintDisabled: true. isDebugHintDisabled: true only hides "error locations." "Additional hints" remain available, and the first step "reason for error" shows the content of the error. To hide all error-related hints, also set isFixHintDisabled: true. |
| You do not want to show hints close to the answer | Set isDiffHintDisabled: true so that additional hints do not show "corrected code" and "explanation of the corrected code." |
| You want students to take time to think before relying on hints | Extend the time before hints become available with debugHintWaitingSeconds (default 180 seconds) and fixHintWaitingSeconds (default 300 seconds). |
| You do not want AI chat to answer about content not yet covered | Align the submission release date/time (submissionOpenedAt) with the class schedule. Content from materials whose submission release date/time has not passed is not referenced by student AI chat. |
Settings other than isExamination are written in course.yaml (for the whole course) or in the leading parameters of each material (per material). If both are set, the material setting takes priority. isExamination can only be written in the leading parameters of a material. Writing it in course.yaml causes an error on import. For how to write them and other setting items such as displaying the model answer after the deadline (isModelAnswerShownAfterDeadline), see the lists under "Common course and material setting parameters" and "Material parameters" in Sample material repository description.
Exam mode (isExamination) and the submission period (submissionOpenedAt and others) can also be set after import in the Submission / Exam settings tab of the material Edit screen, so you can delegate them to instructors (see "5-4. Set the publication timing and deadline of a material" in the Instructor User Guide). However, re-importing may overwrite settings made on screen, so also write settings you want to keep using in the material repository. Settings that disable AI chat or hints can only be made in the material repository.
To check, follow these steps:
- In the material repository, open
course.yamlin the course folder and check whether any of the parameters in the table above are written. If not, AI chat and hints are available for the whole course. - Open the file for materials used for exams or materials where you do not want AI used, and check whether the leading parameters match the "When" column in the table above.
- If you changed settings, reflect the changes to the default branch of the material repository (usually
main). When you import in 3-2-2, the changes are reflected in Exercode. - After import, open the target material or problem and check that the
AI chatbutton andHintstab display as intended (they should not appear for materials where you do not want them used).
3-2-2. Add the Material Repository and Import
Performed by an organization administrator. In advance, material authors reflect the materials to the default branch of the material repository (usually main).
Organization administrators should be the first to add the material repository to Exercode. A material repository first added by someone who is not an organization administrator cannot be registered to the organization even if an organization administrator adds it later, and the course cannot be added to a group.
-
Open
Material repositoriesfrom the email address at the top right (or the person icon if the screen is narrow), and pressAdd from my GitHub. -
On the GitHub screen, select the material repository and install the GitHub App.
-
Return to Exercode, press
Register to organizationfor the added material repository, and select the organization. -
Press
Importfor the target repository, check the diff and validation results, and confirm the import.
After operation starts, if you fix materials and re-import, the submission period and other settings that instructors configured on the material Edit screen may be overwritten. Before re-importing, notify the responsible instructor.
After operation starts (once students have started submitting), if you change the ID of a course, lesson, material, or problem, submission records are completely deleted and cannot be restored. Do not change IDs. Deleting lessons or materials on the course edit screen also deletes submission records in the same way. For how IDs are determined and how to change display order without changing IDs, see "Notes on changing IDs" in Sample material repository description.
For details, see Import materials and Sync and import material repositories.
4. Add Courses to Groups
Add the imported course, or a course created in another group of the same organization, to the group where students are registered. You can only add courses created in that organization and courses imported from a material repository registered to that organization. You cannot add courses from other organizations. If you created the course in the target group in step 3-1, it is already added, so this step is not needed.
If you have made an instructor a group administrator, the instructor can do this themselves. If delegating, tell the instructor along with the course ID. Courses not yet added to a group do not appear in the instructor's Course List.
- Open
Affiliation. - Open the organization name.
- Open
Groups. - Open the target group.
- Open
Courses. - Enter the ID of the course you want to add. You can check the course ID in the
Courseslist on the organization screen, or from the course page URL (the part after/courses/). - Press
Add.
When added to a group, only students who are members of that group can use the course (organization administrators and material authors can view it for management; courses set to public can be viewed by anyone). When added to the organization, all members of the organization can use it, but instructors (group administrators) cannot use learning analytics or manual grading for that course. Add courses that instructors are responsible for to a group, not to the organization.
5. Register Students
What you need: A list of students' email addresses
Once the courses are ready, invite students to the organization and add them to groups.
Students can use courses only after joining via the invitation email. Invite them several days before the first class, and confirm that everyone has joined. Students who have not joined appear under Pending invitations on the organization's Members screen.
5-1. Invite Students to the Organization
On the same screen as 2-2, enter students' email addresses and invite them. If you select a group in Also invite to group, students are added to the group at the moment they join the organization, so 5-2 is not needed.
Grant organization management permission is the setting that grants organization administrator permission. Do not select it for students.
5-2. Add Students to a Group
Add students who were invited without selecting a group in 5-1, or who already belong to the organization, to a group. Students who do not belong to the organization cannot be added, so invite them first in 5-1. Group administrators (instructors) can also do this. If delegating to instructors, confirm that the students have joined the organization, and then tell the instructor.
-
In the same way as step 2-3, open
Membersfor the target group. -
Enter the email addresses of the students you want to add.
-
Do not check
Management permission. -
Press
Add / Update permissions.
The Management permission check is applied equally to all email addresses entered. If you enter the email addresses of instructors or TAs along with students, that person's group administrator permission is removed and learning analytics and similar features become unavailable. Add instructors and TAs separately following step 2-3.
5-3. Register Student Profiles (Optional)
Registering students' names and student ID numbers via CSV makes it easier for instructors to identify students in learning analytics. Students who are not registered show - in the name column of learning analytics. Do this after students have joined the organization.
Profile registration can be done by either the administrator in charge or the instructor. An instructor (group administrator) can only register students in their own group. However, a later CSV upload overwrites the content, and blank fields erase already registered values, so if both register using separate CSVs, previously registered content may be lost. Decide with the instructor who will do it.
- Open
Course List→ the target course, and pressUser profilesin the administrator menu. - Press
Download template, and enter each student's information in the CSV template. OnlyEmail addressis required. - Upload the CSV, check the content loaded in the table on screen, and press
Save.
Rows for people who have not joined the organization are not applied, and no notification is shown on screen. For details, see Set profile information.
6. Register a Gemini API Key (Optional)
Do this if you want the organization's Google account to bear and manage the usage costs of AI chat and similar features.
What you need: A Gemini API key
AI chat and hints can be used without an API key. Once registered, the organization's key is used for AI chat and for classifying the intent of its questions. Only organization administrators can perform this operation.
- Open the target organization from
Affiliationin the header. - Open
Organization settings. - Under
Current statusforGemini API key used for AI chat, check whether the key isSavedorNot set. - Enter the new key in the
Gemini API keyfield, and pressSave.
The setting is per organization and is used by that organization or by courses added to groups within it. The organization's key is used for AI chat only when members of that organization use it. To delete, use Delete Gemini API key, which appears when a key is saved.
For details, see Configure organization AI settings.
7. Set Class Schedule (Optional)
Setting the class schedule lets learning analytics distinguish submissions made during and outside class hours. It can also help track self-study. Group administrators (instructors) can also set it, so if delegating, tell the instructor.
-
Open
Course Listat the top of the screen. -
Open the target course.
-
Press
Class schedule settings. -
Enter the day of the week, start time, and end time.
-
Press
Add time. -
Confirm that it is reflected in
Current class schedule. -
Press
Save changes.
For classes with different days or time slots, you can add several entries and save them together.
Class schedules are one per course. If the same course is added to multiple groups, changes apply to the learning analytics of all groups using that course. Group administrators can only set schedules for courses already added to their group.
Things to Confirm Before the First Class
Before classes start, confirm the following. If any do not apply, see When Things Don't Work.
- All students have joined the organization (none remain under
Pending invitationson the organization'sMembersscreen). - When logged in as a student, the course appears in
Course List. - The
AI chatbutton appears at the bottom right of the material screen and problem screen (it does not appear for materials set to disable AI). - The instructor can open
Learning analyticsfromCourse List→ the target course.
When Things Don't Work
| Symptom | What to check |
|---|---|
| Students do not receive the invitation email | Whether the email address is correct. Whether it went to the spam folder (sender is no-reply@willbooster.dev). If not received, delete the invitation from Pending invitations on the organization's Members screen and invite again to send the email. |
The course does not appear in students' Course List | Whether the students are added to the group, and whether the course is added to that group. |
| Cannot add a course to a group | Whether the course ID is correct (a nonexistent ID is ignored without an error). Whether you have group administrator or higher permission. Whether the course was created in that organization. For courses imported from GitHub, whether the material repository is registered to that organization. |
The AI chat button does not appear on the course, material, or problem screen | For students: whether isMaterialChatDisabled is true in the material, whether the material is in exam mode (isExamination), or whether the submission release date/time (submissionOpenedAt) has passed. For the course screen: whether there is at least one material students can use AI chat with. Instructors and others responsible for the course can use it even on restricted materials (AI chat conditions). |
The Hints tab does not appear on the problem screen | Whether isDebugHintDisabled and isFixHintDisabled are both true, whether the problem is manually graded, or whether it is an exam-mode material during the submission period. |
The AI chat tab does not appear in the instructor's learning analytics | Whether the instructor is a member of the organization and a group administrator of the group linked to the course. |