We might call this "DevOps Courseware"...
except that doesn't sound as good, does it?
A point I will stress again later: I am not here trying to tell
anyone how to prepare their courses! And I certainly am not
suggesting everyone drop what they are doing and do things my
way!
Why Agile Courseware?
Is this just a cute buzzword, or should you be
interested?
Benefits of Agile Courseware
Agile Courseware is not a rival to, or
replacement for, educational approaches like
Active Learning.
The goal of Agile Courseware is to
deliver whatever pedagogical approach
works more easily, more rapidly, more
error-free, more collaboratively, and so
on.
Course materials are easily shared among faculty:
No emailing of bulky PowerPoint files.
Work is in open, text-based formats: parts can
easily be extracted for use elsewhere.
It is much easier to grab
someone else's HTML table (with permission!)
and incorporate in your own work than to
use just a part of their PowerPoint
presentation.
The work exists in open repositories on
the Internet (or inside a firewall, if
necessary).
Open content developed for in-person classes
can easily be transferred to online classes
Continuous learning:
Because materials are based on open standards,
generally text-based, and stored in public
repositories, it is easy for other faculty
members to learn how any "neat trick" was done.
Not so easy for PowerPoint, etc.
Also, it is simple for other educators to
improve on someone else's original work,
so that the original author learns from
others.
And by having the work in an open repository,
knowledge need never disappear.
Text-based materials can easily be processed by
scripts.
Rapid deployment:
Only a text editor and Internet access are
needed to deploy new versions. No need to
access PowerPoint, fetch files from a laptop,
login to a special machine, etc.
Coordination across multiple work machines is
easy:
I don't need to remember what I've updated from
my desktop when I get on my laptop to work on a
course. No need to download particular files
from Blackboard, Moodle, Classes, etc. to have
my laptop up-to-date:
I just run "git pull" and every new file is on
whatever machine I am using!
I don't even need one of my machines with me: I
have accounts on PythonAnywhere, and I can log
in from a public terminal, or a podium PC,
pull the latest material, update a mistake, and
push it back to the repository. The whole
process takes less than a minute.
Students, acting as TAs, or open-source
collaborators, will learn agile development and
DevOps principles hands-on.
I now have over 20 students contributing to
open-source projects I have initiated.
This is a great resume plus for all of these
students.
TAs can much more easily contribute to the
courseware: instead of passing files back and
forth and deciding who "owns" them at any time,
we just use the power of verion control and can
all work simultaneously without worries.
Once these tools are mastered, they can be used
not just for courseware, but for co-authoring
books
or papers, and, of course, for
software projects.
Breakdown silos between courseware provider,
courseware user, between different teacher's
courseware, and between different courses.
Mistakes easily rolled back
I wiped out my entire Algorithms course by running
a script on the wrong machine.
Using git, in about a minute, I was able
to restore the whole course.
Can be manipulated by programs
Platform-independent
Easy to incorporate other resources
Uses open-source tools whenever possible
Agile Practice
How can the above principles be put into practice?
This is not an all-or-nothing transition!
That would be anti-DevOps! That would be
Waterfall Model development.
Faculty can keep working as they have been, and
gradually incorporate more "Agile Courseware" into
their practice.
Algorithms course
Generating the menu:
When I made it collapsible,
it took 4 lines of awk code,
not 28 lines of HTML, because the menu is
generated by a script and a text file.
There is a new edition of CLRS coming: we
will change chapters.txt, and a new main
menu will emerge from our build process!
That same text file is used to build the
language table as well.
Deploy
200
times more frequently
Amazon deploys new software, on
average, every
12 seconds, every day!
Google releases new software 50,000
times per day.
Deploy on demand
Need only one hour lead time for
changes.
Recover from deployment failures in
less than one hour.