 Hello and welcome to the introduction on Python programming course. My name is Alexander Hess. If you want to find further information on me, you can do so on my LinkedIn profile, which you can find at the URL linkedin.com slash in slash web artifacts, artifacts being the Latin word for artist. So I'm a PhD student at WHO here in Germany. And I teach this Python course in the bachelor program here. And the school is a business school. So everything in this lecture is to be taken from this point of view. It is to prepare business students to solve typical management problems with the help of code. So enough for the introduction. Let's start with the course. So here I am on the GitHub page, where I host all the materials that you will need to follow the course. And you can reach it if you enter the URL, GitHub.com slash web artifacts, and then slash intro to Python with dashes in between, so three words, intro to Python. So what is GitHub? GitHub is a service that allows us to host code. So you can think of it just like Dropbox. It has folders as we can see here. It has files. And the files contain code. And GitHub is just basically like a typical Dropbox system just optimized for dealing with code. So here you will find all the materials. And if you want to download all the materials in one file, you can do so with the screen button here. You just press the screen button and then you download the zip. For more advanced students that know how to use the Git command line tool, you can of course also clone it with a Git clone command. But for beginner students, and I'm assuming that many students taking this course are beginners, it is probably the best way to download the materials as a zip file and then unpack it locally and then copy it into one folder where you keep all your work for this course. Whenever you want to know what is the current version of the course, you can go here to the releases tab, click on it. And currently, the version of the course is the version 0.66. And in the future, you will of course find updates to the materials. So if you like the course and you want to get more content. So check in the future if you will find an updated version. And then, what can you do on this GitHub page? Well, you can already use your web browser to check out what kind of files you can find in the project folder. And if you scroll down, you will find a readme file that is rented here, which has a short navigation here of all the contents and links on it so that it's a little bit more organized. And then also, you will find an installation instruction here. You will actually find two instructions, one easier one and then a more advanced one. And the easier one is based on the so-called Anaconda distribution of Python. And you can find that if you go to anaconda.com. And then under products, you will find the individual edition and you can download it. And as you can see, it exists for Windows, Mac OS and Linux. So I think everyone should get happy with this here. And you should make sure that whatever you download is the Python version 3. So in this case, the version Python 3.7, because 3.7 is the current version. I mean, there is the version 3.8 out there already since the end of last year. But currently, the version 3.7 is the one that most people use. And then on the right-hand side, you see Python 2. We will not deal with Python 2 in this course. The support for Python 2 has officially been stopped at the end of last year. So you will still find Python 2 stuff all over the web. This is mainly for legacy reasons because many people still use it today. But please, if you start a new project today, don't do Python 2, do Python 3 here. What is anaconda? Anaconda, just for short, it contains, of course, Python. But in addition to the core Python system, the anaconda distribution also contains many so-called third-party packages, among which are, for example, the Jupyter package, NumPy here, SciPy, Pandas, and many, many more. And these are packages that you commonly need to, you know, to install if you don't have them already installed. And these are the packages that power Python and enable it to be used in the world of data science. And for a beginner, my recommendation is you download the anaconda distribution because then you don't have to deal with extra installations that follow. And you can just use, you know, the installation you get by one, by downloading just this one thing here. And also note that the installation and downloading from anaconda will take some time, so I think depending on your internet connection, it can be around half an hour, I would guess, that you should spend on that. If you don't want the anaconda distribution, you can, of course, go to python.org. That's the official Python webpage. And if you click on downloads here, you can already see that there is the version Python 3.82 currently. So you can get the latest Python version and also the purest Python version on python.org. But then consider that this only installs core Python and not the many third-party languages that you most likely need. So depending on the project or on your sophistication level, one way or the other is better. In the long term, you should, of course, learn how to install third-party packages on your own. But in the beginning, if you just start out with Python, you should start with anaconda. And then there is another URL I just wanted to show you, which is docs.python.org slash 3. And what this page is, it's the official documentation of Python. And one goal of this course is to prepare you so that you can actually read this documentation because the documentation here is rather technical and you need to learn some concepts and some technical terms in order to understand it. And one of the goals that I have for this course is to introduce these technical terms so that after the course, you can teach yourself anything you want in Python by just reading official documentation. And this is basically like, I bring up the analogy here. It's basically like a law book. So when you study, let's say, the law for, you know, the civil law, the basic civil law, for example, then you won't start by reading the law book in Germany at least, but you start by attending lectures by some more experienced lawyer or legal scholar that will then give you an introduction. And hopefully after the introduction course in civil law, you can understand some of the technical terms and you can read the law actually and then only later on you will go to the actual law book. And this is in the same way as I designed the course here. So I assume you don't know anything. I will teach you all the words, but then eventually you will have to be able to read the documentation on your own. Okay. So again, on GitHub, there's also after installation. Let's say there is a screenshot that shows the installation on a Windows machine and then you will find a link called Anaconda Navigator. This should be the same for Mac systems as well. And you click on it and then the window opens and the so-called Anaconda Navigator opens. And in the Anaconda Navigator, you will open what is called JupyterLab. And then within JupyterLab, this looks like this here also in the web browser on the left-hand side, you will see some files, some file structure. You can move to wherever on your hard drive where you saved the files you downloaded from GitHub or copy paste them somewhere so that you can find them here. And then you can double click the individual chapters here. And then they will open up in your web browser and you can work through the chapters in the book that basically the GitHub repository resembles. Okay. Regarding the word book, you see the files here, they have an extension called IPymb, which is then for IPython notebook, but they are labeled in ascending order starting with 0, 1, 2, and so on. And these resemble the individual chapters of I would call it an interactive book. And then every chapter consists of a lecture part. That is the first part always with the number 0 in front of it, 0 lecture. This contains the contents. And then usually at the end of a chapter, I have a notebook here or an own part where I have some review questions so that you can check if you know the stuff that you want to learn. And then there's always a exercises section as well, which contains the coding exercises. So in the lecture part, this is more like me presenting to you how Python works. And in the exercises part, this would be you solving real coding problems. Okay. So one note, here on my screen, you see an older version of a software called Jupyter Notebook, which is a predecessor of JupyterLab, the one that you should be using. And the reason why I use not JupyterLab but Jupyter Notebook is because I have a so-called presentation mode here. And currently the presentation mode in JupyterLab is not as nice. So I use an older version here. But don't be confused. The only reason why I use it is because I want to present you a presentation and not just read to you a text from a book. So just as in JupyterLab, you can just click here in this case on the chapter zero intro and then a new tab opens here. And this is basically a document that at first glance looks like a Google doc. And you have some menu bar up here. You have some buttons that do some stuff and I will explain some of it. And then if you scroll through, you will see lots of text. And in between, you will see some code cells in this very first chapter. You won't see a lot of code because it's just the introduction. But then starting from the next chapter on, you will see more code in here than actually English text. Okay. And now I will go into presentation mode and explain to you a little bit of what this course is about and what are you about to learn and give you some tips on why Python is a good language to learn and how you should learn to code. Okay. So first of all, what's the objective of this course? My assumption is that at the end of the day, you are a management student that wants to make some management decision later on with the help of some code. So you want to analyze some more complex problems and you want to come up with a good management decision. And the field in which this is done is recently called data science. And data science is a term that many people understand different things with. And for me, it basically means I look at real-life data, so real data sets, big data sets. And I want to use the scientific method to come up with a good management decision. And the course here, this Python course, is mainly aiming at preparing you to take such courses. So this course here is not a data science course, even though some examples will lead towards data science. But this is just a basic course to teach you the basic concepts of programming in Python so that later on you can take a more advanced data science course that uses Python to do data science. So why data science? I think when you study, for example, management, but also many other subjects, then early on in your studies, you will be taught math. And you will have to take statistics courses and so on. And those early courses, you have to take so that you learn methods that you can then use to study management problems. So even though math is part of a typical management curriculum, the people that study management, they don't really want to study math. That's not the main goal. But still, business schools decide for their students that they have to study a minimal amount of math so that they can later on understand actual business problems in a better way. And my understanding is that a pragmatic coding course should be part of any business school curriculum as well. And I would even go as far and say that a basic programming course should be part for every student in a high school as well. Because we are just in the 21st century and people use computers all the time, so I'm of the opinion that you should have a minimal understanding of how you can develop apps or how the internet works and so on. And learning to code in a language like Python, I think, should be part of a curriculum. OK, so that's the objective of the course. Prepare you for further studies in the field of data science. What you're seeing at the moment is not a slide. It's not a PowerPoint slide. It's a Jupyter notebook. So even though you couldn't tell the difference at the moment, we are currently still in our web browser, and we are viewing a document called a Jupyter notebook. And the reason why I do that is because if we go back 10 years, maybe, and you wanted to study programming, then what you would do is you would have to edit text files and do something in a device or in a software application called the terminal window, which looks kind of like this here. And this is scary, right? For most beginners that have never done any programming before, doing something in this black command line here is kind of intimidating. So what I can do, I can actually open a real terminal window here in front of my web browser. And then the question is, what can we do in this terminal window? Well, I can hit the Enter button, and for example, and get a new line. But I could also type, for example, just the word Python 3, for the Python 3 version. And then the Python 3 command line prompt actually starts. And then I can type in Python. For example, I can write print. Hello, world. And then the computer prints back to me, hello, world. Maybe I make that a big, larger as well. So this is Python. So I can also ask Python what is one plus one, and it tells me it's two. So you can code in the command line. But again, for a beginner, this may be not so nice. And actually it is intimidating for most people. So I can type in Python, and I can type in Python, because of that, I chose another format, which is the Jupyter Notebook format that you see, because this gives you the feeling that you are in a Google Doc kind of document. You can read it, you can scroll it, you can use your mouse in the first place. I mean, you cannot use a mouse in a terminal window. So a Jupyter Notebook is just for me a way to make the teaching maybe a little bit easier for beginners. And also Jupyter Notebooks, they are not just a teaching device. Jupyter Notebooks are actually in heavy use by data science practitioners. So in fact, Jupyter Notebooks are the de facto standard of how you would communicate results of some data science analysis to your colleague or to your manager or whatever. So it's a format that both in academia, but also in industry is in heavy use. Okay, and also maybe one last note. Of course, as we will see, a Jupyter Notebook is basically just a layer on top of this black terminal window. So whatever I just typed into the terminal window, you can also type into code cells, as we shall see, in a Jupyter Notebook. So at the end of the day, a Jupyter Notebook can be seen just like a terminal window, just that it has some nicer colors around it. It has English text in between, but at the end of the day, even a Jupyter Notebook is nothing but a terminal window. So on, let's go on. And here is a code cell. So this is a code cell, and when I'm not in it, then it has a, in this case, a blue border. And if I click into it with my mouse, the border becomes green. This may vary in Jupyter Lab. It's a little bit different, the colors, but at the end of the day, if I click out of side of it and I click inside of it, I can really see some difference here. And then now I'm in the code cell, and as we see, there is a command, which is called print, and then it says hello world. So it's the same print hello world that I just typed into the command line. So what can we do with it here? Well, we couldn't, of course, execute it. So the question is, now, how can I execute code in a code cell? So I would try and hit the return key, or the enter button, and what happens is I just get a new line, so nothing else happens. The code is obviously not executed, so I can delete the new line again. So executing a code in a code cell in a Jupyter notebook works differently, and how it works is also pretty straightforward. All you need to do is, you need to press the control key on your keyboard, have it pressed down, and then press the enter button, and then the code cell is executed. And we see that the code cell is executed because now there is a one within the brackets here. So that means that it's the first code cell that was executed after opening Jupyter notebook. And also we see the output, of course. We see hello world here. So this is how I can execute code, and of course I can go back into the code cell here and hit control enter again, and can execute the cell a second time. Now it says two here, and the output is, of course, the same. So this is how I can execute code, and I think you will soon get used to doing that on your own as well. So just to also explain to you a little bit of what are the contents in this course, and what are they not. So the course is titled an introduction to Python and programming. This course is not supposed to be an introduction to computer science. So these two words, programming and computer science, shall have a different meaning in this course. And I also have a third word here called IT because many people in the business world, they refer to people that work with computers as IT people. And so I want to give you a short definition of what these three terms mean to me and in the context of this course. So let's start with computer science. Probably the most traditional one of those. So computer science is, for me, a theoretical field. It's a field that was originated by professors of math departments back in the old days, so to say in the 1950s or 60s. And it's not only math people who came up with computer science, it's also engineering people. So the computer science departments at universities is kind of like a mixture between the math department and the electrical engineering department. And as I said, the computer science departments at many universities are rather old in comparison to most business schools at least. And so they go back to some discipline in math usually. And this is also what I mean by computer science. So computer science, for me, is a theoretical field that is trying to answer rather abstract questions. Like, for example, can a certain problem be solved or be expressed as an algorithm at all? And if we can find an algorithm to solve some problem, how good is this algorithm? So how fast will the algorithm run and so on? These are theoretical questions. And these questions are answered in the field of computer science. So if you want to learn more about computer science, you should enroll, of course, in a bachelor program at a computer science department and study computer science. So how is computer science different from programming? Well, computer science, as I said, is abstract. And programming, to me, is basically a formal language, a programming language that does concrete things. So if I type print hello world, something very concrete happens. And to me, it's like any other language that I learn. So if you take, for example, English as a foreign language, then you, as a non-native speaker, you basically learn a new language. And in the same way, you can learn a programming language. And of course, there are theories behind languages. So you can also study English linguistics. This would be the theoretical part. But most of us, if they study a language as a foreign language, we don't really care about the theoretical concepts. We don't really care about what are the theoretical concepts that help us to classify certain grammatical rules in a language or so on. So when we study languages, it's rather applied. It's rather pragmatic. We just want to go to another country and talk with local people when we learn a foreign language. And in the same way, I see programming as a more concrete thing. So I have a certain problem. I want to solve it. And I don't really want to ask the question, is this problem solvable at all? Or how fast will it be solved? But I want to really solve it. So it's a concrete thing here. And so oftentimes, also, computer science is, of course, a science. It's a scientific discipline. But programming to me is not science, really. Programming, as we will see in this course, can be thought of a craft or an art. So oftentimes, we have more than one solution for the same problem that are equally good. But one of them basically feels more natural to a programmer. And in this way, programming can be seen as an art form as well. You will hear programmers talk about how expressive code is, or that some other code base is not so expressive for some reason. And so it's a lot more opinionated, and it's less often science here. And then lastly, just as a side note, the term IT, within the context of a business school, would probably mean something like the IT support function that a corporation has. So IT is more about some people that make sure that your corporate laptop works, or that the printer works. And if the printer doesn't work, they will send someone to repair it. So IT departments are usually about taking hardware and taking software that is already finished, putting that together and make it run. And that's IT to me. It's not about developing new software. Of course, you can argue that there are companies out there like Google or Facebook who have the core competency of developing software as well. But most companies around the world, when they refer to their IT department, that's not of one of their core competencies. For them, it's a support function in the business. And this is how I treat the term IT. OK, so in this course, we mainly focus on programming. And sometimes, occasionally, we will also look into some concepts from computer science. So just enough that we understand what is going on in our computer's memory and maybe take some implications from that for the way we code. Why Python? So as you already started to download the materials and go through the textbook here, I think you already have a reason why you want to learn Python and not some other language. So I want to give you some more reasons why Python is a very good language to learn. So Python was invented by a Dutch person called Gido van Rossem back in 1989. And the Python version one was then basically developed throughout the early 90s. And back then, Gido van Rossem had the goal also to invent a language that just works. That's what he said. And that works basically on any platform. So it should be independent of you using a Mac or a Windows system or a Linux system. And also, the language was supposed to be a general purpose language. So back at the time, there were many languages that were invented to solve, to work in a very narrow domain of problems. For example, MATLAB. MATLAB was made to only work with numerical data. Another example of this may be PHP that was invented a little bit later in the late 90s. In the early 2000s, PHP is a language that was basically developed to do web development. But Python was not narrow-minded. Python, from the first day on, was a so-called general purpose language, which means you can do many, many different things with Python. And even to this day, when you know Python, you can set up a web server and program your own web application. You can program, of course, a web API that powers, for example, an Android or iOS app. You can, of course, also do data science with it. You can write utility tools that run on your laptop and that do some maintenance work on your laptop in the background. You can technically write games with it, even though this is not so common, but it's possible. So you could write desktop applications that run natively on your machine. You can do networking with it. So you can basically control. There are actually utilities out there in Python with which you can analyze what is going on in your local Wi-Fi and so on. So the fields of application are very wide. And that's a good thing for you as a beginner, because when you make a decision of which language you want to learn, I think one thing that you should take into account is what can I do with the language? And if you can only do one never thing, you limit yourself. But you should know that in order to get good at a programming language, you have to invest lots of time. And so the time is better spent if the language has many more purposes that we can use it in. And then also Python is from the first day on, so-called open-source language. So that means Gido van Rossem from the first day on open-sourced the code with which he wrote Python. That means other people can look at the code and no understand what's going on, how something is implemented, and they can also find security holes, for example, or parts in the code base where Python is not efficient and can improve it. So that's a very interesting concept, because back in the days, at that time, many people, many software people, they would write software but not release the source code. Why not? Because they want to make money off it, of course. So by open-sourcing something, that means anyone can look at the source code and basically copy-paste it. So you're giving away everything you have. So the question is, why is that a good thing? I gave you already some indication. I think it's a good thing because it gets many people around the world to use it. So in Python, when Python was adopted and many people started using Python, then many people also went back to Guido and the core developer team and said, well, wouldn't it be cool if Python could also do this and this and that? And then they also provided a first implementation of whatever feature they wanted Python to have. And then the developers, the core developers, could just look at it and maybe just use it. So in other words, by open-sourcing, Python got many, many people around the world engaged in it. And with many people working on it, Python just got really, really good. And also maybe a third reason why Python is a nice language, especially for beginners, is that Guido from Russell actually wanted to use Python as a instruction language for kids in school to learn to code. So he said, the language should look nice and it should be understandable. I don't know if it was meant for an elementary school kid, but at least for high school kids back in the day. So he already, also back in the 90s, he had an initiative with which he tried to promote Python in high schools. And so you can think that Python, from the very beginning on, was a language that was aimed at people with no prior knowledge to just study or learn how to code. And then throughout the 2000s, there was then the occurrence of Python too. And then also around the same time, the many companies around the world, they started to gather lots and lots of data. And then at some time, the core developers decided to develop the third version of Python. And when they did so, they took into account many, many things that are important when you want to work with big data. So Python is a language that actually enables its users to deal with big data. That means for us in this course, we will have to look at some more advanced constructs of Python, but then once you understand it, we are basically ready to go to deal with lots of big data and so on. So there are many reasons to choose Python. Of course, there are also other languages. Currently, like Julia is a very hot topic. Maybe there is also R, especially in the field of data science, and these are also good languages. But again, Python is a general purpose language, so you cannot only do data science with it. And this is some very good benefit, I guess. So then we should ask the question, who is using Python? So basically, we see here who is who of important tech companies and other organizations like NASA are on here. So let's go quickly over what these companies do with Python. So Google started early on with another language, but then they decided to write their web scrapers in Python, and the main reason was that being a so-called high-level language, Python is very expressive, and it allows a business that faces a different situation, competitive situation from a week to week basis to adapt its software rather quickly. And in other languages, changing software takes longer. Changing a running software takes longer, and Google basically decided to use Python because they wanted to stay a child from the beginning. And also Google hired Gido von Rossum actually at some time, so that he would spend some years at Google. And so they got, so to say, the number one expert in Python to join their company. And therefore, philosophy actually is at one point Python where we can and see where we must. So C and C++ are other languages that are faster than Python in some situations, but they are more complex to develop. And so whenever Google says, when we can get away with the higher-level Python that allows us to stay a child, then we use it. And then at some time, another company, Dropbox, they made Gido von Rossum such a good offer so that he joined them. And at Dropbox, this is basically a company that uses mostly Python for everything. So it's not only their web services, the backends that use Python, but it's also the client that you download on your Mac, on your Windows machine, on your Linux machine that is written in Python. So they got Gido. And he actually retired at Dropbox last year, so he's now a retired person. But he worked until his last day in business, basically, for Dropbox. Some other examples are Spotify, Facebook, and Netflix, and also Instagram. And what these companies do with Python is mostly data science. So Netflix had a competition roughly 10 years ago where people could win $1 million when they came up with a good algorithm to recommend the next movie you should watch. And these recommendation engines, they are written in Python, for example. Same for Spotify, so when you listen to the artist radio or the song radio on Spotify, and so you choose one favorite song or artist that you have, and then Spotify will play similar songs or similar artists to you, then they also use Python in the background. Facebook, of course, when they want to decide which ad they show to which person, this is a prediction algorithm, which is also mostly written in Python. And then for me, surprisingly, the NASA is there. So why is NASA there? Well, NASA is the one organization in the world that has the most data. So whatever you, for your own startup, maybe, are unsure if Python is good enough because you feel like your startup will have so much data that Python might not be able to handle it. Well, there is one answer to this. The NASA uses Python to analyze the data that they get from satellites and telescopes. And in these use cases, oftentimes, you gather so many data, so many data per second, that you cannot actually not even store all the data that is gathered. So in other words, when you really want to see a company or an organization that has big, big, big data, well, talk to NASA. And if they use Python, if Python is good enough for NASA, most likely Python will be good enough for you as well. And then for business people, maybe, an interesting use case, JP Morgan. So starting two years ago, JP Morgan required its first year analyst to take a Python course after onboarding. So even the investment banks don't stop here. So Python is just a language that is very widespread. And then you may wonder, what is this logo here on the right-hand side? This is a company called Magnus, the Magnus app. It's a Shasam for art. So it's an app that you will find for iPhones. And you can go to an art gallery, take a picture of an artwork, and it gets recognized. And I co-founded this company. So I can tell you for sure that this company uses mostly Python for its backend and also for the image recall and also for all the data analytics that is done here. So one more chart here to still support the argument of that Python is a good language to know. This is the number of questions on a platform called Stack Overflow. And we see that Python, the red line here, surpassed JavaScript and Java back in 2018. And the trend continued. So Stack Overflow is a platform where you would go if you have a technical problem that you don't find an answer for and you just ask a question. And then other people around the world will try to answer it. And Stack Overflow is known for really providing good answers unless you ask a question that has been asked before. So it's your job to figure out if the problem you're facing is if you're the first person facing it or not. But then if you pose a new question that hasn't been there before, you can expect many experts will look at it and give you a good answer. And the Stack Overflow did an analysis of what language people had questions on. And they do that regularly. And we see that Python is definitely in very high usage around the world. Otherwise, there wouldn't be that many questions. And then JavaScript and Java, why are they up there? Well, JavaScript is the one language that works in web processes. So whenever you open a web browser and some interaction should happen within the web browser, then you can be sure that this is JavaScript code running. And that's why JavaScript is so widespread. And Java is so widespread because in the 90s, when many of the big corporates started to develop their enterprise systems, they decided using the Java language. But to this day, Java is still in heavy use in the large corporates. But if you are a young and upcoming startup or if you're an academic at an Ivy League University or so on, you wouldn't start to do something in Java. You would probably go to Python or maybe even hotter in the last couple of months would be Julia. But with Julia, we will still have to see where this goes. And Python is more established here. So to finish this intro part, I want to give you three tips on how to learn to code. The first one is what I call the ABC rule. It's very simple. It means always be coding. So my recommendation is that when you start out with an introduction course, try to do some exercises every day for one or two hours. I know this is a lot of time, but the thing is this, you will follow my presentation pretty easily, I guess. And you will also easily read through the textbook. But when you are faced with a problem on your own and the code isn't there and you have to come up with everything, this will be rather hard. And so you have to get used to this. And so you have to really do that. And so yeah, there's nothing else that can prevent it. Also, you should know that many things in programming even for an experienced programmer, they are kind of like muscle memory. So whenever I type something in the command line and I go to a new project, I will, you know, the type or the kind of commands that I will type in, they may change because the project changed. And when I come back after let's say two weeks or 40 days, chances are that I have forgotten many of those commands because it's just muscle memory. So you have to really do something every day to keep your muscle memory up here. The second tip is to make a schedule. So this goes back to a guy named Paul Graham who is a co-founder of Y Combinator in the Silicon Valley. And he wrote a nice blog post that you can find linked in the intro chapter where he says, well, there are two types of people. There are makers and there are managers. And the difference between those two kinds of people is managers are people that need to manage their time on a let's say a scheduled basis like they schedule meetings on an hourly basis or they have appointments, they have calls with other people and so on. So usually the manager person is someone who thinks in, you know, deadlines or things in days or business weeks and so on. And that's the manager. And then there's the maker. And as an example for a typical maker, Paul Graham mentions artists. So I know this may be a stereotype but many artists are like this. For us as normal, as non-artist people, they seem to be a little unorganized at times. Sometimes they may be a little bit weird in that they have weird working times. Whenever we want to meet them, they may be late to a meeting or something. So I know that's a stereotype but what I wanna say with that is in some professions, especially let's say if you are an artist, you require creativity and how do you foster creativity in your day-to-day working schedule? Well, the answer is you have to try to get into a so-called flow state and what does a flow state mean? That means you're just working without thinking about it. You're just doing, so to say. And as a side note, people that are in a flow state often tend to be happier in life. So this is a nice side benefit but the important fact here is once you get into a flow state, you really get things going. Think of a basketball player who hits one three after another. After a game, when they asked how they did it, then usually they will say, well, I was just in a flow or something like that. And as a programmer, your goal should be to get into this flow as often as possible because this is where you get stuff done and that means you shouldn't work in deadlines. That means you shouldn't, you know, say, you know, I only work on the coding exercises from let's say six to eight or something because the deadline, if you have a deadline in mind, you won't get into this flow state and once you get into the flow state, you may be interrupted by a deadline, right? Or you may be forget the deadline, hopefully. And the important point is the important tip that follows from this is what I found to work very good for many people. When you do exercises, coding exercises, then just put them, for example, in the evening and have like an open end setting in the evening and just try to get the stuff done as it goes. And if you feel like you get into a flow state, just don't stop to work. And this is basically a reason why many programmers, when they get into a flow, let's say late in the evening, they just work through the night because they know now I'm in a flow state, so I just keep working until my creativity is gone and then you just stop. And if it's in the middle of the night, then that's when you stop. And this is just an observation. So you shouldn't try to schedule the learning. It's a creative work. And the last tip, I call it faith iteration. So this is an observation I made that if you ask experienced programmers what are good tips to learn to code, then you will get answers that you can basically group into one of two categories. So the first category is people that will say, okay, you should take some project and finish the project. You should, for example, try to build a website. If you want to study web development, just build a finished website at the end. And that's good. But then what this teaches you is how to ship a product or how to get something done. But what this doesn't teach you is rather high level concepts or theoretical concepts. So how can you get the knowledge of such? Well, for example, by following a course like this or following some other coding course or just reading a good book, reading a good math book or something. So sometimes this is better to get some more background and knowledge. And then what do you do with it? Well, you switch between the two phases. That's the idea of phase iterations. So at one point, when you're new to a given topic, then you just look for a very good book on this topic or some video course or whatever. You study some stuff for one or two weeks on this topic and then you need to make a project and finish something. And so you have to really iterate between these two phases. And when you do that, I think that's the best way to learn because it shows you how to finish something. But also you will learn some of the theory behind and that's always important. Okay, so I think enough said and we will now go to chapter one. And in chapter one, we will see our first coding examples.