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)
- Mathematics (Data Science)
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
- Version Control: Git, Mercurial
- 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):
- HTTP Object Storage (private/public CDN)
- BitTorrent
- It is faster to run the code next to the data.
- Publishing Tools
- GitHub Pages
- ReadTheDocs
- Sphinx
- Jupyter Notebook
- nbformat JSON -> HTML, HTML slides, LaTeX, PDF, ePub, MOBI
- nbviewer
- documentation-tools
GitHub Pages¶
GitHub Pages serves webpages from git branches.
- GitHub Pages serves from the
gh-pages
branch of project repositories - GitHub Pages serves from the
master
branch of user and organization repos - GitHub 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
- Adding a
- 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 vcs
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.
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, JupyterHub
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 ScipyStack 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:
- Computer Science
- Data Science > Data Learning
- Software Development
- Python
- awesome-python-testing
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
- Pip:
pip freeze
- Conda:
conda env export
- Dpkg:
dpkg-query -l
,dpkg --get-selections
,wajig list-installed
- Pip:
[ ] List reference and other maybe supported OS
- OSX, Linux:
uname -a
- Windows:
systeminfo
- OSX, Linux:
[ ] List reference and other maybe supported platforms
- CPU: i386, i686, x86-64, ARMv
- GPU
- RAM
- osquery
- 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
- Machine image process:
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