Dear all, I am pleased to announce the availability of the 2nd edition of my Apress book “Julia Quick Syntax Reference” [Springer]. [Amazon]
Yes, it’s not that quick (361 pages, over 50% more than the 1st edition) and it goes far beyond just syntax, but that’s the name the publisher chose
Basically, it’s a compact (I won’t waste space reporting obvious code output - you can still clone the associated github repository) practical introduction to the language and its ecosystem, with a strong focus on data analysis (DataFrames & friends, Plots, various IO packages…), the use of scientific packages (JuMP, SymPy, LsqFit, Distributions…) and machine learning work based on the BetaML package that I also helped to develop (which includes algorithms for regression, classification, clustering, missing imputation, dimensionality reduction, predictive analysis…).
This second edition goes deeper into modules, environments and parallelism in Julia (including GPU). It covers random numbers, reproducibility in stochastic computations, and adds a section on probabilistic analysis. Finally, it provides some practical exercises and solutions (in the git repository) for self-study.
As a new book, I have a limited number of PDFs of the final book that the editor allowed me to share in exchange for a review of the book (good or bad, of course).
If you are interested in getting one, please contact me via private message.
Most of the content of the book is also available (although in a much more messy form) on my Julia Concise Tutorial and Scientific Programming And Machine Learning in Julia (SPMLJ) online course.
Click to browse the book index
(pages refer to an internal document)
First part (Julia core)
Title | Page |
---|---|
1 Getting started | 7 |
1.1 Why Julia | 7 |
1.2 Installing Julia | 8 |
1.3 Running Julia | 10 |
1.4 Miscellaneous syntax elements | 11 |
1.5 Modules and packages | 12 |
1.6 Environments | 15 |
1.7 Help system | 17 |
2 Data types and Structures | 19 |
2.1 Simple types (Non-Containers) | 19 |
2.2 Strings | 20 |
2.3 Arrays (lists) | 21 |
2.4 Tuples | 27 |
2.5 Named tuples | 28 |
2.6 Dictionaries | 29 |
2.7 Sets | 30 |
2.8 Dates and times | 30 |
2.9 Memory and copy issues | 33 |
2.10 Various notes on data types | 34 |
2.11 Random numbers | 35 |
2.12 Missing, nothing and NaN | 36 |
3 Control flow and functions | 37 |
3.1 Code block structure and variable scope | 37 |
3.2 Repeated iteration: for and while loops, list comprehension, maps | 38 |
3.3 Conditional statements: if blocks, ternary operator | 41 |
3.4 Functions | 41 |
3.5 Do blocks | 47 |
3.6 Exiting Julia | 48 |
4 Custom Types | 49 |
4.1 Primitive type definition | 49 |
4.2 Structure definition | 50 |
4.3 Object initialisation and usage | 51 |
4.4 Abstract types and inheritance | 53 |
4.5 Some useful functions related to types | 57 |
4.6 Definition of common Julia terms | 57 |
EXERCISE 1: The Schelling Segregation Model | 59 |
5 Input - Output | 65 |
5.1 Filesystem functions | 65 |
5.2 Reading (Input) | 66 |
5.3 Writing (Output) | 72 |
5.4 Other specialised IO | 76 |
6 Metaprogramming and macros | 77 |
6.1 Symbols | 78 |
6.2 Expressions | 78 |
6.3 Macros | 81 |
7 Interfacing Julia with other languages | 84 |
7.1 Julia ⇄ C | 85 |
7.2 Julia ⇄ C++ | 86 |
7.3 Julia ⇄ Python | 90 |
7.4 Julia ⇄ R | 95 |
8 Efficiently write efficient code | 101 |
8.1 Performances | 101 |
8.2 Debugging | 109 |
8.3 Managing run-time errors (exceptions) | 115 |
9 Parallel Computing in Julia | 116 |
9.1 GPU programming | 116 |
9.2 Multi-threading (on the CPU) | 119 |
9.3 Multi-processing | 121 |
Second part (Packages Ecosystem)
Title | Page |
---|---|
10 Working with data | 124 |
10.1 Using the DataFrames package | 125 |
10.2 IndexedTables | 140 |
10.3 Using the Pipe operator | 143 |
10.4 Plotting | 144 |
11 Scientific libraries | 153 |
11.1 JuMP, an optimisation framework | 153 |
11.2 SymPy, a CAS system | 163 |
11.3 LsqFit, a data fit library | 166 |
11.4 Working with distributions | 168 |
EXERCISE 2: Fitting a Forest Growth Model | 171 |
12 AI with Julia | 176 |
12.1 Machine Learning Goals and Approaches | 176 |
12.2 The BetaML toolkit | 178 |
12.3 Data pre-processing | 181 |
12.4 Model fitting. An overview of the main algorithms | 191 |
12.5 Model evaluation, interpretation and hyperparameter tuning | 202 |
12.6 Specialized AI libraries in Julia | 215 |
EXERCISE 3: Predict the values of houses in Boston | 217 |
13 Utilities | 222 |
13.1 Weave for dynamic documents | 222 |
13.2 ZipFile | 226 |