Education Technology

Hashtags: #EdTech, #EduTech

STEM

STEM (Science, Technology, Engineering, and Mathematics) is a broad field of R&D fields.

Why STEM?

  • STEM combines fields for holism
  • STEM combines fields for allocation efficiency
  • STEAM includes Art & Design

Why CS?

Publishing

https://en.wikipedia.org/wiki/Publishing

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
  • pgs can also serve webpages from git branches like gh-pages and master

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.

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

Class Central

Class Central aggregates lists of Online Courses.

Udacity

Udacity is a platform for Online Courses.

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:

    https://github.com/jupyter/jupyter-drive

  • Jupyter notebooks are great for taking notes:

    https://github.com/notablemind/notablemind

  • 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:

Jupyter and Reproducibility

Jupyter Notebook, Open Science, and Reproducibility.

Lecture notes (in IPython Notebook format) on
Reproducible Science And Modern Scientific Software
“Ten Simple Rules for Reproducible Computational Research”
Rule 3: Archive the Exact Versions of All External Programs Used
  • [ ] List required packages and extensions

  • [ ] List instaleld packages and extensions

    • Pip: pip freeze
    • Conda: conda env export
    • Dpkg: dpkg-query -l, dpkg --get-selections, wajig list-installed
  • [ ] List reference and other maybe supported OS

    • OSX, Linux: uname -a
    • Windows: systeminfo
  • [ ] 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

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

Knowledge Engineering

See: Knowledge Engineering

Linked Curricula Graphs