Assignments in Classroom are called CourseWork items, which can be found in the Classwork page of any given Classroom course. While there are four Classwork item types, this guide focuses on just the “Assignment” type. If you’d like to learn about how to manage the other Classwork types, read our Manage Classwork guide.
Google Classroom has two ways to integrate with an assignment workflow: Classroom share button and Classroom API. The share button enables users to share content as any stream item through a Classroom popup dialog, whereas the Classroom API enables a beginning-to-end assignment workflow that includes creating assignments, creating and managing student submissions, and grade passback.
Here we will review the key differences between these two developer offerings. More specifically, we will work through the differences in implementation and each phase of the assignment life-cycle: assignment creation, student submissions, and grading/feedback.
Understanding the assignment life cycle
Before moving onto the differences between the share button and CourseWork API, let’s first define what we consider to be the life cycle of an assignment in the context of Classroom. This will help you understand how teachers and students interact with assignments within Classroom.
There are five main steps to keep in mind while integrating with Classroom assignments:
- Assignment is created.
- Assignment is shared with students.
- Student completes the assignment.
- Student submits assignment to teacher.
- Teacher reviews & grades assignments.
Integrating with Classroom assignments allows teachers and students to work between Classroom and third-party applications seamlessly. Instead of managing the details of an assignment or student submissions, users can rely on your application to manage these details for them.
<script src="https://apis.google.com/js/platform.js" async defer></script> <g:sharetoclassroom url="http://url-to-share" size="32"></g:sharetoclassroom>
The CourseWork API, on the other hand, is part of the Classroom REST API, which requires setting up and enabling API keys with Google Cloud Console and following best practices for integrating with an API. This is less of a concern if your platform is already leveraging other Classroom API functionality, such as rostering.
Creating & sharing assignments
While both the share button and CourseWork API enable the first two steps of the assignment workflow, creating and sharing the assignment with students, there are some crucial differences you should consider before choosing a solution.
At their core, both solutions enable the ability to post links or files as assignments to Classroom. This serves as a powerful workflow for teachers who would otherwise be forced to engage in a copy and paste workflow between Classroom and the third-party application. While both solutions support the ability to post content as an assignment, you should consider whether your application needs the flexibility of posting this content as other Classwork types, or even an announcement.
Both offerings expose all of the Classroom post types except Quiz Assignments. A summary of all post types and whether they are exposed can be found below.
|Post Type||Share button||CourseWork API|
|Question: Short Answer||X||X|
|Question: Multiple Choice||X||X|
Functionality such as specifying title and description can also be programmatically specified by your application for both solutions. While the share button integration allows users to set fields such as due date, topic, individualized mode, and number of points within the pop-up dialog, they cannot be set programmatically by a third-party app. The API, on the other hand, exposes all of these fields for both read and write access.
Eliminating the need to have users manually sync changing details of their assignments is one of the benefits of integrating with Classroom’s API. The share button lacks functionality to update or delete assignments programmatically, so any modifications needed would have to be made by the user, through the Classroom UI.
The CourseWork API enables both the ability to modify and delete assignments your application created, as well as the ability to retrieve details of any assignments posted to the user’s courses. It’s important to note, however, that CourseWork items not created by the same developer console cannot be modified by that developer console. This permission model extends to the rest of the assignment life cycle, e.g. managing student submissions and grades, cannot be accessed for these CourseWork items.
Automatically sync assignments
With Classroom Pub/Sub push notifications, your application can subscribe to notifications that trigger an event when there are changes in CourseWork items and its associated student submissions. This allows your application to synchronize assignments easily by eliminating the need for continuous checks to see whether content has been updated on Classroom.
Completing & submitting assignments
Each assignment is associated with
N student submissions, where N is the
number of students the assignment was assigned to. In other words, for each
assignment, there is a student submission associated for each student - which
can be accessed with a unique ID. These student submissions are automatically
created and can be retrieved by your application with the studentSubmissions
GET and LIST endpoints.
Both the share button and CourseWork API support adding links or files to a student's submission for an assignment. The share button allows this through a similar workflow as the teacher assignment creation dialog, and the CourseWork API through the studentSubmissions.modifyAttachments endpoint. Because of API permission restrictions detailed earlier, however, this functionality is limited to CourseWork items that your application created. This same restriction does not hold true for the share button — students can add their work to any assignment they select from Classroom.
Ending the student workflow
While the CourseWork permission restriction does not serve a use case for platforms that do not support assignment creation, one benefit is that third-party platforms can prevent students from both submitting to the incorrect assignment and forgetting to turn in their work since only the share button is limited from the ability for students to turn in their assignments.
Reviewing & grading assignments
The last part of the assignment life cycle goes back to the teacher. Once students have successfully turned in their assignment, the teacher can now review the assignment in whatever way makes most sense. In the case of files stored in Drive, they can review directly in the Classroom grader. Third-party applications, however, cannot be accessed in the Classroom grader. The implication of this experience is that teachers must navigate multiple tabs while reviewing and grading assignments.
The share button currently offers no solution for grading and returning assignments. While features such as student submission comments aren’t currently exposed through the API, both grading and returning those grades to students is possible through the studentSubmissions.patch and studentSubmissions.return endpoints. Grades can be specified for CourseWork stream items only (Assignment and Question types). They are only available in numerical form and can be assigned as either a draft or final grade.
Summary of differences
To summarize everything reviewed in the previous sections, the table below shows a side-by-side comparison of the share button and CourseWork API for the four categories discussed above: implementation, creating and sharing assignments, completing and submitting assignments, and reviewing and grading assignments.
|Share Button||CourseWork API|
|Creating and Sharing Assignments||
|Completing and Submitting Assignments||
|Reviewing and Grading Assignments||No support for specifying or returning grades||