NOTE: This repo reflects an old version of the course, please see juliacourse2022 for a later iteration.
A short course in Julia for scientific programming
This version of the julia course is given at the Acoustic Reserach Laboratory @ National University of Singapore. The original course was given for graduate students at Dept. Automatic Control at Lund University, with course webpage: http://www.control.lth.se/education/doctorate-program/julia-course/julia-course-2019/
Teachers: Fredrik Bagge Carlson (@baggepinnen)
Session on Thursday 14/11 Control systems and DSP
Install ControlSystems.jl and ControlSystemIdentification.jl by running
using Pkg
Pkg.update()
Pkg.add("ControlSystems")
Pkg.add("ControlSystemIdentitifaction")
Pkg.add("DSP")
Pkg.add("LPVSpectral")
Pkg.add("https://github.com/baggepinnen/SpectralDistances.jl")
Pkg.add("Interact")
Pkg.precompile()
Follow further install instructions for WebIO if you want to use the interactive elements of the notebooks.
To run the identification notebooks, run the following in the terminal
git clone https://github.com/JuliaControl/ControlExamples.jl.git
(preliminary schedule)
- Intro
- Types, functions multiple dispatch
- Performance and profiling
- Workflow
- Parallel and distributed computing
- Optimization and Learning
- Control systems and DSP
Session on Monday 4/11 Optimization and Learning
It's recommended that you install the following packages before the session
using Pkg
Pkg.add(PackageSpec(name="Flux",rev="master")) # We will use the latest version of Flux
Pkg.add("IJulia")
Pkg.add("Optim")
Pkg.add("JuMP")
Pkg.add("Zygote")
Pkg.add("ForwardDiff")
Pkg.add("Ipopt")
Pkg.add("GLPK")
Pkg.precompile() # OBS!!! Only run this statement if you do it before the session, it will take a long time to finish.
Session on Thursday 24/10 Parallel and distributed computing
Recommended reading: Parallel computing in Julia
Session on thursday 17/10 1600 hrs Workflow and Design patterns and antipatterns
Recommended reading: Modules, Workflow tips
Session on monday 7/10 1600 hrs Types, functions multiple dispatch
Recommended watching The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski | JuliaCon 2019
Session on thursday 3/10 (Lecture 1: Intro) Before this session, it would be great if participants have a working Julia installation, and maybe also have given the getting started section of the manual a cursory read. Visit https://julialang.org/ and download Julia v1.2 (or v1.3-rc2 if you want to use the new multi-threading support, I use this version). If you prefer working in an IDE, I use Juno (based on atom), but vs-code, vim and emacs are also well supported.