Software for the course
Although our course is heavily based on mathematical methods, it is a course designed for (control) engineers, which is to say that our main shared goal is to learn to solve engineering problems by using the mathematical methods. And except for the simplest textbook problems, the needed methods are numerical, which inevitably means that our course must have a strong software component.
On the other hand, our graduate course is not just a vocational training in using a dedicated software tool. Instead, we are going to implement the methods introduced in our course by ourselves, at least to some degree, and even if at a prototype level. We believe that this is the best way to learn the potentials and limitations of the methods, even if ultimately – when solving real industrial problems – we may want (or be forced) to use use software tools developed by specialists.
Julia
In our course we are going to use the Julia programming language for implementation of the methods and numerical experimentation. The language and its compiler and standard libraries are free (and open source), ane a rich ecosystem of packages is available. Julia is a modern language, similarly high-level as Matlab or Python, but with a performance comparable to C or Fortran.
Julia is going to be used not only by the course lecturer(s) when demonstrating the methods in the lectures, these online lecture notes and exercises, but also by the students when programming the solutions to assigned homework problems. In order to reduce the load on students, incomplete code snippets will be provided, which students will have to complete only in the core algorithmic sections.
Below we give some basic information about Julia, including links to learning resources.
Install Julia
Instructions for all platforms are at https://docs.julialang.org/en/v1/manual/installation/.
Install VS Code
The most recommendable IDE is VS Code https://code.visualstudio.com. Julia Extension https://code.visualstudio.com/docs/languages/julia can be installed within VS Code.
Documentation
The official documentation is available at https://docs.julialang.org/en/v1/. It can also be downloaded as a PDF file. Programmers fluent with Matlab or Python will find this overview of differences https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-Differences-from-other-Languages useful.
Discussion forum
An active discussion forum exists https://discourse.julialang.org. But you may perhaps start by asking questions on our own course forum within the Teams platform.
Matlab and Simulink
As a course on computational methods for control design, we certainly cannot ignore the existence of Matlab and Simulink due their wide adoption both in academia and industry. In particular, when it comes to Simulink and its code generation capabilities, there is hardly any alternative. Therefore we will list in the respective sections of these lecture notes the appropropriate Matlab and Simulink functions and tools. After all, those students who decide to work on a semestral project in our automatic control lab will have to use Matlab and Simulink.