Strengths and Challenges of Julia for learning Linear Algebra

Julia notebooks seem like the perfect foundation for learning and teaching linear algebra, but
the feature sets of the competition (python, Matlab) are deep, and as the concepts get more
involved, the functionality involved challenges the capabilities of Julia and its ecosystem of
modules and visualizations. The strengths however shine through, making this a platform
worth fighting for.


Starting with a class historically taught using matlab, I set out to redo the the semester curricula
using Julia notebooks, learning Julia, graphing, the nature of Juliadata structures and the
dynamic/static tension of the language along the way, while also brushing into regressions
in module updates, and bumping into shortcomings of the current Julia ecosystem compared to
commercial software.

As I work my way through linear systems, iterative methods, curve fitting, optimization,
integration and differentiation, differential equations, singular value decomposition
and Fourier transforms; my understanding of Julia data structures progress, I gain
better command of manipulation and transformation of vectors and matrixes, I produce
deeper plots of underlying phenomena, I struggle to match the interactive demonstrations
of desktop software, and I begin to glimpse the complex structure going on behind the scenes
transforming the high level language into the algorithms that ultimately run.

After completing the majority of this endeavor, I see a number of strengths and some
challenges to completing this work and setting up Julia as a viable platform for education.

Some key strengths for Julia as a learning platform:
* web notebooks make a beautiful interactive environment
* support of unicode for variables and TeX for text allow for great presentation of math
* powerful language features for building transformation routines
* amazing performance on underlying algorithms once coded properly

Some opportunities to improve:
* Still a lot of legacy documentation for early Julia version confusing search results
* Lack of mechanism for natively generating figures/diagrams.
* Current documentation focus on what, but not why or how.
* Notebook support for two way interactions with web elements rudimentary at best
* Performance issues with heavy plotting animations, and regressions in GL support

The successes show that the potential is there, but there are more advanced visualizations
and simulations that come into play near the end of these courses where Julia falls
short of matching the current tools used in academia. A further challenge is the evolving
nature of the language itself, strata of conflicting documentation addressing different
generations of the language, and the regressions and shifting functionality of components
on the bleeding edge. With some work, Julia could become the dominant platform for
undergraduate courses; widening its exposure a great deal.