Skip to content

Course related proposals #3281

@danbri

Description

@danbri

Context: Passing this along from Google colleagues who have been working with web data that uses current Course schema. The suggestions are based on a desire to be able to do more with this kind of data.

Proposal

  1. Course-related properties:
Property name in Schema.org Description Appears on Type Expected Type
syllabusSections Syllabus that lays out what each section of the course will cover. Course Syllabus [new]
courseLength Represents the length and pace of the course. CourseInstance Schedule
skills Skills the course can help users obtain. Course,Occupation,JobPosting Text,DefinedTerm
totalHistoricalEnrollment The total number of students that have enrolled in the history of the course. Course Integer
financialAidEligible Any scholarships, special payment plans, or other financial aid opportunities for users looking to take the course. Course,EducationalOccupationalProgram Text,DefinedTerm
availableLanguage Subtitles, closed captions, or other languages the course is offered in. Course Text
  1. A Syllabus type

Definition: “ A syllabus that describes the material covered in a course”

  1. Syllabus properties

Typical properties (none new to Schema.org):

Property name in Schema.org Description Appears on Type
schema.org/name Title of a specific syllabus section. schema.org/Syllabus
schema.org/description Description of a specific syllabus section. schema.org/Syllabus
schema.org/timeRequired Expected duration for a specific syllabus section. schema.org/Syllabus

Example

{
"@context": "https://schema.org/",
"@id": "https://www.example.com/advancedCpp",
"@type": "Course",

"name": "Learn Advanced C++ Topics", 
"description": "Improve your C++ skills by learning advanced topics such as pointers,
                memory allocation, and function parameters.",

"publisher": {
    "@type": "Organization", 
    "name": "CourseWebsite",
    "url": "www.example.com"
},

"provider": {
    "@type": "Organization", 
    "name": "CourseProvider",
    "url": "www.exampleProvider.com"
},

"aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "9.8",
    "bestRating": "10",
    "ratingCount": 1234
},

"totalHistoricalEnrollment": 12345,

"image": [
    "https://example.com/photos/1x1/photo.jpg",
     "https://example.com/photos/4x3/photo.jpg",
     "https://example.com/photos/16x9/photo.jpg"
],

"educationalCredentialAwarded": {
    "name": "CourseProvider Certificate",
    "url": "www.exampleCertificate.com",
    "credentialCategory": "Certificate",
    "offers": {
       "@type": "Offer",
       "price": "5",
       "priceCurrency": "USD"
    } 
},

"financialAidEligible": "Scholarship Available",

"coursePrerequisites": [
    "Basic understanding of C++ up to arrays and functions.",
    {
       "@type": "Course",
       "@id": "https://www.coursewebsite.abc/beginnerCpp",
       "name": "Learn Beginner C++ Topics",
       "description": "Learn the basics of C++."
    }
],

"educationalLevel": "Advanced",
"inLanguage": "en",
"availableLanguage": ["fr", "es"],


"teaches": ["Practice and apply systems thinking to plan for change",  
            "Understand how memory allocation works."],
"skills": ["C++ Coding", "Backend Engineering"],

"offers": {
   "@type": "Offer",
   "description": "Paid",
   "price": "10",
   "priceCurrency": "USD"
},

"syllabusSections": [
  {
    "name": "Memory Allocation",
    "description": "Learn how memory is allocated when you create C++ variables.",     
    "timeRequired": "PT6H"
  },
  {
    "name": "C++ Pointers",
    "description": "Learn what a C++ pointer is and when they are used.",
    "timeRequired": "PT11H"
  },
]
"review": [
  {
    "@type": "Review",
    "author": {
        "@type": "Person",
        "name": "Bob Smith"
      },
    "datePublished": "2020-08-31",
    "reviewBody": "My C++ skills improved, but the pace was too fast.",
    "reviewRating": {
      "@type": "Rating",
      "bestRating": "5",
      "ratingValue": "3",
      "worstRating": "1"
    }
  }
]  

"hasCourseInstance": [{
   // Hybrid, instructor-led class meeting daily in Fall 2023
   "@type": "CourseInstance",
   "courseMode": "hybrid",
   "location": "Hogwarts Tech",
   "courseLength": {
      "@type": "Schedule",
      "duration": "PT1H",
      "startDate": "2023-07-01",
      "endDate": "2023-12-15",
      "repeatFrequency": "P1D"
   },
    "instructor": {
      "@type" "Person",
      "name": "John Doe",
      "description": "Professor at X-University",
      "image": http://examplePerson.jpg"
   }
},
{
   // Online, self-paced 10 hours / week for 15 weeks
   "@type": "CourseInstance",
   "courseMode": "online",
   "courseLength": {
      "@type": "Schedule",
      "duration": "PT10H",
      "repeatFrequency": "P1W",
      "repeatCount": 15
   },
}]

}

Metadata

Metadata

Assignees

Labels

Queued for Editorial WorkEditor needs to turn issues/PRs into final code and release notes.no-issue-activityDiscuss has gone quiet. Auto-tagging to encourage people to re-engage with the issue (or close it!).

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions