SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
JupyterHub & Canvas Integration
DSCI 100
@samhinshaw
Goals for DSCI 100
• Code in the cloud—no device restrictions or complex
installation prerequisites.

• Canvas as single location for students to navigate to.

• No need to interface directly with git or GitHub.

• Transferable knowledge—no “special” sandboxed
environments that do not translate to real-world use.
Students - Focus on the code!
Goals for DSCI 100
• Ease of configuration

• Automated course setup

• True automated grading
Instructors - Reduce administrative burden!
• A server framework to host Jupyter notebooks
and authenticate users
• A learning management system to manage
assignments.

• Serves as single location for students to visit.
nbgrader • An automated grading system.
Jupyterhub
Overview
ZFS Fileserver
GitHub
Grading Server
Canvas
Jupyterhub
ZFS Fileserver
GitHub
Grading Server
Overview
Canvas
Api Endpoints
Assignments
Submissions
Users
Course
...
...
...
...
Front End
Jupyterhub
ZFS Fileserver
GitHub
Students
release/
Public
Grading Server
Overview
Instructors
config.py
gradebook.db
Private
source/
release/
Canvas
Api Endpoints
Assignments
Submissions
Users
Course
...
...
...
...
Front End
Jupyterhub
GitHub
ZFS Fileserver
/tank/home
Student 1
release/
Student …
release/
Student N
release/
Grading Server
Overview
GitHub
Students
release/
Public
Instructors
config.py
gradebook.db
Private
source/
release/
Canvas
Api Endpoints
Assignments
Submissions
Users
Course
...
...
...
...
Front End
Jupyterhub
Canvas ZFS Fileserver
Api Endpoints
Assignments
Submissions
Users
Course
...
...
...
...
/tank/home
Student 1
release/
Student …
release/
Student N
release/
/tank/home
Grading Server
/tank/home
Instructors
gradebook.db
...
Private
Overview
GitHub
Students
release/
Public
Instructors
config.py
gradebook.db
Private
source/
release/
Front End
What Ties Everything Together?
• rudaux is a Python module which provides
the framework for managing a course with
Canvas and JupyterHub

• ltiauthenticator is a JupyterHub
authenticator that receives Canvas launch
requests and grabs Canvas ID

• nbgitpuller is a Jupyter plugin that
allows unidirectional git sync and redirection

• The Canvas API enables bidirectional data
transfer between JupyterHub and Canvas
rudaux
github.com/samhinshaw/rudaux
Clicking this…

• Authenticates student by Canvas ID

• Pulls homework_1.ipynb to JupyterHub

• Opens sandboxed Jupyter notebook
(homework_1.ipynb) in new window
(ltiauthenticator)
(nbgitpuller)
(nbgitpuller &
dockerspawner)
Jupyterhub
ZFS Fileserver
/tank/home
Student 1
release/
Student …
release/
Student N
release/
/tank/home
User authentication
GitHub
Students
release/
Public
(ltiauthenticator)
(nbgitpuller &
dockerspawner)
Instructors
config.py
gradebook.db
Private
source/
release/
Canvas
Api Endpoints
Assignments
Submissions
Users
Course
...
...
...
...
Front End
Jupyterhub
ZFS Fileserver
/tank/home
Student 1
release/
Student …
release/
Student N
release/
/tank/home
GitHub
Students
release/
Public
Grading Server
/tank/home
autograding
Instructors
gradebook.db
...
Private
ZFS filesystem
snapshots at close time
cron job initiates nbgrader
grading at close time
Instructors
config.py
gradebook.db
Private
source/
release/
Canvas
Api Endpoints
Assignments
Submissions
Users
Course
...
...
...
...
Front End
Features
• Students’ progress is saved

• Students’ notebooks are sandboxed with Docker

• Students can only access their own work

• JupyterHub access is restricted to LTI launch requests

• Student work is automatically gathered for submission at
the assignment close date
Student Goals
• Students only ever need to visit Canvas.

• JupyterHub provides a sandboxed environment with all
dependencies preinstalled.

• Learning data science with Jupyter provides skills which
can be directly applied to future endeavors.
Instructor Goals
• Instructors can configure entire course from one file.

• Canvas assignments are automatically created for the
instructor that point to corresponding assignment URLs.

