Course Outline
Introduction
- What kind of programming language is Julia?
- How was Julia created, when, and by whom?
- Julia resources
Development Environment
- Introduction to the cloud development environment
- Terminal
- REPL
- Loading and installing packages
- IDE
Fundamental types, variables and operators
- Basic data types
- Strings and interpolation
- Variables
- Operators
Variables, functions and operations
- Variables and constants
- Calling and declaring functions and lambdas
- Control flow, exception handling and errors
Scoping
- Function scopes
- Global and local scoping
- Blocks
- begin/end
- let/end
- Modules
- Data Structures
- Tuples
- Dictionaries
- Arrays
- Vectors
- Matrices & Linear Algebra
- Multidimensional arrays
- Dot notation (in functions)
- Missing values
Types
- Tuples and named tuples
- Structs and mutability
- Unions
- Abstract types and inheritance
- Parametric types (generics) and inheritance
- Value types
- Type checking
Methods and constructors
- Multiple dispatch
- Writing methods for abstract/types
- Constructors
- Print/show methods
- Operator overloading
- Interfaces
Metaprogamming
- Symbols
- Eval
- Expressions
- Interpolation
- Evaluation
- Calling and building macros
- Code generation
- @generated functions
Local concurrency and parallelism
- SIMD
- Parallelism
- Tasks & Channels
- Asynchronous programming
- Multithreading
- Performance optimization
Tooling
- Unit testing
- Performance benchmarking
- Profiling
- Logging
- Debugging: stack traces
I/O
- Reading and writing text and binary files
- Delimited files
- Memory mapped
- Downloading files
Requirements
There are no prerequisites to attending this course
Testimonials
I really liked that there were a lot of practical exercises in which you could put the learned immediately into action.
Daniel Bubla
The atmosphere was very nice, much more relaxed conversation than classic teaching style. Also, several of the techniques, especially those I doubt would hold up or be worth it (effort-gain-wise) under “real world” work conditions (as mentioned above) made me reflect on my coding style, and why I do or don't do some things (both on topics presented int he course and related ones), which I don't do that often (needed the impetus) but is really useful, even if I come to the conclusion that my style already suits my needs well.