[MUSIC] Welcome back to our second week course on simulation and modeling of natural processes. In this fifth module we are going to introduce the programming language Python 3. We chose this language to be the programming language in which the quizzes of the course will be done. Why did we chose this program? The first advantage is that it is multi-platformed, so you can use it on Windows, Mac or Linux systems. It can also be used quite easily on more exotic hardware. It has many great features. It is relatively simple but powerful language, and also when using the NumPy library we saw that it can be also very efficient numerically. Another great advantage is that it has many available open-source libraries, which have many different functionalities that you may want or need. This introduction is particularly addressed to unexperimented programmers. So if you are already an expert on Python you may skip the rest of these modules. As a disclaimer, I want to warn you that this is explicitly a Python 3 course. It will not be backward-compatible with Phyton 2, so some of the things that we'll tell you may not work with Python 2. Before starting I suggest you to install at least the Python 3 program on your computer, you can download it on the website which is written on the slide. [COUGH] So if you want more informations about Python, which would be good and useful for the rest of the class, I recommend you some literature that you can find in this slide. And in particular, the free book, Dive into Python 3, which you can download on the website, which the URL is written on the slide. Do not hesitate also to look at the documentation of Python 3 to know all the features available for specific functions. Okay, so there's this different two main class of languages. The interpreted languages and compiled languages. Python is in the interpreted class. So what is the basic difference between these two classes of languages? In compiled languages, which, as example, you can see that C, C++, or Fortran are compiled languages. In this class of languages, what you will do with your program is that you will compile it so you will run a program that will translate the code in to seconds of machine instructions that will be saved in another file and then, you will be able to execute the file on your computer. On the other hand, the interpret languages run a bit differently. When you run a program it is directly interpreted so you have a program called the Interpreter that will take your program and on the fly translate your program into sub routines that are pre-compiled. As example of interpret programming languages you have Python or JavaScript or Ruby there are plenty of them. Okay, so what are the differences between interpreted and compiled languages? So these are only tendencies, so it may not be true for any pair or interpreted and compiled languages but on average they are true. So the main advantage of compiled languages is that they tend to be more efficient than interpreting languages. The reason is that there is an overhead in interpreted language, because you have to, on the fly, translate the code into sub-routines which are pre-compiled and this might take some time. Furthermore, the compiled code is compiled especially for your machine. So there are some kind of maybe better optimization that can be performed. On the other hand, interpreted code has many advantages and great features. Since you can skip the compilation process, they tend to be easier and faster to develop. The interpreted code also tends to be more portable. In fact, everything that you do in your interpreter works the same independently on the machine or the operating system, which is not always the case for compiled code. Finally, another nice feature of the interpreted codes is that they are dynamically typed. Okay, so with this we end the basic introduction to Python 3. And in the next module we will learn about running a Python 3 program. Thank you for your attention. [MUSIC]