
This video provides an overview of the entire course.
Introduce the Read Eval program loop interface.
As a numerical language, numbers are central to Julia’s appeal. This video will be an introduction to numbers, but we will not go into the full depth, as that will require a complete understanding of the Julia type system.
Arrays are a big topic in Julia, but this video will cover only the ways that are common to use arrays in mainstream languages. In Julia, we can do quite a lot more with arrays.
Control flow statements in Julia are quite similar to other mainstream languages. They are used to alter the sequence of evaluated expressions.
Functions are central to Julia, as there are no classes with methods. So all code is located in functions. This will just be an introduction to the different ways which we define functions in Julia.
Variables in Julia are handled in similar ways to other dynamic languages. However, there are some unique differences in how types are handled.
A dictionary is a versatile datatype with many uses. It is also known as a map in some other programming languages. It allows us to access values using keys, which would typically be strings or numbers.
We’ll solve some practical problems within the field of computational biology to get some practical experience building your own functions.
To learn more about types we need to develop some methods to inspect types and learn more about them. How are they related and what fields do they contain?
This video is about conversion and promotion, concepts closely related to how programming languages deal with numbers of different types.
Learn how to create your own Julia types by building types and functions to handle some of the common operations in a 2D drawing package.
To learn more about types we need to develop some methods to inspect types and learn more about them. How are they related and what fields do they contain?
This video will cover networking in Julia. It will be similar to file IO, using many of the same functions and abstract types. The major difference is the need to deal with latency.
This video will cover how you read and write files storing tables of data, where the elements are delimited by tabs, comma, colon, and so on.
How do you manage a program made up of hundreds of functions and types so their names don’t collide and you don’t lose track of what is what?
This video will cover networking in Julia. It will be similar to file IO, using many of the same functions and abstract types. The major difference is the need to deal with latency.
This video will cover how you read and write files storing tables of data, where the elements are delimited by tabs, comma, colon, and so on.
Learn how to design common interfaces for multiple types in Julia, and use these interfaces to implement as well-known object-oriented design pattern.
You will learn interfaces and object-oriented design further by building a maze using the object-oriented design pattern, builder.
We'll look at ways of implementing the state pattern by looking at an example of a graphics editor with tools for adding different geometric shapes.
In OOP, many problems are best solved with implementation inheritance. We'll continue our graphics editor example to explore alternatives in Julia to inheritance.
Higher Order Functions, which are functions taking functions as arguments, is a central concept in Functional Programming.
We'll look at an interesting and important property of all higher order functions operating on collections. They can almost always be abstracted to:
How do we approach design patterns with a functional approach? We'll look at some classic OOP design patterns and implement them by focusing on functions rather than objects.
Putting it all together in a more elaborate example of combining functions to implement a classic OOP design pattern – Interpreter.
Implement a linked list to explore common traits of all Julia collections.
Arrays with multiple dimensions such as matrices.
We'll look at a way of combining types into a type, which can be a placeholder for several types, these type combinations are called type unions.
Parametric types are types which can take a parameter as an argument to create a concrete type. This is common in languages such as Java and C++ but unusual in dynamically typed languages like Julia.
We'll go through two practical examples showing how parametric types can be used for creating generic collections.
Assumptions about types especially in relation to subtypes can easily prove wrong when working with parametric types.
Julia is a new programming language designed for the needs of data scientists, statisticians, scientific computing, and engineers. Usually these disciplines have had to use a variety of of tools and languages:
With Julia you can replace all these tools with one programming language, since it offers both flexibility and speed.
Julia is a young language with limited documentation and although rapidly growing, a small user community. Most developers today will know the object oriented paradigm used in mainstream languages such as Python, Java and C++. This presents a challenge switching to Julia which is more functionally oriented. This course will not only introduce the language, but also explain how to think differently about problems with the Julia approach.
About the Author
Erik Engheim is a professional mobile developer with experience in many different programming languages, often in combination. Erik Engheim has worked with C/C#, Java, C++, Objective-C, and Swift before moving into Julia. His experience with Julia involves automation, and high performance processing of code strings.