• Grading can be 100% automated, or incorporate
feedback from TAs.
Thanks to
Tiffany Timbers
Ian Allison
Mike Gelbart
The Ha
Calvin Leung
Yuvi Panda
@samhinshaw
rudaux_config.py
Note: this can be incorporated into nbgrader_config.py if you wish to have only one config file
c.Canvas.course_id = 5394
c.Canvas.canvas_url = 'https: //ubc.test.instructure.com'
c.GitHub.ins_repo_url = 'git@github.ubc.ca:hinshaws/DSCI_100_instructors.git'
c.GitHub.stu_repo_url = 'git@github.com:samhinshaw/dsci-100.git'
c.JupyterHub.hub_url = 'https: //hub-prod-dsci.stat.ubc.ca'
c.Course.timezone = 'US/Pacific'
c.Course.assignments = [
{
"name": "week_1",
"duedate": "2018-08-14",
"duetime": "23:59:59",
"points": 2,
"manual": True
},
{
"name": "homework_1",
"duedate": "2018-08-15",
"duetime": "11:00:00",
"points": 5
}
]
rudaux_config.py
Note: this can be incorporated into nbgrader_config.py if you wish to have only one config file

Contenu connexe

Tendances

Tendances (10)

Redes Lan
Redes LanRedes Lan
Redes Lan
 
Kafka Tutorial: Advanced Producers
Kafka Tutorial: Advanced ProducersKafka Tutorial: Advanced Producers
Kafka Tutorial: Advanced Producers
 
Nmap
NmapNmap
Nmap
 
Puertos
PuertosPuertos
Puertos
 
Radiocomunicaciones
RadiocomunicacionesRadiocomunicaciones
Radiocomunicaciones
 
IPv6 en entornos ISP
IPv6 en entornos ISPIPv6 en entornos ISP
IPv6 en entornos ISP
 
DPI BOX: deep packet inspection for ISP traffic management
DPI BOX: deep packet inspection for ISP traffic managementDPI BOX: deep packet inspection for ISP traffic management
DPI BOX: deep packet inspection for ISP traffic management
 
Introduction to Segment Routing
Introduction to Segment RoutingIntroduction to Segment Routing
Introduction to Segment Routing
 
Laboratorio 03 emulación de redes con gns3 (1)
Laboratorio 03 emulación de redes con gns3 (1)Laboratorio 03 emulación de redes con gns3 (1)
Laboratorio 03 emulación de redes con gns3 (1)
 
PERFORMANCE TESTING USING LOAD RUNNER
PERFORMANCE  TESTING  USING  LOAD RUNNERPERFORMANCE  TESTING  USING  LOAD RUNNER
PERFORMANCE TESTING USING LOAD RUNNER
 

Similaire à Canvas & JupyterHub Integration

Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
os890
 

Similaire à Canvas & JupyterHub Integration (20)

JavaScript and jQuery for SharePoint Developers
JavaScript and jQuery for SharePoint DevelopersJavaScript and jQuery for SharePoint Developers
JavaScript and jQuery for SharePoint Developers
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Run R on the cloud
Run R on the cloudRun R on the cloud
Run R on the cloud
 
Undine: Turnkey Drupal Development Environments
Undine: Turnkey Drupal Development EnvironmentsUndine: Turnkey Drupal Development Environments
Undine: Turnkey Drupal Development Environments
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
 
Intro To C++ - Class 08 - Separate Files & Set Functions
Intro To C++ - Class 08 - Separate Files & Set Functions Intro To C++ - Class 08 - Separate Files & Set Functions
Intro To C++ - Class 08 - Separate Files & Set Functions
 
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
 
Dockercon EU 2014
Dockercon EU 2014Dockercon EU 2014
Dockercon EU 2014
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbt
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
 
BMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenBMO - Intelligent Projects with Maven
BMO - Intelligent Projects with Maven
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Introduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud RunIntroduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud Run
 
Puppet getting started by Dirk Götz
Puppet getting started by Dirk GötzPuppet getting started by Dirk Götz
Puppet getting started by Dirk Götz
 
01 spring-intro
01 spring-intro01 spring-intro
01 spring-intro
 
4 maven junit
4 maven junit4 maven junit
4 maven junit
 
Tribal Nova Docker feedback
Tribal Nova Docker feedbackTribal Nova Docker feedback
Tribal Nova Docker feedback
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 

Dernier

1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 

Dernier (20)

Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 

