Before we really dive into Julia I wanted to go over the tools and learning resources I have and will be using going forward. These resources fit my learning journey and may not directly apply to you so I encourage you to spend some time to see what's out there.
I have compiled a list of learning resources that I intend to explore over the next 6 months as I progress in the Julia language. Any learning journey is prone to fail if you don't work towards an end goal. As stated in my previous post I want to use Julia to get into data science and machine learning and so it should come as no surprise that my selection of learning resources is biased toward these topics.
It was difficult to settle on a good book since the majority of books listed on the Julia website seem to be targeted towards programming beginners and seem to be lacking the depth I am looking for. Some other books have terrible ratings and so I excluded them. I ended up including only one book in the list below.
The following resources should help get a basic understanding of programming in Julia and provide a good set of problems and challenges to practice learned skills.
- The Julia track on exercism.io where you can get your coding solutions mentored by volunteers. This provides plenty of exercises to apply some of the basics and get high quality feedback.
- The Julia Language - A concise tutorial gitbook, as the name suggests, gives a concise overview of several important topics such as I/O, data structures, meta programming, package development and concurrency.
- Julia Academy provides a number of interesting courses.
- Finally, the official Julia documentation will always be my first go-to resource should I get stuck in a problem. As a shorthand for browsing the documentation I'll resort to using Julia's built-in help mode in the REPL.
Eventually I'd like to dive a lot deeper into Julia performance and how to squeeze the best performance out of my code.
- The MIT course Introduction to Computational Thinking is an incredibly well received course that uses Julia and Pluto.jl. The course teaches image analysis, machine learning, climate modelling and dynamics on networks.
- The only book that stood out to me is Julia High Performance - Second Edition by Avik Sengupta, Alan Edelman. Just judging from its cover it seems to go into a lot more depth than most books about Julia out there.
When it comes to tools, there really isn't that much needed for Julia other than a decent computer that runs any of the three main OSes. Most of my development these days happens on Mac OS, but I'm also exploring developing on a more powerful Windows machine with WSL2.
For now, I'm going to be using:
- Visual Studio Code with the Julia for VSCode extension. It's definitely not a requirement to use this particular editor or even the extension but it's an editor I'm already very comfortable with.
- Pluto.jl for interactive notebooks and quick data exploration
That's really all that's needed to get started. I'm sure my development workflow and tools will evolve over time but for now
If you are interested in seeing a different setup using neovim and tmux I suggest you check out Jacob Zelko's excellent post on his writing and coding workflow.
My method of learning a new (programming) language has evolved over time. Immediately applying what you learn is essential for retention. As I read through my resources and explore Julia packages I will develop small project ideas. These projects aren't necessarily meant to evolve into production-grade software, but rather produce something interesting or help me explore an area of technology.
Not all of my time will be spent on larger projects, however. There's value in exploring small coding challenges from exercism.io, projecteuler and others when you're short on time or can't make any progress in your project.
As I dive deeper into Julia and get more comfortable navigating the package ecosystem I expect the focus of my projects to also shift and my projects to grow in size.
I intend to document most of these projects and invite you to follow along as I learn this exciting language and discover its secrets.
You can also follow me on Twitter.