Hello, welcome in this third section about programming dedicated to bugs. I'm sure you've come already come across one, I'll explain some of them. The first one is the USS Yorktown, which is an american warship launched in 96 with a Navy's Smart Ship program, which means "Intelligent Ship". During trials, a crew member made a mistake when inputting entry values into the machine, he entered 0 for a value that was not supposed to be 0. the consequence of that was that a division by 0 wormed its way inside the program and that totally crashed the operating system, and as a consequence nothing worked on the boat anymore, particularly the engines, which is a bit surprising, so the boat got totally stranded in the middle of the ocean. You can get some more details on that webpage, so what you need to remember, is that entry values must be checked because one can never be too sure that the end user is aware that there are forbidden values. That kind of unexpected value also provides a gateway for computer attacks. The Ariane 5 satellite launcher is another example. That satellite launcher is the replacement of Ariane 4, which worked really well with a certain program. And what they did was copy-paste the Ariane 4 program and put it into Ariane 5. The thing is Ariane 5 is much bigger, much heavier than Ariane 4, so some maximum values that were correct for Ariane 4 were not correct anymore for Ariane 5. So when they first launched Ariane 5, those maximum values were exceeded, and when maximum authorised values are exceeded in computer sciences, for an integer or a floating number, strange things happen, particularly for floating numbers, floating-point numbers, some very high values can become very small. For integers, some positive integers can become negative, and because of that, a totally ridiculous value appeared and the satellite launcher started going sideways because of that wrong value, so the launcher had to be destroyed to keep it from falling on the houses. So we can conclude that great care has to be taken of the variables we use and to their type to make sure maximum and minimum values are not exceeded. So what is a bug? Actually, a bug is what happens when the end user does not get what he wants. Bugs can occur for many reasons. It can be a programming error, which means the programmer made a mistake. Forget about a special case and use a typography, having a capacity overload like what I just talked about, illicit memory access, which means accessing a memory space that was not intended to be accessed, and so that was not initialised with a correct value, or a whole lot of other mistakes. There's a more insidious kind of bug, but just as regular, which is communication failure, meaning that there was a misunderstanding between the person who ordered the program and the person who programmed it, on entry values maybe, or on what the program was supposed to do, it can be many things. There can also be a communication failure between two programmers, because today's programs are not written by a single person, but by thousands of people who must interact and have to understand what the piece of program coming from the others does. To show you how big programs are, I showed you a little example with a drawing representing the number of lines of code for some programs. You can find that drawing in a higher resolution at this Web address, and I'll explain some of them to you. A pacemaker roughly amounts to 100,000 lines of code, so you can see it's already a hard for just one person to write it, and it's only a small program compared to what I'm about to tell you. Inside the Hubble space telescope, there are 2 million code lines, so that's quite a lot. Another bigger example would 5 million code lines, that's for the World of Warcraft servers, or the on-board code of a Boeing 787. Even bigger, Facebook represents approximately 60 million code lines. So you can imagine it's very complicated to be sure there are no errors in 60 million code lines, and that's why sometimes your programs don't give good results, or crash.