# Best all-purpose text or website for learning Julia?

**URL:** <https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619>\
**Category:** New to Julia\
**Created:** [October 5, 2023, 4:11pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619 "2023-10-05T16:11:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![RobertTalbert](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roberttalbert/32/202249_2.png) [@RobertTalbert](https://discourse.julialang.org/u/RobertTalbert)\
**Post date:** [October 5, 2023, 4:11pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/1 "2023-10-05T16:11:22Z")

</div>

Hi, I’m new to the Julia language but I have some very modest background in Python and R. I’ve been learning what I can of Julia from [Exercism.org](https://exercism.org/tracks/julia/exercises) and from taking some old R projects and “translating” them to Julia. Both have been useful and have helped me realize I want to learn more.

What’s your favorite all-purpose resource for learning Julia, whether it’s a print text, website, etc? I’m thinking of something like Hadley Wickham’s [R for Data Science](https://r4ds.hadley.nz/) but for Julia. I’m aware there is a [Julia for Data Science](https://juliadatascience.io/) website which is helpful however there are no exercises in it, which limits its usefulness in my case. And I’ve just found [ThinkJulia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html), and I’m a fan of Allan Downey’s stuff, so that seems promising. But I’m wondering what else might be out there.

A little more context: I’m a mathematician but my use case is primarily for doing data science, and I am relatively new to data science. (Did a couple of online DataCamp style courses but didn’t feel like I learned much there.) However I’m also interested in Julia’s applications to applied math (although my background is in pure math). The ideal resource would be fairly general, but not extremely technical, and include exercises where I could test what I am learning. And like I said, I have some background in Python and R but I would not consider myself an expert in either.

Thanks!

---

<div class="post-metadata">

**Author:** ![mpmanti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mpmanti/32/202258_2.png) [@mpmanti](https://discourse.julialang.org/u/mpmanti)\
**Post date:** [October 5, 2023, 5:50pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/2 "2023-10-05T17:50:46Z")

</div>

I’m a statistician who’s been an advanced user of R and an intermediate user of Python. I’m almost finished with _Think Julia_, which has been useful, but it feels a little too indebted to being a port of _Think Python_. Once I finish the last couple chapters of _Think Julia_, I intend to try [Julia for Data Analysis](https://www.manning.com/books/julia-for-data-analysis), which seems well-suited to your use case, which is much the same as mine.

---

<div class="post-metadata">

**Author:** ![martin.d.maas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/martin.d.maas/32/50964_2.png) [@martin.d.maas](https://discourse.julialang.org/u/martin.d.maas)\
**Post date:** [October 5, 2023, 5:54pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/3 "2023-10-05T17:54:48Z")

</div>

Some shameless self-promotion here, but I have a Julia tutorial series that I try to keep up to date.

> **[Julia Programming Tutorial](https://www.matecdev.com/posts/julia-tutorial-science-engineering.html)**
>
> This introductory tutorial about Julia focuses on its use in Science and Engineering.

and also several posts about performance, or doing some numerical computing / FFTs with Julia:

> **[Julia posts](https://www.matecdev.com/tags/julia.html)**
>
> Mathematics, Technology, and Software Development

I hope it can be a good place to get started with general Julia programming, and I also don’t think it’s too technical (i.e. it is not targeted at CS professional, but rather to scientists and engineers).

If you try to follow my tutorial and encounter any troubles, please let me know.

It’s not specific about data science, and it doesn’t contain exercises, but maybe it helps for your use case.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [October 5, 2023, 6:07pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/4 "2023-10-05T18:07:41Z")

</div>

Also see Julia Academy:

> **[Homepage](https://juliaacademy.com/)**
>
> The definitive source for learning all things Julia, for free!

---

<div class="post-metadata">

**Author:** ![slwu89](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/slwu89/32/217323_2.png) [@slwu89](https://discourse.julialang.org/u/slwu89)\
**Post date:** [October 5, 2023, 6:15pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/5 "2023-10-05T18:15:02Z")

</div>

Welcome to Julia!

I learned a lot from [Hands-On Design Patterns and Best Practices with Julia [Book] (oreilly.com)](https://www.oreilly.com/library/view/hands-on-design-patterns/9781838648817/) by Tom Kwong (on the discourse I think), but it doesn’t cover specifically data science topics, just general software design in Julia.

I also came from R, and learned a lot by just re-implementing things I did in R in Julia. For example, here’s an example of using S3 “inheritance” in R [S3 inheritance mocking dispatch on inherited types (github.com)](https://gist.github.com/slwu89/7e5524b8939b07cd187f03401e2b12b9) and in Julia using proper subtypes [the same example as s3inheritance.R in julia (github.com)](https://gist.github.com/slwu89/d6dfc8b9599284560918143332338478) I did to learn dispatch (albeit just on the type of single argument).

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [October 5, 2023, 6:21pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/6 "2023-10-05T18:21:34Z")

</div>

Slightly off topic, cause this is not about learning Julia per se. Instead, this is about making your Julia journey easier with good coding practices and useful development tools:  
[https://modernjuliaworkflows.github.io/](https://modernjuliaworkflows.github.io/)

---

<div class="post-metadata">

**Author:** ![mihalybaci](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mihalybaci/32/13528_2.png) [@mihalybaci](https://discourse.julialang.org/u/mihalybaci)\
**Post date:** [October 5, 2023, 6:21pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/7 "2023-10-05T18:21:53Z")

</div>

The julialang homepage has a [great list](https://julialang.org/learning/) of resources. I like the JuliaAcademy ones, but there are also a lot of tutorials on the YouTube channel (use link above). If you want to get straight into “doing stuff” I really like [MIT’s computational thinking course](https://computationalthinking.mit.edu/). It’s very science focused, but still teaches the basics well through Pluto notebooks.

---

<div class="post-metadata">

**Author:** ![RobertTalbert](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roberttalbert/32/202249_2.png) [@RobertTalbert](https://discourse.julialang.org/u/RobertTalbert)\
**Post date:** [October 5, 2023, 7:27pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/8 "2023-10-05T19:27:37Z")

</div>

All of this looks very useful! Thanks, and please keep recommending.

It’s nice to see that the Julia community is just as welcoming as I’d heard it was. 😀

---

<div class="post-metadata">

**Author:** ![rdavis120](https://avatars.discourse-cdn.com/v4/letter/r/b5a626/32.png) [@rdavis120](https://discourse.julialang.org/u/rdavis120)\
**Post date:** [October 5, 2023, 8:02pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/9 "2023-10-05T20:02:55Z")

</div>

This is a short workshop from Doug Bates which I found useful. If you’re familiar with arrow, quarto, and duckdb they can easily be used the same way in Julia as in R.

[https://crsl4.github.io/julia-workshop/](https://crsl4.github.io/julia-workshop/)

---

<div class="post-metadata">

**Author:** ![frylock](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/frylock/32/50213_2.png) [@frylock](https://discourse.julialang.org/u/frylock)\
**Post date:** [October 5, 2023, 8:46pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/10 "2023-10-05T20:46:33Z")

</div>

I don’t hear it much at all here, but in many languages I’m used to hearing hate for the documentation - but Julia’s documentation is pretty great, IMO. I’d say I spent most of my time reading and re-reading it.

When I was really new, I found this lecture by Stefan Karpinski really motivating:  
[JuliaCon 2019 | The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski - YouTube](https://www.youtube.com/watch?v=kc9HwsxE1OY)

Packages, confused me. There isn’t anything wrong with them - but there very well may be something wrong with me. [This](https://jkrumbiegel.com/pages/2022-08-26-pkg-introduction/) helped.

Some of the bullet points from our company “new-to-Julia” list:

- [Learn Julia the Hard Way](https://scls.gitbooks.io/ljthw/content/)
- [JuliaAdviceForMatlabProgrammers](https://github.com/brenhinkeller/JuliaAdviceForMatlabProgrammers)
- [Julia cheat sheet](https://cheatsheet.juliadocs.org/)
- [Scientific Programming in Julia](https://juliateachingctu.github.io/Scientific-Programming-in-Julia/dev/)

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [October 5, 2023, 10:59pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/11 "2023-10-05T22:59:26Z")

</div>

Since you mentioned data science, check our recent book:

> [@\[NEW BOOK\] Geospatial Data Science with Julia](https://discourse.julialang.org/t/new-book-geospatial-data-science-with-julia/103364):
>
> The book will be published soon, and will contain practical applications of the framework we built over the years. If you would like to see an application in a specific area (e.g., agriculture, groundwater, environment, mining, energy), please reach out and we can try to include it in the book.

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [October 6, 2023, 8:09pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/12 "2023-10-06T20:09:26Z")

</div>

Mine, with sone quizzes (for the first part) and exercises (second part):  
[Introduction to Scientific Programming and Machine Learning with Julia](https://sylvaticus.github.io/SPMLJ/dev/#Introduction-to-Scientific-Programming-and-Machine-Learning-with-Julia)

---

<div class="post-metadata">

**Author:** ![simonbrauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbrauer/32/52269_2.png) [@simonbrauer](https://discourse.julialang.org/u/simonbrauer)\
**Post date:** [October 6, 2023, 10:02pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/13 "2023-10-06T22:02:25Z")

</div>

Also coming from R. I bounced around between a few of those already listed. I don’t entirely know why, but I found Julia as a Second Language to be the particularly helpful.

> **[Julia as a Second Language](https://www.manning.com/books/julia-as-a-second-language)**
>
> Learn the awesome Julia programming language by building fun projects like a rocket launcher, a password keeper, and a battle simulator.
> 
> Julia as a Second Language covers:
> 
> Data types like numbers, strings, arrays, and dictionaries
> Immediate...

---

<div class="post-metadata">

**Author:** ![mrufsvold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrufsvold/32/31600_2.png) [@mrufsvold](https://discourse.julialang.org/u/mrufsvold)\
**Post date:** [October 7, 2023, 12:17am UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/14 "2023-10-07T00:17:54Z")

</div>

I don’t know if you like learning from videos but [Doggo dot jl](https://youtube.com/@doggodotjl?si=QM-V_XRkndGt4IWG) is what got me started in Julia. Their intro to Julia series helped me feel much more comfortable with types, multiple dispatch, and other things that are special about Julia. They also have series of dives into different domains where Julia is big. Each video is accompanied by a Pluto notebook so you can follow along.

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [October 7, 2023, 1:47am UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/15 "2023-10-07T01:47:01Z")

</div>

I feel that I can recommend Practical Julia based on your background description, a recent release aimed at working scientists and mathematicians:

> **[Practical Julia](https://nostarch.com/practical-julia)**
>
> Use Julia as a research tool and solve real-world problems in this practical, hands-on intro to the language.

(Disclaimer: I did technical review for the book, but do not receive any share of sales.)

---

<div class="post-metadata">

**Author:** ![amrods](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amrods/32/2543_2.png) [@amrods](https://discourse.julialang.org/u/amrods)\
**Post date:** [October 7, 2023, 10:05pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/16 "2023-10-07T22:05:33Z")

</div>

Any of these include tutorials on using the debugger? I find myself using `println` too much ☹ .

---

<div class="post-metadata">

**Author:** ![Jake](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jake/32/46007_2.png) [@Jake](https://discourse.julialang.org/u/Jake)\
**Post date:** [October 7, 2023, 10:29pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/17 "2023-10-07T22:29:13Z")

</div>

I second the “Julia for Data Analysis” and “Design Patterns and Best Practices with Julia” mentioned above.

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [October 8, 2023, 10:53am UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/18 "2023-10-08T10:53:49Z")

</div>

use Infiltrator

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [October 8, 2023, 10:54am UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/19 "2023-10-08T10:54:04Z")

</div>

> [@Jake](#):
>
> Design Patterns and Best Practices with Julia

This is a really nice book

---

<div class="post-metadata">

**Author:** ![mihalybaci](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mihalybaci/32/13528_2.png) [@mihalybaci](https://discourse.julialang.org/u/mihalybaci)\
**Post date:** [October 10, 2023, 12:58pm UTC](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619/20 "2023-10-10T12:58:31Z")

</div>

Search the JuliaLang youtube channel. IIRC, there are videos about the entire Julia VS Code workflow including `Revise` and `Debugger`.

[Next page](https://discourse.julialang.org/t/best-all-purpose-text-or-website-for-learning-julia/104619.md?page=2)
