Determining Course Flexibility from Syllabi

Project phases

Published: June 29, 2023

Last Updated: 10 months ago.

View All Projects

Across the many faculties at UBC, there is an anecdotal sense of variation for the characteristics of flexibility that exist between courses. While UBC does not currently systematically measure variations nor the extent of them between each faculty, the Office of the Provost & Vice-President Academic (VPAO) approached the UBC CIC with a challenge to create a solution that would analyze course flexibility information.

The VPAO wanted to determine whether technology could be developed to assist in analyzing course syllabi for evidence of flexibility in a systematic way. The UBC CIC and the VPAO collaborated to develop a dashboard using natural language processing (NLP) and AWS services to run and display results of course flexibility analysis.

Seven flexibility guidelines were generated from the characteristics provided by the Sponsor, that are associated with course flexibility. Click on the tab below to view the list of flexibility guidelines.

Flexibility Guidelines

  1. Online recordings of lectures can be accessed
  2. Questions can be posted anonymously
  3. Late assignments or deliverables are accepted
  4. Make-up midterms are offered
  5. The lowest assessment grades will not count towards your total grade
  6. Your top M out of N scores will count towards your final grade
  7. There are multiple attempts for assignments

Approach

To analyze course flexibility, data from course syllabi was needed. The UBC CIC received syllabus files the VPAO had gathered from 100-level courses across both UBC Vancouver and Okanagan campuses. The decision for this project to investigate flexibility using 100-level courses was made by the sponsor as they constitute a representative sample that pertains to a large number of students. 

Using NLP and AWS technology, the UBC CIC developed a solution that can ingest, store, extract, and analyze text from syllabus files. A dashboard was created to display the analysis results of course flexibility. The dashboard prototype offers filtering functions of the analysis results by the campus, faculty, course or individual flexibility guideline, as well as graphical displays of the results.

Currently, the dashboard displays analysis results of the seven guidelines listed above. However, the solution’s front end web app (dashboard) can also conduct analyses of additional guidelines that the Sponsor may add. The interactive nature of the dashboard provides the opportunity for the Sponsor to analyze any additional criteria or aspect of course flexibility.

Supporting Artifacts

Architecture Diagram

The architecture diagram illustrates the processes occurring in the AWS backend for running the solution. It comprises of icons that represent each AWS function and arrows between the icons to demonstrate the workflow.

Screenshots of UI

Architecture Summary

The major components that make up the solution are the AWS services of Cognito for the user interface, S3 for file upload, Glue Jobs for the text extraction, analysis and storage, and the AppSync API and Lambda Resolver functions for the front end data display. Within the solution’s architecture, the NLP process that occurs at the Glue Jobs is involved in extracting and analyzing the syllabus data. 

Click on the tabs to read more about each section of the backend infrastructure.

Backend Architecture

When a user visits and logs into the front end web app, they are authorized via Cognito. Upon logging in, the user will see a display of results of the already-analyzed syllabi. For the analysis results to be displayed, syllabus files would be uploaded into an S3 bucket. To extract, analyze, and store the syllabi content, separate Glue Jobs occur. A Glue Job is also used to generate analysis on new guidelines added from the front end web app. Between the data storage and front end, the main components used to display data on the web app are the AppSync API and Lambda Resolver functions.

Refer to the Component Architecture for a detailed walkthrough of the solution’s architecture.

NLP Analysis

Within the generateNLPAnalysis, two primary processes occur: a Symmetric Semantic Search, and a Yes/No Question Answering process. In the Symmetric Semantic Search, three of the most semantically similar sentences are extracted with respect to each flexibility guideline. The Semantic Search was used to enable more accurate and relevant search results as it aims to understand the meaning and context of the guideline and documents being searched.

Yes/No Question Answering

In the Yes/No Question Answering component, the model is trained to determine whether the three extracted semantically similar sentences answers the flexibility guideline posed in a question format. It must be noted that for the Question Answering model to operate, the flexibility guidelines must be answerable only by “Yes” or “No”.

Confidence Score Analysis

To ensure accuracy in the analysis, a confidence score analysis is run as part of the Yes/No Question Answering process. It offers the Sponsor a simple way of knowing how accurate the model is in its yes or no answer for the flexibility guideline.

Backend Architecture

Expand for a step-by-step technical walkthrough of the architecture diagram.

  1. AWS Cognito authenticates users to the dashboard web app.
  2. WAF first filters the request from the web app to protect against malicious web attacks before it reaches the Appsync GraphQL API.
  3. Files are uploaded to an S3 bucket which triggers an S3 Event Notifications, which will send them to the SQS queue. This bucket also allows the front end web-app to display files.
  4. The extractMetadata Glue Job programmatically receives the stored events to extract syllabi metadata. It attempts to extract the course code from the file name (e.g., CSPS_syllabus.pdf). If a valid course code is not found, it searches for the course code in the content of the syllabus file. If a valid course code is found, it matches it with the corresponding campus and faculty.
  5. Files that were successfully processed will then have their S3 path transferred to the generateNLPAnalysis Glue Job. The job will use the paths to fetch the syllabi, extract the raw text and analyze it with Symmetric Semantic Search and Yes/No Question Answering. 
  6. The results of the analysis and syllabi metadata is sent to the storeData Glue job, which inserts them into the database. 
  7. Appsync API passes the GraphQL operations from the web app to the Lambda Resolver function to be carried out against the database.
  8. The API returns the responses to the front end through the Lambda Resolver and Appsync.
  9. The Lambda Resolver can also initiate a new execution of the generateNLPanalysis Glue Job to analyze new guidelines added from the front-end web app. It directly passes the newly added guideline to the generateNLPanalysis Glue Job, hence generating results for all files currently stored in the database. Previously analyzed guidelines are not reprocessed.

Link to solution on GitHub: https://github.com/UBC-CIC/course-flexibility

Acknowledgements

Office of the Provost & Vice-President Academic

Photo by: Paul H. Joseph / UBC Brand & Marketing on Flickr

About the University of British Columbia Cloud Innovation Centre (UBC CIC)

The UBC CIC is a public-private collaboration between UBC and Amazon. A CIC identifies digital transformation challenges, the problems or opportunities that matter to the community, and provides subject matter expertise and CIC leadership.

Using Amazon’s innovation methodology, dedicated UBC and Amazon CIC staff work with students, staff and faculty, as well as community, government or not-for-profit organizations to define challenges, to engage with subject matter experts, to identify a solution, and to build a Proof of Concept (PoC). Through co-op and work-integrated learning, students also have an opportunity to learn new skills which they will later be able to apply in the workforce.