**1. What is Julia?**

- Developed by MIT
- Fully open source
- Convenient syntax for building math constructs like vectors, matrices, etc
- Very fast

**2. Getting Started**

1. Run Julia in the cloud:

- JuliaBox
- Hassle free setup
- https://www.juliabox.org/

2. Run Julia locally (recommended):

- Faster and more flexible
- Requires some experience with command line

Install Julia:

Open the Julia application:

- You will be presented with a Julia command line

Create a Julia .jl file:

- Create and save a .jl file in a text editor

Open a Julia .jl file:

- cd to the directory where your .jl file is located – remember to use “ \\ ”
- Use “include” to run the .jl file

**3. Basics**

Types

- Integers: Int64, e.g. -45
- Real numbers: Float64, e.g. 1.256
- Booleans: Bool, true or false
- Strings: ASCIIString, e.g. “Hello World”
- Arrays: Array(Int64, 3) = 3 element array with Int64 values, e.g. [45, 3453, -23]

+, -, *, / Operators

Exponential’s

Boolean Expressions

- Evaluate to true or false
- Use the operators: == , != , < , > , <= , >=

Random Numbers

- Generate a random number between 0 and 1

**4. Variables**

- Assignments use the = operator
- E.g. value = 5.0
- E.g. name = “Bob”

**5. Control Flow (if statements, for loops)**

If Else Statements

- We see the result when we run this file in Julia:

For Loops

- We see the result when we run this file in Julia:

While Loops

- We see the result when we run this file in Julia:

**6. Functions**

**7. Arrays and Matrices**

Arrays

- Arrays can be initialised directly:

- Or initialised empty:

- Arrays like this can be initialised with a type:

- Ranges can be used to create arrays:

- Arrays can also be generated from comprehensions:

- We can access elements of the array:

- Arrays can be any type, so arrays of arrays can be created:

- We can push to arrays like so:

Matrices

- Matrices in Julia are represented by 2D arrays
- To create a 2×3 matrix:

- Semicolons delimit rows; spaces delimit entries in a row
- size(A) returns the size of A as a pair (n rows x m columns):

- Row vectors are 1xn matrices:

Indexing and Slicing

- Aij is found with A[ i, j ]:

- Ranges can also be used:

- : selects all elements along that dimension
- A[ : , 3 ] selects the third column:

- A[ 2, : ] selects the second row:

- A[ : ] returns the columns of A stacked as a vector:

Common Matrices

- zeros( n, m ):

- ones( n, m ):

- eye(n):

- diag(x) where x is a vector:

- Random nxm matrix:

Transpose and Matrix Addition

- A transposed is written “ A’ “:

- Adding and subtraction of matrices, e.g.

is written:

Matrix Scalar Operations

- All matrix scalar operations ( +, -, * ) apply element wise
- For e.g. matrix-scalar addition:

Is equivalent to:

- Scalar multiplication:

Is equivalent to:

Matrix Vector Multiplication

- The * operator is used for matrix vector multiplication
- For e.g.

Is written:

Matrix Multiplication

- The * operator is used for matrix multiplication

Is written:

**8. Packages**

- List all available packages:

- Install one package (e.g. Calculus) and all it’s dependencies:

- To list all installed packages:

- To update all packages to their newest version:

- To use a package:

- This will import all functions of that package into the current namespace, so that it is possible to call:

- … without specifying the package it is included in
- You can also specify which package the function is called from:

- … using ‘import’ is especially useful if there are conflicts in function/type-names between packages
- For example, the plotting packages ‘Winston’ and ‘Gadfly’ both use the ‘plot’ function
- This can be prevented by using ‘import’, as follows: