Education Technology¶
#EdTech
, #EduTech
STEM¶
STEM (Science, Technology, Engineering, and Mathematics) is a broad field of R&D fields.
Science (Science, Data Science)
Technology (Computer Science, Information Systems, Art & Design, Education Technology)
Engineering (Knowledge Engineering, Software Development, Project Management)
Why STEM?
STEM combines fields for holism
STEM combines fields for allocation efficiency
STEAM includes Art & Design
Why CS?
Computer Science tools are foundational to Data Science, which is foundational to STEM, which is foundational to infrastructure.
Publishing¶
https://en.wikipedia.org/wiki/Publishing
Project Code and Artifact Repositories
Project Forge: GitHub, BitBucket, SourceForge
Artifacts: built packages, reports, PDFs, data files
DOI-granting repositories (“getting a citable identifier which resolves to a URL” (~like a shorturl)):
Data Hosting (see: Web Distribution):
Publishing Tools
GitHub Pages¶
GitHub Pages serves webpages from Git branches.
GitHub Pages serves from the
gh-pages
branch of project repositoriesGitHub Pages serves from the
master
branch of user and organization reposGitHub Pages is backed by a CDN
GitHub Pages get URLs like: https://wrdrd.github.io/
GitHub Pages can have URLs like: https://wrdrd.com/
Adding a
./CNAME
file to a repo causes GitHub Pages to redirect URLs to the CNAME (e.g. https://wrdrd.com/)If the DNS domain name does not resolve, GitHub Pages still redirects to the address in the
./CNAME
file
Pgs can also serve webpages from Git branches like
gh-pages
andmaster
GitLab Pages¶
ReadTheDocs¶
ReadTheDocs is a free and Open Source web service for publishing Sphinx documentation sets which functions like a Continuous Integration build server and artifact publisher.
ReadTheDocs can rebuild HTML, PDF, and ePub from Sphinx ReStructuredText every time a commit is made to a e.g. GitHub or BitBucket repository: https://read-the-docs.readthedocs.io/en/latest/webhooks.html
ReadTheDocs can build and serve localized versions for one or more languages: https://read-the-docs.readthedocs.io/en/latest/localization.html
ReadTheDocs can build and serve multiple versions or Version Control Systems revisions. By default, ReadTheDocs will try appending
/en/latest/
, so these links all redirect to the first link
Self Directed Learning¶
Report Process:
[X] Goals: overbroad scope
[X] Generate: 1 ream of paper; 1 pack of pens
[o] Generate, Reduce, Clarify: Bookmarks, Zotero
[X] Reduce, Clarify: match, cluster, re-sequence sheets (2D)
[X] Products: transcribe handwritten sheets of paper as slides
[o] Products: glossary
[ ] Products: essay form
[o] Tools: Sphinx, ReStructuredText, ReadTheDocs
[o] https://westurner.github.io/self-directed-learning/process.html
Online Courses¶
Course Catalogs
Linked Curricula Graphs (RDF, RDFa, Schema.org/Course)
Class Central¶
Class Central aggregates lists of Online Courses.
Coursera¶
Coursera is a platform for Online Courses.
edX¶
edX is an Open Source platform for Online Courses written mostly in Python and Javascript.
Jupyter and edX¶
Jupyter Notebook and edX are mostly written in Python
It’s possible to generate an edX course from Jupyter notebooks:
Udacity¶
Udacity is a platform for Online Courses.
Udacity offers “Nanodegrees”: https://www.udacity.com/nanodegree
Jupyter and Learning¶
Jupyter Project is great for learning and education.
Jupyter Notebook supports over 42 languages other than Python.
Jupyter notebooks can be published as HTML, PDF, ePub, MOBI.
Jupyter notebooks can be published as reveal.js HTML slide presentations.
Jupyter notebooks can be published to and served directly from GitHub repos.
Jupyter notebooks can be published as edX courses (Jupyter and edX)
Jupyter notebooks can be structured into per-user, per-class, per-project Docker containers (and folders)
Jupyter notebooks can be saved to and read from Google Drive:
Jupyter notebooks are great for taking notes:
Jupyter notebooks should specify package dependencies (see: Jupyter and Reproducibility)
Jupyter notebooks can utilize code from SciPy Stack Packages (e.g. Pip Python Packages, Conda, Anaconda)
JupyterHub servers host Jupyter Notebook servers for one or more users; with authentication and optional Docker integration.
Learning Topics:
Jupyter and Reproducibility¶
Jupyter Notebook, Open Science, and Reproducibility.
Rule 3: Archive the Exact Versions of All External Programs Used
[ ] List required Packages and extensions
watermark: datetime stamp, package versions
version_information: Python interpreter, and Python Package versions
[ ] List instaleld Packages and extensions
[ ] List reference and other maybe supported OS
[ ] List reference and other maybe supported platforms
CPU: i386, i686, x86-64, ARMv
GPU
RAM
Salt Grains
[ ] Generate complete machine image (Backup, Restore, Virtualization)
Machine image process:
[ ] Backup: Take snapshot
[ ] Post-process: compress, add metadata, test decompression
[ ] Archive: share/store/backup/upload/verify
Machine Imaging Tools:
clonezilla (backup and restore partitions from CD/DVD, LAN, HTTP, SSH, PXE)
bup (Git-like backups for very many and very large files)
rsync, rsnapshot, rdiff
Virtualization Machine Imaging Tools
Docker Dockerfile and image
Packer config and image
Vagrant Vagrantfile and box
Jupyter and TDD¶
The input/output feedback cycle of IPython and Jupyter notebooks captures the essence of Test Driven Development
Jupyter notebooks can be tested with runipy and ipython_nose
Jupyter notebooks can be tested and graded with nbgrader
awesome-python-testing links to a number of testing concepts and Python tools
nbgrader¶
Jupyter notebooks can be submitted and centrally graded with nbgrader.
Note
While it’s possible to run tests of all code cells in a Jupyter notebook programmatically with runipy, it’s usually preferable to factor testable code into a module and a package (e.g. Python Package, Conda package) and then reference those tested functions from within a Jupyter notebook.
JupyterHub Servers¶
Sharing resources affords many challenges and opportunities
Timeshare resource exhaustion (CPU, RAM, Storage)
Security
Principle of least privilege (“privilege separation”, Confidentiality)
There are Docker containers for IPython Notebook, Jupyter Notebook, JupyterHub and supporting services.
JupyterHub servers spawn and proxy to separate instances of Jupyter Notebook; which run on different ports, IPs, and/or containers.
JupyterHub servers authenticate users from a number of sources (local, OAuth, GitHub)
Knowledge Engineering¶
Linked Curricula Graphs¶
https://westurner.github.io/self-directed-learning/slides.html#knowledge-graph (2012)
https://westurner.github.io/redditlog/#comment/ci3c1o3 (2014)
[ ] Add RDFa to Course Catalog / Index HTML pages
[ ] schema.org/Course: https://github.com/schemaorg/schemaorg/issues/195
[ ] Link each component of the curriculum to a Concept URI
Knowledge Engineering lists a number of Wikipedia Concept URIs
Wikipedia (-> DBpedia RDF <- LODCloud))
https://en.wikipedia.org/wiki/DBpedia – Wikipedia page for “DBpedia”
https://dbpedia.org/page/DBpedia – DBpedia page for “DBpedia”
https://www.wikidata.org/wiki/Q465 – Wikidata page for DBpedia (“Q465”)
A more local/structured vocabulary (with #permalink URIs) could also defined mppings from local Concept URIs to one or more Wikipedia Concept URIs
Common Core
LRMI
[ ] Write tools to discover curriculum resources relevant to one or more concept URIs
[ ] Write tools to sequence curriculum resources which have URIs
OpenBadges¶
[ ] OpenBadges JSON Web Signatures and Schema.org (RDFa, JSON-LD):
https://github.com/openbadges/openbadges-specification/issues/9
OpenBadges Backpack¶
See also: Team Building, Jupyter