Appendix B — Julia Learning Resources ✏️

The computational examples in this textbook use the Julia programming language.

B.1 Why Julia?

Julia is a fast, modern, open-source programming language designed for scientific and numerical computing. The language is designed to be fast, dynamic, and easy to use and maintain.

Key advantages for this textbook include:

  • High-Level Syntax: Julia has a clean and expressive syntax that closely parallels mathematical notation.
  • Performance: Julia compiles to efficient machine code, achieving speeds comparable to low-level languages like C and Fortran. This solves the “two-language problem,” where you might prototype in a high-level language but need to rewrite for performance.
  • Simplified Dependencies: Eliminates or reduces the need for dependencies on C and Fortran libraries, which simplifies installation and maintenance.
  • Open-Source and Shareable: Julia is completely open-source with excellent package management for reproducible research environments.
  • Strong Ecosystem: Despite being newer, Julia has a rapidly growing ecosystem of high-quality libraries for scientific domains.

While Julia is powerful for computational thinking and research, many ecosystems remain stronger in other languages (like Python’s deep learning and climate data analysis tools), so a well-rounded programmer benefits from learning multiple languages.

You can read more about Julia’s design philosophy:

B.2 Learning resources

This textbook aims to never reinvent the wheel. There are lots of exceptional resources for learning Julia, or for learning computational concepts with Juila. Here are some favorites:

B.2.1 Specialized topics

Here are some additional resources for specific Julia tools and packages developed in this class