Activities
Requirements Gathering
In order to find out what features Discord Classroom should have we will look at other bots and virtual education enviornments to see what they offer. By looking at the most popular discord bot and other educational bots we can check the command layouts, what features are possible, and how bot messages are displayed for the user. For example most bot commands start with a '!' and then a verb for when a user wants to create something and a noun when they want to view something. Also these bots have useful features we did not original think of like reminders and timers.
Another step to gathering resources is looking at popular virtual education enviornments like Canvas, BlackBoard, or Quizlet. These sources can help us pick more features to add to the Discord application that we did not original think of. Also they could provide a way to make creating quizzes or assignments by connecting directly to the site. Finally, we will have access to a college professor (Professor Ian) and can ask what features he would like to see added as a feature.
Top-Level Design
- Create a Discord bot used by educators to create a virtual educational enviornment within a Discord channel.
- Allow the educator to set up assignments, discussion, quizzes and polls within the Discord channel through bot commands.
- Allow the students to submit assignments, post dicussions, take quizzes, and react to polls all within Discord.
- Allow the educator to host a class within a voice channel which will have automatic attendence and participation.
- Allow students to get notified when class will start and let them join in the voice channel to attend class.
- Allow the educator and TA to grade assigned work for each student.
- Allow the students to check their grade for each school work they submitted.
- Allow students to create tickets for TA/teacher to respond to.
- Allow the teacher to make important announcements for the students.
- Submitted assignments will be saved onto Google drive for easy access
- A database will be used to store information such as grades and attendence.
Detailed Design
- Develop classroom setup functionality that automates initial setup of the Discord server
- Implement role configuration that classifies users as an educator, assistant, or student
- Create text and audio channels specified by user
- Create cloud storage folder associated with Discord server
- Develop attendance functionality that allows users to take and report attendance
- Implement educator command that starts attendance process
- Implement student command that records their attendance
- Integrate with database for storage and access to attendance records
- Implement educator command that retrieves attendance records
- Develop poll functionality that allows users to create and respond to polls
- Implement educator command that creates a poll
- Implement student command that allows them to respond to polls
- Develop assignment functionality that allows users to create and submit assignments
- Implement educator command that creates an assignments and allows them to upload associated documents
- Implement student command that allows them to submit files
- Integrate with cloud storage service to store and access assignment submissions
- Develop quiz functionality that allows users to create and take quizzes
- Implement educator command that creates a quiz
- Implement functionality for adding questions to the quiz
- Implement functionality for students to take the quiz
- Integrate with database to store quiz grades
- Implement functionality for generating quiz score report with class statistics
- Develop gradebook functionality that allows users to store and access course grades
- Integrate server with database to store grades
- Implement educator command to generate grade reports for the course
- Implement student command to retrieve their own grades
- Develop functionality that allows users to manage the classroom server
- Implement command for publishing course syllabus on server
- Implement command to generate server participation activity report
Testing
Unit Test
- The team will conduct unit tests for testing individual components during the software development cycle. The unit tests will cover aspects such as command parsing, the expected output of functions, error handling, etc.
- The unit testing will be done using Pytest.
Integration Test
- The team will conduct tests to verify that the Discord bot behaves as expected. Integration testing will cover aspects such as the behavior of the bot with various commands, API responses, etc.
Acceptance Test
- Our team will create a document containing our non-functional and functional requirements that will be used to verify and check that our bot is both easy to use and is functioning as expected.