 Welcome to this Introduction to Python and Programming course. My name is Alexander Hess, and I will be your instructor. So over the last couple of semesters, I've been teaching courses similar to this one at the university level, in particular to students in Bachelor and Master programs at a business school. So in these courses, I usually don't have any prerequisites. So I don't assume you know anything about programming and Python in particular. So what is the objective of this course? The objective, besides picking up a new programming language, is that I want to prepare you for further studies in the field of data science. So you may wonder, why data science? Well, I think that one of the most common applications of coding just happens to be the field of data science is you study at a business school. How is that? So in my case, for example, I am pursuing a PhD in logistics. So in my day-to-day job, what I do is I work with realized data, usually big data sets. And I try to solve typical logistical problems. So for example, I try to minimize some routes that you want to have in order to ship some product and so on. And these are typical applications. So in the field, we just analyze data. We run all kinds of statistics. Then we build optimization models. We build lots of simulations, like Monte Carlo simulations and other things. And in order to do that, you just need to know how to code. And Python happens to be one of the languages that are very good in these topics. And even in other disciplines at business schools, coding skills are getting more and more important in recent years. So that is why the goal, the actual end goal of this course is to prepare you for further studies in the field of data science. So what that means is I'm not focusing on things that you could also do with Python. For example, web development. Web development, that means building a web page or building a backend for some cool fancy mobile phone app. This could also be done in Python quite well even. And many big companies do that in Python. But however, we are not going to focus on that. So that is what, so when I have to choose what I put into the course and what I don't put into this course, that is what I have in mind. Or does it help you become a better data scientist somehow? If so, then most likely I will put the material in this course. Okay, so what you're currently seeing is a file in the format of a so-called Jupyter Notebook. So currently this is a web browser and I'm in full screen mode. If I leave the full screen mode, you see that I'm in a web browser. And the format of the file that I'm currently viewing is a so-called Jupyter Notebook, formerly known as iPython Notebook. That's the old name for that. So why am I using this format in this course mainly? Well, one of the other options I would have is to make your program, for example, in a terminal window. When you watch Hollywood movies and when there is a computer hacker in a Hollywood movie, usually what you see is a person sitting in front of, let's say, 10 big screens. And on all of them, there are these black boxes where a person can type some stuff in, some commands, and then the computer does something and then usually they solve some cool quizzes and so on and some other problems. And that is a good way to code. And I do that on my day-to-day basis a lot, a lot. However, that is not very beginner-friendly. So that is one of the reasons why I choose the Jupyter Notebook format. And in a future video, you will also see the other advantages, especially for a beginner in using Jupyter Notebooks. So how do Jupyter Notebooks work? Well, these files you can think of, they're kind of like Google Docs in the cloud. However, they are just running as we see on my local machine. And in these documents, they are made up of so-called cells. And here you see an example of such a cell. This is a code cell that contains actual Python code, in this case, one plus two. So if I execute this, then the computer tells me that one plus two is three, okay? So congratulations, Python knows arithmetic. But that is only a simple example. Another example of Python code would be a typical Hello World program that you usually learn in any programming language if you take a course. So what this code does here, it calls a built-in function that Python knows called print and it gives it some text, which is Hello World. And if I execute this, what Python does is, it simply prints out Hello World, okay? So that's also trivial, but it's another example of a code cell, okay? And in the materials, what you will see is the materials that are accompanying this course, they are written in a book, so to say, that is written in Jupyter Notebooks, okay? So each chapter is laid out in several notebook files. And so you can open them and you can read through them just like in a book. And in between the text, you will see code examples and you can execute the code, you can play with the code. And yeah, that is the format I use and also the exercises that are part of this course are also laid out in Jupyter Notebooks, okay? So this is a very good format and we will also see some other advantages soon. So let me briefly go over a couple of examples of organizations of companies that use Python in the real world, just to motivate you a little bit more of why it's so cool to learn Python. So here we see a couple of big tech companies, but also companies like NASA. We see an investment bank like JPMorgan and so on. So what do these various companies do with Python? So Google, what they actually do is they have an internal rule that says, Python, where we can, see where we must. So see is another programming language that is a lot faster if than write than Python. However, it has some other disadvantages. One example is writing code and maintaining code written in C is a lot harder than code written in Python. And in the business world where you have to not only write a program once, but you have to maintain it. You have to always make changes over time in a very short timeframe. It pays off to use a language that is good at that. And many languages are not, okay, but Python is. So that is why Google uses this strategy. They say, okay, if you really need to, if you really need speed in a computer, then we may have to go through other programming languages. But if we can, we take Python. Okay, that is one of their official models internally. And for example, the scrapers, so the servers that basically go to the internet and scrape all the websites and collect the data and put them on Google servers to index them. That is actually written in Python code. So a big company like Google does that. Other companies like Spotify, Facebook, and also Netflix, they mainly use Python to run data analytics and to run their machine learning algorithms. So at the end of a song in Spotify or at the end of the movie on Netflix, you know that you are recommended other songs or movies to listen to or to watch. And many of these so-called recommender systems are written in Python. So that is a typical data science application, also called a machine learning application. And also in Facebook, you know, when they analyze your likes and who you're friends with and they try to make some predictions of what kind of person you are, they use Python. Okay, another example is Dropbox. So Dropbox is one of the companies that not only uses Python on the servers, but also on their client software. So if you are on a Windows or on a Mac machine, download Dropbox and install it, you're actually running a Python code on your machine. So Dropbox has written a Python code that gets deployed on machines and then their servers are also running on Python. So they are using lots of Python. And the inventor of Python, Guido van Rossum, he actually worked a long time ago for Google and then Dropbox, they actually, so to say stole him from Google in a way. And until he retired, one and a half years ago, he worked at Dropbox. And so Dropbox is very much connected to the Python community, JPMorgan. So all the people out there who want to go into quantitative finance or just finance, if you go and join their onboarding program, as an analyst, for example, you will have to do some introduction course in Python, usually. Then here we have NASA. So why did I put NASA here? Well, usually these days, especially in the field of data science, people want to work with big amounts of data. And so when we want to answer the question, like who has the most data in the world? Of course, companies like Google and Facebook and Netflix, they are among them. However, NASA is also among them. And NASA, when they collect data from telescopes, they're actually collecting more data than can per second than can be stored on a hard drive. So they are really working with big, big amounts of data. And they are also losing a lot of Python data science applications to run analysis with data they collect. Okay, and then also here we have Instagram. Instagram, they actually have, they are running in their web backend, they are running Python heavily. So whenever you communicate via an app or via a web browser with Instagram, there's also a lot of Python involved in the background for making the web requests work. Okay, so there are different fields of applications, but you have already heard from the examples that companies use a lot of Python for data science applications. So I think that is a good motivation for why you should continue with this course and study Python really, really hard and to become good at it. Okay, now to end this presentation here, I want to give you three brief tips on how to study and how to learn programming. So the first one is the most important one is what I call the ABC rule, which is the always be coding rule. So it's just that easy, just try to do some coding each day. So if you take this course and in one of the formats where there is at the end of the day an exam at one of the universities I'm teaching that, then I don't suggest you wait until two days before the exam and start to study, okay? This is not gonna work. Coding and Python also as well, but you should understand it more like a math exam, right? You have to study throughout the semester, you have to do exercises on a regular basis to get used to that. You have to review a lot, you won't understand a whole lot of things in the first time around, even when you try hard. Sometimes you just have to play with some stuff a bit in order to really understand how something works. And that can only be learned if you work on it on a regular basis and either just, if you want to, let's say, learn Python in the next six to eight weeks, then maybe take one hour every day as compared to maybe five hours every Saturday or so that's doing something, doing a little bit every day is a whole lot better than anything else, okay? Another tip is, I'm going to refer here to Paul Graham, who is one of the co-founders of Y Combinator, the Silicon Valley-based company that invests in startups and tries to help startups become the next unicorn. Paul Graham, he wrote an article that is also linked in the book that is called The Maker's Schedule. And in this article, he compares two kinds of people. So on the one side, you have so-called manager type of people. On the other kind, you have maker kind of people. And the big difference is that the manager has like a schedule where they work. So usually as a manager, you have maybe a call at nine o'clock in the morning, then 10, you have a meeting and at 11, you have the next call and so on. You have deadlines, you have to answer lots of emails at home, so they come in and you're required to respond within two to three hours and so on. And that is a typical manager. So it's people that always have to get some stimulus from the outside world and have to communicate. On the other side, there are makers. And makers in Paul Graham's article, the first example he gives, for example, artists, but also engineers and programmers, of course. So what is the difference? Well, typically, if you talk to artists, they can't just start now to paint a painting and then in an hour from now they are done or in two hours from now they are done. So usually what they do is they start to work on a painting and then they don't like what they do, so they throw it away and they take another painting and they try to come up with a similar painting but then do some things differently and at some point they like it. And then maybe they continue to work on it and at some point they are done. And the big difference is they require some what I would call a flow state. So they require some intuition and some creativity to come up. And sometimes you need just time for that. So we all know that when we study for an exam and tomorrow we need to really know something, then it may be good to study one day, sleep over it, study, to review some stuff, sleep over it again. And then over time, by sleeping over it, then you slowly over time understand some concepts and remember stuff. And yeah, so this is just the way we have to view programming. You will have to, you will listen to my videos, you will read the book, you will understand lots of stuff, I hope. But then when you are at the problem set, then probably you won't come up with a solution right away. So what then you should do is, you should do what the artist does. You should try to come up with some first program and see if it works and if it doesn't. And then probably you will throw it away and you will come up with a second version with a different approach and maybe that will work, but maybe it will be the third one. So what I'm saying is that the program is, even for someone that is experienced, it is a highly iterative process. You do something and then some part of it is good, some part of it is not good and then you continue to work. So oftentimes you know the rule that if you ask a programmer team how much time they need to come up with some product to build an app or something, they will give you some rough estimate, but then a good project manager or startup person will always tell you, okay, just take whatever the estimate is times two and then maybe you have a good estimate, okay? So and the reason is because it is very hard to break down a software project or learning to code on a time schedule basis. It is more like a creative process here and you have to plan for that. So you have to plan that you don't start to study too late if you have to make a deadline or study for an exam, but also you have to understand that maybe you work on a problem and you make mistake after mistake and then you sleep over it and the next day you wake up and all of a sudden you know the solution to the problem and that is very common even for real life projects, okay? So just keep that in mind, that is the maker schedule and it's an interesting article, so go ahead and read it. And then last, the third tip that I give you is what I call faith iteration. So depending on who you ask, what are good tips on how to learn to code, usually people will give you one of two answers. So one answer could be take some prototype project and just try to finish it. So for example, if you want to go into web development, then a good prototype idea would be just try to come up with a website and just build it, okay? So, and that is it. But then on the other hand, if you follow this approach, you learn how to finish a project, but you don't learn a lot of the background information and that you can only learn when you take like a course like mine, but also other courses if you read books and so on. And the important idea is that these two phases, the phase where you just study, study, study and the phase where you just build, build, build, none of them is better than the other, they just, they rather compliment each other. So that is also, so what I suggest is always study at some points but then also take one or two days where you build something if you want to come up with some data science tasks then maybe just take a simple data set that you can get maybe from cackle.com or from some other source and just try to make some simple analysis and just try to figure out how could you do this analysis and that would be your prototype, okay? So just bear that in mind. And if you'd only use books and only watch videos, you're also not gonna get very far, okay? You need the prototyping phase as well, okay? So just prepare for that. These are three tips and the ABC will always be coding do it on a regular basis, I think is the most important one, okay? And in the beginning, when you really learn to code, there will be a lot of frustration involved but after time, things will get a whole lot easier. Okay, so that is the first part here in the presentation. So I will see you in the next video.