Hello again. This group of lessons explores the concept of randomness. It discusses how and where to use it in your programs. We'll introduce the concept of pseudo-randomness, and how it affects your programs. Last, we will touch briefly on the fundamentals of cryptography, and give some cryptography examples. Let's start. Now, the goals of this section for randomness are basically to show you how using random numbers works, and some of the pitfalls that may occur. One of the biggest pitfalls is the notion of pseudo-randomness, where you get something that looks random but is actually predictable. We'll talk about this in a little bit more detail, in a bit. We're also going to look a little bit at what at randomness actually is, so we can distinguish between random and pseudo-random. Then if you go on to the slide about the section on cryptography, we're going to look at a couple of things here. We're not going to talk about cryptography in general. Basically, we're going to assume you know little bit about that. But what we are going to do is talk about how crypto is used, and also when to use it and how not to use it, and also what not to do. So we'll talk about basic use when you're programming and how to do it. The basic rule of cryptography to take a step forward is simple, don't write it yourself. Unless you absolutely have to write it, don't. Use libraries that are trusted and that had been written by professionals, or by people who really know their cryptography.