Canvas & JupyterHub Integration

  • 1. JupyterHub & Canvas Integration DSCI 100 @samhinshaw
  • 2. Goals for DSCI 100 • Code in the cloud—no device restrictions or complex installation prerequisites. • Canvas as single location for students to navigate to. • No need to interface directly with git or GitHub. • Transferable knowledge—no “special” sandboxed environments that do not translate to real-world use. Students - Focus on the code!
  • 3. Goals for DSCI 100 • Ease of configuration • Automated course setup • True automated grading Instructors - Reduce administrative burden!
  • 4. • A server framework to host Jupyter notebooks and authenticate users • A learning management system to manage assignments. • Serves as single location for students to visit. nbgrader • An automated grading system.
  • 6. Jupyterhub ZFS Fileserver GitHub Grading Server Overview Canvas Api Endpoints Assignments Submissions Users Course ... ... ... ... Front End
  • 8. Jupyterhub GitHub ZFS Fileserver /tank/home Student 1 release/ Student … release/ Student N release/ Grading Server Overview GitHub Students release/ Public Instructors config.py gradebook.db Private source/ release/ Canvas Api Endpoints Assignments Submissions Users Course ... ... ... ... Front End
  • 9. Jupyterhub Canvas ZFS Fileserver Api Endpoints Assignments Submissions Users Course ... ... ... ... /tank/home Student 1 release/ Student … release/ Student N release/ /tank/home Grading Server /tank/home Instructors gradebook.db ... Private Overview GitHub Students release/ Public Instructors config.py gradebook.db Private source/ release/ Front End
  • 10. What Ties Everything Together? • rudaux is a Python module which provides the framework for managing a course with Canvas and JupyterHub • ltiauthenticator is a JupyterHub authenticator that receives Canvas launch requests and grabs Canvas ID • nbgitpuller is a Jupyter plugin that allows unidirectional git sync and redirection • The Canvas API enables bidirectional data transfer between JupyterHub and Canvas rudaux github.com/samhinshaw/rudaux
  • 11. Clicking this… • Authenticates student by Canvas ID • Pulls homework_1.ipynb to JupyterHub • Opens sandboxed Jupyter notebook (homework_1.ipynb) in new window (ltiauthenticator) (nbgitpuller) (nbgitpuller & dockerspawner)
  • 12.
  • 13. Jupyterhub ZFS Fileserver /tank/home Student 1 release/ Student … release/ Student N release/ /tank/home User authentication GitHub Students release/ Public (ltiauthenticator) (nbgitpuller & dockerspawner) Instructors config.py gradebook.db Private source/ release/ Canvas Api Endpoints Assignments Submissions Users Course ... ... ... ... Front End
  • 14. Jupyterhub ZFS Fileserver /tank/home Student 1 release/ Student … release/ Student N release/ /tank/home GitHub Students release/ Public Grading Server /tank/home autograding Instructors gradebook.db ... Private ZFS filesystem snapshots at close time cron job initiates nbgrader grading at close time Instructors config.py gradebook.db Private source/ release/ Canvas Api Endpoints Assignments Submissions Users Course ... ... ... ... Front End
  • 15. Features • Students’ progress is saved • Students’ notebooks are sandboxed with Docker • Students can only access their own work • JupyterHub access is restricted to LTI launch requests • Student work is automatically gathered for submission at the assignment close date
  • 16. Student Goals • Students only ever need to visit Canvas. • JupyterHub provides a sandboxed environment with all dependencies preinstalled. • Learning data science with Jupyter provides skills which can be directly applied to future endeavors.
  • 17. Instructor Goals • Instructors can configure entire course from one file. • Canvas assignments are automatically created for the instructor that point to corresponding assignment URLs. • Grading can be 100% automated, or incorporate feedback from TAs.
  • 18. Thanks to Tiffany Timbers Ian Allison Mike Gelbart The Ha Calvin Leung Yuvi Panda @samhinshaw
  • 19. rudaux_config.py Note: this can be incorporated into nbgrader_config.py if you wish to have only one config file c.Canvas.course_id = 5394 c.Canvas.canvas_url = 'https: //ubc.test.instructure.com' c.GitHub.ins_repo_url = 'git@github.ubc.ca:hinshaws/DSCI_100_instructors.git' c.GitHub.stu_repo_url = 'git@github.com:samhinshaw/dsci-100.git' c.JupyterHub.hub_url = 'https: //hub-prod-dsci.stat.ubc.ca' c.Course.timezone = 'US/Pacific'
  • 20. c.Course.assignments = [ { "name": "week_1", "duedate": "2018-08-14", "duetime": "23:59:59", "points": 2, "manual": True }, { "name": "homework_1", "duedate": "2018-08-15", "duetime": "11:00:00", "points": 5 } ] rudaux_config.py Note: this can be incorporated into nbgrader_config.py if you wish to have only one config file