This lecture is about what Computer Science is. So, computer science, broadly speaking, comprises many different activities. Within the field of computer science, sometimes we divide activities up into Theory, Systems, and Applications, and now let me say quickly what those three categories mean. So by theory we mean theoretical work on what computers can do, what kinds of problems can be computed. By systems we mean the, the study of computers themselves, the building of the software that runs computers, the operating systems, the design of the programming languages they use to program computers. And, and things like that. And applications are sort of everything else, things we use computers for. And in fact, as computer science has matures as a field, the applications that are within computer science many of them have spread to other fields and sometimes aren't even called computer science anymore. So application's a very broad area, which is using computers in generally a sophisticated way to do something else, not studying the computer, itself. An important aspect of computer science is to think computationally. Computer scientists approach a problem in a, on way they have been trained to do which is, which requires an understanding of what a computer is and what computers can do. So it's not merely knowing how to program. Thinking computationally is about thinking of, of a problem in terms of. Dividing it into tasks that can be, can be done by a computer, that can be very very precisely described because computer is going to do exactly what you tell it and nothing else and you need to think through a problem very carefully and if you're really thinking computationally about it. So now turning to one of those major areas of computer science, the systems area,. One of the things computer scientists do we won't talk about it in this course, but one of the things computer scientists spend a lot of time on is building the software that runs the computer. This is invisible to most of you but for those of you who are using a Macintosh computer right now, underneath that computer is an operating system called UNIX which is the most mature and oldest operating system out there, it's actually been around for well over 30 years now. And the computer's operating system has to do things like move data around from the, from the disc drive or the, the, or other devices to the internal memory of the computer which is called RAM or Random Access Memory. The, the operating system has to handle running the programs, the programs themselves have to be loaded into memory. And it goes out and fetches data that the programs will process, and then spits data out in, in forms of printouts on your screen, or printouts to a printer, and things like that. So, the operating system has to manage. And in today's computers, that's to say are all multi, multiprocessor computers. So, the operating system manages that, too. That's what allows you to run multiple programs all at the same time, and have the computer not, have the computer respond robustly. So, that's what we mean by. The systems level aspect of computer science. Now another aspect of computer systems is designing programming languages. So programming languages, and we're going to cover you're going to learn about Python later in this course, that's one that is a programming language. There are many programming languages out there. Dozens, if not hundreds of languages. Popular ones today are things like Python, Perl. C++, Java, and others. And a programing language is really how we talk to computers. They aren't really anything like natural languages, such as English which I am speaking to you in. They're very, very highly constrained languages. They have specific defined terms, that have a specific meaning. And when you write these, when you write programming language code, you're telling the computer what to do. In a very precise way. So programming languages are, are designed to, basically allow us to talk to the computer and get the computer to do the things we want it to do. But, they're limited. They're not like natural languages. Now, another aspect of computer science is Engineering, and there's going to be a whole other lecture we'll have on software engineering. But, writing good code is not easy to do. So just because you can write a few lines of code in a language like Python or Perl. Doesn't mean that you can, that you're engineering the code well. And we'll talk about that more later. But really, what engineering means, is testing your code. After you've written code, you need to test it, and make sure it works in all the ca, all the cases, and all the conditions that it needs to work on. And then it delivers what it's supposed to do. Because the user, when the user, when someone is running a program. They don't want to have to, you sh, they shouldn't have to think about what the program is supposed to do and the program shouldn't for example, shouldn't crash or shouldn't hang the computer leaving you with say a spinning wheel that makes you wait forever. And the last aspect of, of computer science that I'll talk about and there are certainly many that I'm leaving out here. Our hardware aspect, so someone has to worry about how the software, which I've been talking about so far, that is program is that you, programs that you write whether they're operating systems or applications programs, those programs have to talk to the actual device itself. Now many of you are probably using a laptop computer or a desktop computer, but there are now mobile computers that you're walking around with. Those include your phone, probably most pro, most commonly. But also more and more commonly we see the little robots like the one I am showing you in this picture. And devices are also, devices that are primarily controlled by computers are also one of the main aspects of the study of computer sciences today. So and as, as time goes on, we expect to see more and more of the devices in our world. That are controlled by programs. And it's important, if you want to understand how these devices are working and why they're doing what they're doing, it helps to think like a computer scientist.