If You Can Cook, You Can Code Vol 1: How Programming Works | Timothy Kenny | Skillshare
Drawer
Search

Playback Speed


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

If You Can Cook, You Can Code Vol 1: How Programming Works

teacher avatar Timothy Kenny, Author of "Accelerated Learning for Entrepreneurs"

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

    • 1.

      Introduction

      10:00

    • 2.

      Executive Summary

      17:22

    • 3.

      You Already Program

      6:25

    • 4.

      You Are a Computer

      12:52

    • 5.

      The Nerd/Jock Paradigm

      11:22

    • 6.

      Your Computer is Your First Employee

      7:19

    • 7.

      Why Programming Books Fail

      9:48

    • 8.

      Your Business is a Program

      8:14

    • 9.

      What Kinds of Data Are There?

      16:20

    • 10.

      Where Do You Store Data?

      6:18

    • 11.

      How Do You Turn Info into Data?

      10:12

    • 12.

      How Do You Get Out the Data You Want?

      13:30

    • 13.

      How Do Computers Think About Data?

      12:39

    • 14.

      The Front and Back of the Restaurant

      6:52

    • 15.

      The Waiter and Waitress as Front End

      7:29

    • 16.

      The Chef and Cooks as Back End

      17:51

    • 17.

      Functions and Restaurant Basics

      10:22

    • 18.

      Learning Programming Through Imitation

      6:23

    • 19.

      Owner vs. Investor

      8:50

    • 20.

      Learn to Read First

      6:59

    • 21.

      Where to Find Code Recipes

      7:48

    • 22.

      How to Get Free Help

      7:48

    • 23.

      How to Get Cheap Help

      8:14

    • 24.

      Conclusion

      12:03

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

334

Students

--

Projects

About This Class

In this course, you'll learn the fundamentals of how programming languages work. Using the metaphor of cooking and restaurants, you'll get concrete, plain english answers to questions like “What programming language should I learn?” and “What is programming?”

Programming courses and classes have some of the highest dropout rates of any professional domain...that's because the ideas are often presented in a very abstract way...Don't worry, this course is different. As long as you understand how a recipe works, you can understand how coding works.

At the most basic level, programming is two things: Ingredients and Preparation. That's our cooking metaphor...the words a programmer would use for these two terms are Data and Algorithms.

When you cook something, you are taking those raw ingredients and transforming them, cooking them, in some way to get a final result, the plated meal.

Your input is ingredients, your output is a plated meal.

A cookbook contains recipes, each with 2 parts. The ingredients are up top, and the preparation is below. Sometimes there is even a picture of what the final result will look like. Those 3 things, the input, transformation, and output, are the fundamental parts of both cooking and programming.

I spent a lot of time getting very frustrated when I was first starting out learning programming, and I almost quit a few times.

This course is about getting you past the initial stage of total confusion, which for many people lasts for the first few weeks or months of programming, to the next stage where you can learn at your own pace and feel confident knowing you have a solid foundational understanding so you can start to think like a programmer.

-Timothy

Meet Your Teacher

Teacher Profile Image

Timothy Kenny

Author of "Accelerated Learning for Entrepreneurs"

Teacher

Timothy Kenny is the author of “Accelerated Learning for Entrepreneurs.” He teaches classes and speaks to groups about how to accelerate their learning so that they can build successful businesses faster and with more confidence in their success.

Timothy has taught at the Harvard Innovation lab, The Tufts University Entrepreneurs Society, General Assembly in Boston, and has been a featured teacher on Skillshare, among others. He has consulted with startup teams on how to accelerate their learning, creativity, and growth.

See full profile

Class Ratings

Expectations Met?
    Exceeded!
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.

Transcripts

1. Introduction: Welcome, Teoh. If you can cook, you can code. And this is gonna be a fun course. If you've gone through other programming courses, you've gone through programming, books, coding books. Then you've probably experienced a lot of what I experienced when I was just starting out, which is just utter frustration, just not understanding what's going on and why everything is so complicated. My experience with learning how to program learning how to code was that it was like getting shipped to another planet and everyone speaking a different language, and you just have no idea what's going on. So I was looking for a way toe, figure it out for myself, teach myself. I'm always looking to understand frameworks. And so I have started to notice some patterns. And one of those patterns was that when I looked at different terminology that was used in programming, one of the metaphors that came up again and again was cooking. For example, when you're using a program when you're using, just think of your one. Your favorite applications, like your Web browser, may be used Chrome or Firefox or Internet Explorer. So you go there safari. So you go there and you click on a menu in that menu gives you options for what you can get . So just that metaphor right there of a menu being in a restaurant, cooking that sort of stuff. That's where it started out, and I started exploring it. Maura, Maura and I realized that there's actually a lot of similarities between cooking and coding , and it's actually the easiest way to learn how to kowtow. Learn how to program because instead of having to learn everything from scratch, do everything from scratch. You get to build upon the framework that you already understand, and almost everyone knows how to cook to some level. To some degree, you may not be a chef, but you have some skills. You know what cooking is, and you know the basics of how it works. You know the basics of how restaurant works, and that's really all you need to know. To go through this course. Programming is not complicated. It's simple. At the basic level, it's very, very simple in the same way that cooking is very, very simple at the basic level. Sure, you can make it very complex if you're a chef and you're thinking at that level. But just to cook basic meals, basic recipes you don't need a have a ton of skills. You don't need to be a genius to be able to do that. So the idea with programming and what I have here ingredients plus instructions is that what is the basis of a recipe? The basis of a recipe is you have ingredients at the top. You know how much of each ingredient you're gonna put in. And then you have some instructions, some way of preparing those ingredients that you go from the raw ingredients to the final result, which is the meal. And that transformational process is what cooking is your transforming things so that they become edible so that they become enjoyable. So the metaphor here with computers is that code is telling a computer how to mix together and transform information to get the output that you want. So you're starting off with you could call it raw information, and then you're transforming it something called a function to get it into the final results that you want. So, in this metaphor, the computer is the chef. So you're not the chef. What you're doing is you're managing the chef. You're giving the chef instructions you're giving the chef recipes, and then this chef is going and cooking all these different things and serving up what you want. So you're not the chef yourself. You're the person telling the chef what to do, what to make. So a good way to think about yourself as you go to this course is your the restaurant toward your the one who's creating this restaurant, putting together all the different pieces and you've got this entrepreneurial slash manager slash leadership role. And a lot of people wonder at the beginning when they're just learning programming or just learning. Coding is, they know there's a lot of different coding languages or programming languages out there. And so for a while I was struggling. Well, what is? What's a good way to think about this? Because programming languages The reason why there's different programming language is, is because when you're solving different types of problems, you need different tools. You can what say you want to go out into your garden? You want to dig a three foot hole. You could go and take a spoon or a fork or a knife, and then just dig through very slowly and get there. But you're better off using a shovel at the same time. If you want toe, uh, do something in the kitchen and maybe scoop out some ice cream. You're not going to do that with a shovel. You could do it. It just wouldn't be the right tool for the job. It wouldn't be efficient, and you wouldn't get great results. You have to use a lot of fine tuning to get even work close to what the right tool would would be. Four. So the the metaphor here is that different languages are like the kitchen set up that you get when you go to a different kind of restaurants, You may be going to a restaurant where you're getting burgers and fries. You may be going to a restaurant where you're getting Italian food. Spaghetti meatballs, stuff like that. You may be going to a Japanese restaurant where you're getting sushi's. You may be going to a sushi bar. You may be going to a bar just to get a beer or wine or liquor, so you could be going to a lot of different place you could be going Ice cream shop could be going to an ice cream truck. You could be going to a Chinese getting Chinese food or Thai food, or you could be getting Greek food. Think about all over the world. Each of those kitchens is gonna have a lot of similar basic tools, but they're all gonna be optimized for cooking that specific cuisine. And the way to think about that is the problem is, I want to create this dish and I need the tools. I need the ingredients to be able to do that. I need the kitchen basically set up to cook that now you could take a chef and put them in a in a different restaurant with a different kitchen that they're not used to that they're not familiar with, and they could eventually get similar, if not identical results. But that doesn't mean that that kitchen is optimized for what they're trying to do. So the idea is you want to optimize your set up, and the way you do that issue pick the right language to use for the job. People that are top programmers know dozens of languages, so it's not something where you just learn every language. And it's not where you just learned one language. It's about learning the fundamentals of what does it mean to be in the kitchen? How do you What are the basics of cooking food? Because those apply toe almost no matter what cuisine you go for. Unless your, uh, like on a primal diet, then you're gonna be cooking food. And so the idea of cooking food and applying heat to food is gonna be a basic fundamental of what you're doing. So that's the way to think about different programming languages. And we're gonna be going more into this later in the course. But the basic idea is you figure out what you want to build. What kind of software you want to build. Is it a mobile app? What platform is it on its that android? Is that IOS? Is it something else? Do you want to build a desktop app? Do you just want to build a script to automate something? You want to scrape information off the Internet? You want to build a website? You want to build a website that has a bunch of functionality on an interaction. You want to build a game. There's all these different things that you can build, and depending on what you want to build, there's going to be a language or a set of languages that are really great for that. And it's also not just the language itself. It's also what that language has access to in terms of the community. So there's these things called libraries and frameworks, and what these do is they You take somebody else's code, somebody's already figured something out, and then you basically just plug it into your language and allows you to have a lot of functionality that you wouldn't have otherwise. Good way to think about this is imagine if you had a kitchen, but you didn't have a stove. You just had a fire pit, and you had to do everything without fire pit. And then somebody says, Well, you can use this Stover this, Stover this stove, you pick the right one for the job. If you're making pizzas, maybe want a brick brick oven for that, seeing it really high temperatures. If you have an Indian restaurant, you're gonna want that tandoori. So depending on what kind of things you're cooking up, you're gonna have different libraries, and those libraries only work with a specific language. So it's not just about well, how great is this language on its own? But it's also about what is the community like. You can go to that community and ask questions. You could get help for free online. Through forms and question answer sites, you can get access to open source free libraries that give you a lot of code that you don't have to write yourself. Somebody else has already done it, optimized it, and they figured it out, and all you have to do is use it. So there's a lot of plug and play features that you only get access to with specific languages, and it's usually whatever language is optimized fixing that problem or solving that problem . It's also going to be the language that has the most libraries that work with it, so those usually go hand in hand. But a big thing that I want you to get out of this course is you should not be trying to code everything yourself on your own from scratch. OK, chefs aren't doing that anyways. They're starting with ingredients that are shipped from all over the world. They're not going out and picking their own ingredients, having their own farm, having their own livestock, all that sort of thing. So they're already getting things delivered to them, and that's the same way I want you to think about. Being a coder or being a programmer is you don't do everything yourself, you figure out, and you know the landscape so that you can get the best things, start at an advantage with a lot of things already built, and then be the person that combines those things and build something that's valuable. 2. Executive Summary: in this executive summary, I'm going to give you the basics of what you get from this course. So you may be watching this before you take the course. You may be watching it afterwards to get an overview. You may be thinking, Do I even want to take this course? So this is gonna be a free preview video. And the reason why is because if you're on the fence about taking this course you're wondering, Well, is it really as easy as he's making it sound? The answer is yes. And you're gonna learn. Um, that's true in this video. So the first thing is understanding data. And as I said before in the introduction, you're talking about two things. You're talking about data and you're talking about algorithms functions. So are those exactly the same things Different people use them in different situations. Sometimes they mean the same thing. Sometimes they have a specific meaning or connotation. So when you're doing research and this was a thing that was really annoying to me when I was starting out is there's different words that to some people mean the same thing to other people, have very slight differences and often you have to be an expert before you even understand what those differences are. But basically we're talking about data and functions and data is those ingredients that you're starting out with the functions is what do you do with that information? What actions are you taking? You can even break it down to a simple as the English language. There's basically two things now owns and verbs and then adjectives and adverbs are things that modify announce and verbs, respectively. And then you have things like propositions and conjunctions and things like that that are just kind of the connective tissue. OK, so the data is the ingredients. That data is denounce those of the objects that you're dealing with it. Then you have the functions, which are the verbs, those the things that are taking action. So you basically have things that are objects that don't act, and then you have verbs, which are things that do that represent action. And then you have the computer, which is the one that's taking those actions and operating on those objects. So whichever metaphor makes most sense to you go with it and run with it. But the metaphor of this course is using cooking toe understand programming. So the data is your ingredients, and the data is how you store information in the computer. One of the most important things understand about coding and programming is that you have to understand what kind of data there is. So there's there's characters that's like the alphabet, their strings. What is a string? A string is Just think about any number. Any letter is like a pearl on a necklace. You can put together a ZMA any of those is you want. You can also have an empty space or special character. Those can all be part of a string. The idea with uh, storing things is numbers or characters or the large numbers or small numbers or strings of specific links You're going to see this as you learn more about programming, is that everything ultimately is stored in binary code. That's ones and zeros. And so the way to think about code in terms of ones and zeros is that you start off with just a zero or one, so that can give two different options. You had a 2nd 1 or zero to that, and now you have four options. It doesn't go from 2 to 3 goes from 2 to 4. The way to think about that is imagine a square. Imagine it's basically a matrix, but a square. And then you split it into four different quadrants. So the first quadrant is 00 The second quadrant 01 The third quadrant is 10 and in the fourth quadrant is 11 So those were four options. And as you would add, additional zeros, you're adding mawr options. If you had 1/3 digit to that binary number, now you can have it 01 and then in the second digit 0 1/3 digit 01 So now you have eight options, so that's two to the third power. So each time you're adding options, you're adding another power. So it's It's the amount of options that you're getting each time you expand the length of that buyer E number is going in an exponential direction. Why is that important? What does that all mean? Well, when you see a song as three megabytes, what that means is that's three million bytes. And what is a bite? A bite is eight bits each of those bits is an individual option for you. So how all that factors into data is that computers need to store information data, individual data, points, strings, numbers, characters. They need to store those in a place, and that place is called memory, or it's called your hard drive. But when it's when your computer's working on things, it's working in working memory. And what that means is you can have stuff in the fridge. You can have stuff all over the kitchen, but the things you're working on are right there in front of you on the cutting board or on that main table that you're working on so that main table as a limited amount of space. And that's where the things that you're currently working on are stored. So data is basically your computer's chopping up, doing various calculations to change data. Add them, subtract them, multiply Those are mathematical operators. You can also do something called Concoct Nation. You may have seen this before in Excel. If you just connected to strings, that's what can Cat Nation is. So what's a wanted combine? A first name and a last name. The first string would be your first name. Your second string would be a last name. And then you can captain eight, those two and the first name last name with a no space in between. So if you wanted to have a space in between, you create 1/3 string, which was just a single empty space. You can Captain ate the three of those together, and then that would get you your first name. Last name with a space in between. So batches of basic, that's how data works. You can do a lot of this stuff in an Excel spreadsheet. You've probably seen this kind of thing before. It's just basic combining things, multiplying things. That's the basics of what coding is. And visualising data in a spreadsheet is one of the best ways to do it, just understanding that whatever you can put in a spreadsheet, that's something that your code can operate on that your program can operate on. Second thing is functions, so functions air the things that are doing work on the data. So we go back to that chef, the chefs using different techniques. So in ah, cooking one of the ways that you can cut something up is you congee Yuliana, which means cutting into very fine small, thin strips. So that's one way of doing. You can also just cut it into blocks. So there's different ways of handling things. The the function is not the chef. The function is Thea action that the chef is taking, So the function is what's operating on the data and functions can be at different levels of abstraction. So here's some examples of some functions. Flip the pancake mix. The 10 ingredients make an entree with sides. So what say that you're the waiter or waitress and you're going to the chef? And you're saying, Put in this order your telling the chef. Make this meal or make this collection of meals for this table, and that's the instruction that you're giving to the chef. That's at a high level of of abstraction. You're assuming that the chef already knows what to do. Already knows how to make everything on that menu, But let's say the chef doesn't know how to make everything on the menu. Then you might have to give specific instructions of this vegetarian pizzas made with thes three vegetables. So you tell the chef what those three vegetables are. Instead of just saying, Make the vegetarians pizza at a deeper level, we're at a more specific level at a lower level. Abstraction. You're saying individual things like turn up the oven to this temperature. Spread the tomato sauce in this way, those kind of things so functions can operate at multiple levels, and the thing about a computer is a computer needs to know things down to the exact, uh, the most specific level. So you're telling the computer things like, Okay, move. Put the knife in your hand and move it a foot in front of you, then move it down six inches, then move it up one inch, then down one inch than up one inch and down one image, and that's that's just the basic chopping motion. So imagine having to give all that instruction for every single little thing. That's what early programmers had to do when they were using things like machine code in assembly language and things like C C plus plus. Each time a new language came out, it had a higher level of abstraction, meaning that you didn't have to give those very specific instructions you could be more general, you could be more abstract. You could give the instruction that says, Make this entree instead of saying, Pick up the knife one inch. Put it down one inch, bring it up one inch, Put it down. One is you no longer have to be that specific. But the other cool thing is that you can get libraries. You can get open source code where basically another coder has already coded all those instructions. It's kind of like sending somebody who's just a bus boy sending him to chef school having him come back two years later. And now he has that library of cooking information in his head, and he knows how to do all these things. Now. You can just give the high level abstract instruction of Make the Vegetarian pizza, and he can go and do it. Before, you would have had to give those very specific instructions. But because he has that library in his head, that framework in his head, you no longer have to give those very detailed instructions. So that's the way to think about functions that's way to think about how all that works and part of the way that you're gonna improve as a coder, improve as a programmer or improve as an entrepreneur who just wants toe or professional just wants to use programming to improve your performance. But you don't necessarily want to become an expert coder expert programmer. You don't want to dedicate your life to that. You can still get a ton of benefits out of programming, even if you never know how to write a single line of code. And there's some top people out there. They're involved with software world where they don't actually know how to code, or they have very, very limited coding skills. And the reason why this is important, understand is because it's more. A lot of coding is actually about understanding how to deconstruct a problem and how to solve the problem and having a structured way of doing that. A framework for doing that, understanding the different data types, the different basic functions, those different basic tools you have. It's like if you go to culinary school, you're gonna learn the basics of how to chop things up in 20 different ways. You're gonna learn the different kinds of milks and cheeses. There are the different kinds of breads, the different sort of, uh, flower that goes into different types of bread, the different how different amounts of liquid going into that is going affect things. Just a basic thing, like a chocolate chip cookie just changing the ratios of flour to sugar to butter. Different things like that is going affect things in subtle ways. So when you're a programmer and you're thinking about how do I solve a problem? You're kind of like that chef that now you know the basic tools of how things work in the kitchen and you know how toe create any sort of meal that you want to based on using the collection of the basic ingredients and the basic functions or the basic techniques that you learned while you were in culinary school. So that's what it's all about. It's all about those two things, the ingredients and then the techniques that you're using. And that's what forms the recipe. So you take that recipe, that's what you're writing, and you're giving that to the chef. The computer you're giving the recipe to the computer, and then the computer is like a chef that's in overdrive. that can do things a 1,000,000 times faster than a regular human chef. That's where the power of the computer comes in. But you need to be able to give it the right instructions. As I said before, Link, different languages are is gonna have a lot of skills built into them. A lot of libraries, a community, constant development and improvement, and people teaching for free online how to do different things. People blocking about ways that they solved the problem. So most of the time you should not be coding something from scratch. You should be going on to Google looking for somebody else who's already solved the problem . And if you're using the proper programming language for the type of program, a problem that you're solving there should be very few out, especially when you're building small and medium sized programs. There should be almost no problem that you face where somebody else hasn't already posted something on the Internet about it and gotten that problem solved. Most of times, it's going to be many different people have solved this problem, so your first step should not be Oh my God, I don't know how toe code this Your first step should be somebody else has already code this I want to get I want to find that person, figure out what code they used, and either use that code myself or figure out how to learn from that code. Understand what's going on in that code so that I can then implement it in my own code. So this isn't just about coding yourself. This is also about how can you lead a team of people where maybe you're not the technical person. Maybe you're not the technical co founder. Maybe you're just somebody who has an idea and has a rough plan for how to solve that problem. And the question is, will have you write it up in this specific program. The other thing is, you can outsource thes things. So once you have a basic idea of how you want the program to run and you understand enough about coding and programming that you can break it down into okay, these air what the different ingredients are meaning the data. This is the data that I'm gonna put into. This is the data that I want to come out at the end of the results, and then you can combine that with, Well, what are the functions? What are the different culinary techniques that we're gonna operate on those different pieces of data so that we ultimately get that finished result that we're looking for? So that's all programming really is. And as you go deeper into the course, you're gonna learn more about each of those aspects. But it's really that simple, and it comes down to building. Ah, huge part of programmer programming actually has nothing to do with typing things into your computer, what it has to do with his learning how to deconstruct a problem and solve it. And that's one of the most difficult things to do but programming and understanding data and algorithms. What it trains you to do is get a lot better at problem solving because you're getting a tool kit of things that you can use to break down a problem and understand it, and you're gonna find examples of other people that have already broken down other problems . So most people, when they're just going through their daily lives, they don't have labels that they can attach to different problems. To understand what's really going on. What's that mental process? It's something we learn unconsciously and in this fuzzy way where we never necessarily put words to it. But we can do it. What programming teaches you to do and trains you to do is to be much more exacting, much more accurate, much more precise about how you see problems, how you see of a solution to problems. And over time, you're going to notice that besides just the coding besides just the programming, whatever things that you come up with when you code, the other areas of your life are going to start to make more sense, you're gonna be able to deconstruct other areas of your life. Other domains that have nothing to do with coding, because you've trained your brain to think of this more precise way. So it's an extremely valuable skill. Even if you never plan on writing a single line of code, it's important to, for example, start using spreadsheets if you're not comfortable with spreadsheets, is just getting into spreadsheets, just learning that, okay, taking this big collection kind of nebulous cloud of information or data that I have in my head things that I know about and putting it into that structure of a spreadsheet that's going to start toe structure your brain as well. That's going to start to make things more precise in your head as well. And that organization brings a lot of benefits any time you're extra, uh, organizing things externally in the world. That's also going to create a feedback where you're also using a similar or exactly the same form of organization in your head as well. So it brings a lot of clarity of thought, and you'll notice that people that are programmers, people that are coders it's not just that they can type things into the computer and get it to do something. It's that they have a more precise way of seeing the world of understanding, problems and ultimately as human beings. That's what our brains are here for their here to solve problems. So this is gonna skip going to be a skill that helps you in every single aspect an area of your life, not just writing code, not just typing things into your computer and making it do stuff. It's going to really transform your ability to solve problems 3. You Already Program: in this section, we're gonna answer the basic question of what is programming. And I want you to get a feel for what it means, because in reality you already code. You already program. You just program in a different language in a different form. So that's what we're gonna be talking about in this section. This video specifically. So getting in giving instructions, what areas of your life do you give instructions and then what? Areas your life do you get instructions. So when you're growing up, you got instructions from your parents. Your extended family got instructions from people when you were in school. You got instructions when you were working your first few jobs and then you graduated from school and then you made got your first job or you went into business. And you you usually had somebody giving you instructions unless you were your own boss, where you running your own company? But even then, you have the government which has a certain level of power over you always. You also have other people that are domain specific. So the police might give you instructions. Your doctor might give you instructions or somebody in a um, adult learning course might give you instructions doesn't mean you have to necessarily follow it, but you're getting instruction. Somebody's telling you what to do. And then there's other situations where you're giving people instructions so that could be in your family with your Children. And then there's also the higher level of the culture gives instructions to everyone, and it tells people what to do, how to behave, what's right, what's wrong, what to focus on what's important, those types of things. So in different areas of your life, you're either giving instructions or getting instructions or combination of both of those. So you already probably have a lot of experience giving and receiving instructions. And part of the way that you get better at giving instructions or programming instead of being programmed is that you get used to giving other people instructions. This was a major change that I had toe go through when I started out sourcing for the first time. In delegating to other people, I was really used to getting myself to do things and planning out my own actions. But for the first time when I started outsourcing, I started had people working for me and I two give them instructions we're gonna talk more about, for example, the language barrier and how things play into that with outsourcing. But outsourcing is a great way to think about programming, because when you start outsourcing, the best way to learn how to do it effectively is to outsource very small tasks, things that are very easy to do and the lower skill that labour is, the less you pay for it. But you have to give proper instructions. And if somebody doesn't speak, your language is their first language. There can be problems where things don't go properly, and it's very similar toe getting a program to do something, and then it doesn't give you the results that you were expecting or that you were hoping for. So these kind of things play out, whether you're doing with the person and you're teaching them or programming them, how toe performs some task or do some job and you're training them or it's a computer where your training programming that computer to do the task you want. So there's a difference between programming languages and natural languages, but in both languages you can use the languages in order to give instructions. So in natural language, there's four basic forms of a type of sentence that you can create. Imperative is, when you give a direct command, go to the store. It's the least polite wakes that maybe X clam a tive, the store now exclaim. A tive has very specific uses. It's usually only used when somebody is very excited or experienced. Some strong emotion in derogative just means a question. Will you go to the store? It's more polite way of saying, Go to the store. Declarative is another way, declared of usually is used to make a statement. I want you to go to the store So all of the's four methods are different ways of ultimately communicating the same thing. And there's different things that changed, such as politeness, social factors. What role are you playing in the interaction? What role is the other person playing in the action in the interaction? But ultimately, natural language programs people in the sense that it tells people what to do, and people are all all throughout life, somebody is telling somebody else what to do or how to behave, and there's lots of social rules and their social, and that programs people to behave in a certain way. That's what a culture is. You can think about a culture as kind of the source code for how people operate in that social group, where that that country, that environment, whatever it is, you can have a culture that's very small with 50 or 100 people. You can have a culture with over a 1,000,000,000 people. So cultures exist at different forms in the same way as a programming language, can just operate on one computer or can operate on thousands of computers, all connected together. Like in Imagine one of Google's data centers, where there's just thousands and thousands of computers all hooked up together in all, performing a task which is basically what a supercomputer is. So if you remember Deep bloom, what won jeopardy That was a computer that was actually made up of hundreds or thousands of computers, all hooked up into one supercomputer. So the whole point of this is you already program. You already know how to receive instructions, meaning you know how to be a computer. But you also know how to give constructions, meaning you are the programmer and the message you give the instructions you give to somebody else. That's the programming that you're giving them. That's the code that you're giving them and they'll be code you're using is natural language. The code you're using when you communicate with a computer is programming language, so it's a different language. But ultimately, the whole point of giving instructions or programming is to get the computer or the other person to do something. So that's what programming really is in its essence is giving instructions and programming comes down to, Well, how do you use a language or a set of codes to give instructions? 4. You Are a Computer: in this video, I'm going to talk about how you already are a computer, and this is important for understanding. Well, what is the role of the computer and what is your role? And we kind of already talked about this where somebody else is giving you instructions and then you're running those instructions or you're going with him and then you're performing a task than they have effectively programmed to you to do something. And obviously we don't usually use that terminology of that language. But that's just because thes words air domain specific. But at a metaphorical level, it's almost identical. What's happening? The interesting thing about computer is that computer was originally a term for somebody, a person who just performed calculations, mathematical calculations because there weren't hand held calculators. There weren't even big computers that filled up the whole room, made a vacuum tubes that could just do basic things like addition of subtraction, multiplication. If you remember math class, you might have learned one time about the abacus, which was a very simple, um, non electronic adding and multiplication of math machine. But there wasn't anything that existed that was even similar to ah, handheld calculator computer calculator. So the original computers were people that were running functions in their head. They were taking in data a math problem. They were processing it in their head and based on rules that they had learned things that they had been quote unquote programmed with to process information. And then they would output that as the answer. So the first part of a computer's how do you get data into a computer? And then how do you get that data out of the computer? Because remember our restaurant metaphor. What's going in is the raw ingredients. What's coming out is that meal on a plate. The function is how is how are those ingredients being transformed by the chef? But the same sort of thing is happening when you're solving a simple math problem and you're the quote unquote computer. So getting data into your head is you're just reading it with your eyes. You're listening to it or you're reading it with Braille. The output is when you're writing or typing, so writing with a pen or pencil typing, you can also think about printing. Printing is a very important word to understand, because in programming because in order to get most programming languages to give you something on screen, you have to say print and then tell the computer what to print. So, for example, if you tell it to do some sort of math equation or toe print the answer to a question or to display on screen, you have to tell it to print that. And, uh, so you can think of that metaphorically has very similar toe by hand. When you were learning how to write, you learned how to print and then you learned cursive speaking and signing as the other sort of output may be thinking, well, those air kind of different, but they actually aren't that different, because with writing, you're using the muscles of your hand or when you're signing your using or even typing is your using your the muscles in your hands and fingers in order to communicate symbols with speaking, you're using your lungs and controlling your breath in the air, going in and out. You're controlling your lips and you're controlling your jaw and you're controlling your tongue. And those are the main things that are controlling the sounds that come out of your mouth because you're just changing the frequency. And ah and so at a basic level, you're using muscles just in different part of your body to create that output. And a computer is just using different types of inputs and outputs in orderto get that into its brain or its CPU, which stands for central processing unit. The next thing is what once you input it into the human or the person or yourself? How do you store that information? Well, we have two basic types of, uh, memory. We have short term memory where you can maybe memorize a phone number or something else like somebody's name. But once you try to fill it with too many things more than a handful, usually you just can't hold any more information. But we can seemingly hold almost infinite amount of information are in our long term memory . And no, Monix is the field of study of Well, how do you store information your head long term, what the best strategies for memorizing things and I teach a whole course on this memory stuff. But the basic idea is that there's certain things that are more memorable or certain ways of memorizing things that work a lot better than other and also spaced repetition is very important, nor to get things to stay in your head permanently your for a longer period of time. But the point is, you have to have memory in your head to store that information. Other wise, it's just going in one year and out the other. And in the same way a computer needs toe have short term and long term memory. Short term memory is called RAM. In your computer, you might have a computer with a gigabyte or four gigabytes or eight or 16 gigabytes of memory, and that's usually gonna be a much smaller amount than your long term memory or what's on your hard drive. And your hard drive might have a terabyte of space on it or a terabyte of capacity, and that's where you store files. So when a computer is working on a specific violet, let's say you open up a word document and you're putting together some sort of report for your boss. Well, if you're doing that, then you you have temporary files that are being stored in that one gigabyte or four gigabytes or a key gigabytes of memory or RAM. But once you save that file, it's gonna be saved to the hard drive, and then it's gonna be removed from the short term memory. So it's just like when you're working on a task in the moment you're processing that you have to store things for a second or 10 seconds while you switch between things. Or you might write it down on a post it note so that you don't have to remember in short term memory anymore. And you can save it for a little bit longer but eventually needs to go into long term storage or you just gonna lose it. So that's the difference between RAM and the hard drive, or the difference between storing something temporarily in a program versus telling it to stop telling the program to store information in a file saving in a file. So it's important to understand. Well, once you put information into a program, what does it do with it? How does it use it? We already kind of touched on this, but your brain is equivalent to the processor in the computer, and a thought is equivalent to a function so Ah, thought transforms information When you think three plus three, the function there is plus, so the two pieces of data are three and three. Those are both digits, and you're adding them together, and the function is adding them. So the thought of what? What is three plus three? That thought of plus is the function that transforms that into six. So the six is your output data. And what say that you wanted to print that out? Printing that out would mean writing that down on a piece of paper, typing it into your computer. So with the computer, it's printing it to the screen so a computer can run without your screen. You know this. If you've ever jiggled the BG a cable or HD Meyer Devi I cable and the screen went black, and then you got it screwed back in properly and it came back to life. Well, the computer was on the entire time. It's just the screen wasn't connected to it, so the computer can run without a screen. The screen is there for the human to be able to interact with the computer more effectively , but there's people that operate computers that are blind and they have the computer talk to them, talk out the options, and they're able to use Ah, computer or even iPhones. Um, I was out with my family to get breakfast about a week or two ago, and there was a woman who had an I watch in an iPhone, and she was just She would just flip up and down on her iPhone, even though she was completely blind, and then it would read out her the options. She'd select an option, and she could navigate the entire menu of the iPhone and use most of its function. So I was amazed when I first saw it. But your brain has the ability, toe input and output data in different ways, So you may output data in the same way as a blind person by using your fingers. But the way you input it for us, visual. For them, it's completely auditory, So there's different ways of in putting and out putting data. But the brain as the processor the computer is the processor is still working on the information in the same way. So when you're communicating your ultimately out putting information with your muscles, So you're using those muscles in your tongue and mouth in order to control speech and export speech or output speech. And then you can also do with your hands by typing things by writing with a pen or a pencil or by using sign language. And that's what I mean with muscles. So the equivalent of muscles for a computer would be any sort of motor or any sort of screen device or anything that can give feedback. So with a computer, the main thing you're going to get is a screen. But if you're playing a video game, for example, you might have a controller that gives you a certain feeling of a rumble. Or if you go toe, um, a movie or in a cinema, they might have seats that shake, and you might have speakers next to your computer. That output sound. So those are the outputs that your your computer can create. You have outputs also, and so it's the same sort of thing. The difference between different types of programming languages is what sort of instructions you can give them and then how they translate that output. So you've learned over the decades that you've been alive that if somebody says, go to the store and you know it store they're referring to You know all the instructions you've already been pre programmed to know how toe deal with that instruction. But a computer needs very specific instructions because it needs to know exactly how to control all its motors, and it doesn't have any built in functioning. If you get a robot that's already programmed by somebody else, then you might be able to give it general instructions like Go to the store or go to the gas station. It's on your left, but depending on how much existing information and programming is, that is in that computer you may have to get Give mawr General. You may be able to get away with a more general instruction, or you may have to be super specific. Like a GPS computer is very specific when it tells you what directions to take, whereas a person may not be able to do that is well so. Computers and people there ultimately operating on data and they're using functions in order to do that with people, we do a lot of processing, and you yourself do a lot of processing without really being conscious of the processing. When you're learning something new, you have a brief window of opportunity where you're very conscious of what you're doing. But for example, recently I started, um, trying to throw a football with my right hand because I'm naturally a lefty, and what I thought was really interesting is, even though I know how, toe throw the ball with my left hand. I don't know how to teach my other hand, my other arm, how to do that. So even though I can do it, I can tell my arm. Throw the ball over there. I can't tell my other arm to do that and because it doesn't know how to do it. And I don't know what micro adjustments on making in my left arm to be able to throw that football. It just happens. So just because a programmer function is running doesn't mean you necessarily know what's going on inside there. So that's why sometimes it gets confusing when you think well, I'm not aware of the programming that's in my own head that's normal for human beings. You actually only have a short window and oftentimes somebody who's an expert in a given domain or subject. They can't give you a good explanation. They can't tell you how they're doing what they're doing, because it's gotten to the point of unconscious competence. There's only a brief window where actually conscious of what you're doing. And most people are never actually conscious of everything at once. They're conscious of the beginning stage. Once they get to the intermediate, they start to forget those beginner stage realizations and things they were conscious up. When they get to the expert level, they start to forget those things at the intermediate level. And they've completely for gotten, for the most part, the things happening at the beginner level. And so this is the reason why sometimes learning from somebody who's a really great programmer doesn't necessarily mean that they're gonna be able to teach you to be a great programmer, teach you even the basics of how they think, because it's become automatic. We'll be getting more into this in the future. Videos 5. The Nerd/Jock Paradigm: in this video. I want to talk about the culture of programming and understand. I mean, this is somewhat Americanized, but it's important to understand because it gives you a sense of, well, what kind of people are programmers and programmers used to be more of, ah, tight knit demographic that didn't have a lot of variation in it. But now, because programming is easier because it's more accessible because of the Internet, more more people that don't fit into the standard mold are learning how to program. That being said, a lot of the culture still revolves around some of these basic cultural ideas. And so, even though their stereotypes, they're not true 100% of the time, there still is a lot of truth to them, and it also gives you a sense of what motivates somebody to want to be really great at programming. So when you hear these stories of somebody who spends while they're in elementary school, middle school high school teach themselves programming, using old books and old, really difficult languages that nobody learns today or too difficult for any beginner to use, you wonder. Well, how did that happen? And it can seem like somebody who codes. Is this mythical being where they have special skills? There's something just special or amazing about them, and sometimes that's true. But often times that's more mythology than reality. So I want to give you another metaphor besides the cooking metaphor, which is the one we're going to use for the rest of this course. But this was actually the first metaphor that I was thinking of, and then I just realized over time that it wasn't is powerful as the cooking in the restaurant metaphor. But, ah, football is America's game. And so it's Ah, it's a great metaphor to use because most people understand it, at least at the basic level, and that's all you need to understand this metaphor. So in football, the coach tells the quarterback tells the team what, what play to run during each down of those four downs, they need to get 10 yards, so that's the ultimate goal of the program. And the coach has a playbook each of those places, like a separate little program that runs for a certain amount of time until the ball goes dead. And so, if you think about kind of a stereotypical middle school or high school. There's the jocks. And then there's the nerds, the jocks with ones that are athletes, and they play their the ones on the football team sports team in the nerds of the ones that can't really cut it athletically, and so they go into something else and some of those thirds go into programming. And so I want you to understand the difference of kind of what's going on psychologically that would make somebody become so obsessed with coding because I've seen these patterns over and over again, and people that become ultra successful through technology startups or just really great coders that started a very young age. So part of the pattern is somebody who, uh, can't cut it in that in kind of the normal way of being an athlete, being popular by being part of the sports team and different parts of the world, different parts United States being on the sports teams and being an athlete can have different meanings in different, uh, a different amount of significance. But the idea with a football team is that the coaches ultimately in charge of what plays are run and then the quarterback, as well as the rest of team, executes the play. But the quarterback is the one who is really kind of in charge at the center of the action . And then the other players have their individual roles, which you can think of as a sub task or sub routine. So one of the things about programming that's important to understand is that it's not just one set of instructions. There can be a subroutine, and you can go back to the restaurant or the cooking metaphor for this, which is You can give somebody a set of instructions. For example, you could tell them how to make meat loaf and there might be or or chicken breasts, and you could have a sauce with that. So often times you'll see in a recipe. There'll be a little sub recipe that's about how to make that sauce, and you might make that sauce with whatever's left in the pan after you're done cooking that chicken or that meat loaf. So there's a little subroutine, a sub recipe in there, And whenever you're giving a computer instructions or giving a person instructions, there's often times multiple layers of instruction so at this level with the coach, the coach is giving the quarterback instructions in terms of what play to run. Then the quarterback gets in the huddle and gives the individual players. And then they each run their little subroutine of whatever they're going to do, and they're usually matched up against one or two players on the opposing team. One great example of this that you can see that kind of a meta level is the two minutes scripted drill. This is called the two minute drill, because at the end of each half of the game, there's a two minute warning and you get a time out to kind of prepare and then you have two minutes to play. And so quarterbacks and teams often script out multiple plays that they're going to run one after another. And because they can memorize the order of those plays, they can memorize that and have that pre defined so they don't have to get up. Get in the huddle each time between each plate. That puts the offense at an advantage and the defense at a disadvantage because they get tired out. They they don't have as much time to plan or to react to the offense, and so this could be really, really dangerous and really effective way to run your offense. And so you're not just programming at the individual play level, but your programming over these two minutes. These are the This is the exact order of plays that we're going to run. So the last thing and this is where it gets a little bit more abstract is the idea of the quarterback executing the play and either passing or handing off the football. And so, in this metaphor, the football represents the data, and data is ultimately what's being transformed in a program. The program starts off with some data that you give it, or it might get it from a sensor like a camera or something else, and then it processes that and then it out. Put some data at the end that you can look at that you can see or maybe get saved in a file or something like that. So in the same way, when a when the program on the football field starts, is when the quarterback hikes the football and then they pass it off, and then that that, uh, that ball gets handled by different sub functions, or subroutines, which is those different players. So passing the football toe another player that's transforming that data in some way or handing it off to a running back that's transforming the data in some way that's moving you down the football field. So this is a metaphor that you can use to start to understand why, psychologically, somebody would want to become a coder. Because when you're in that nerd category and you feel less empowered in your in middle school and high school, whatever you're looking for, some other way where you can have a feeling of control, where you can have a feeling of you telling somebody else what to do or having that feeling of control having also that feeling of safety of somebody isn't going to attack you or somebody isn't gonna bowl you. And so the computer often becomes for coders or programmers at a young age, kind of a friend or a companion or somebody that they can give instructions to. So in the same way that you might think about a quarterback is kind of the top of the totem pole, a computer program, a young computer program. Are still kids still a teenager? They're giving this computer instructions in the same way that the coach is giving the quarterback instructions. So they kind of go to this meta level or a level above where they have a similar sort of power that the quarterback has or that the coach has, because now they're giving instructions and they're getting something else to do, work for them and then come back with the results. So the feeling of power, the feeling of intimacy, having complete control but also knowing that the computer is never going to do anything bad to you or harm you in any way that can build a relationship between a person, a young programmer and a computer that can grow very strong. And once ah young programmer gets good at programmer good enough to get real results, it can be a very addicting behaviour because it becomes this positive feedback loop where there's no other area of their life where they have that feeling of control, that feeling of power, Um, and so it becomes an outlet for them toe meet those emotional needs of significance and certainty and sometimes even connection. Maybe they're connecting with people around the world through that computer through the Internet. And so those emotional needs are met through the computer through programming, and it explains why some people get so into programming. Eventually they may get into other things, and the way they meet those needs emotional needs air transformed. But at the beginning stages. That's what gets them hooked. And so much of programming is about. How do you get yourself hooked on programming? How do you get yourself to care enough about learning how to program to slog through all those tutorials? Those books, those courses taught by people where you just really don't understand it fully, and you have to use a lot of trial and error toe, learn even simple things. And it might seem like it's going to take forever before you can build an app that actually does something important or meaningful. That can be very frustrating. So if you're not able to figure out how to meet your emotional needs by doing programming, then you're not gonna want to do it in the same way where you go into a kitchen, you don't know how to use anything. You don't know how toe cook Anything that tastes good. It can be really, uh it can be really disheartening. You try cooking things, and every time you cook something, you burn it or it doesn't taste good. You don't know how to spice it. You just don't know what you're doing. And so we're going to be getting more in the later videos, figuring out how toe deal with those issues, Make sure you're motivated, how to get yourself motivated, how to get real results as fast as possible. But I wanted to take some time to explain this because it's really important to understand . You may see. See these people that are ultra programmers start a very young age. Ah, and it seemed like almost from the beginning they had this gift. But the reason why they were able to get good, so good so fast is because of this obsession that was caused by these sort of psychological and social factors that I've talked about here so that you can use that metaphor. But it's also very important to understand kind of the social worlds, the social and psychological reality that somebody might be in that would cause them toe. Wanna learn programming in the first place and why that could be such an important and powerful emotional driver that motivated them. And it's important that you have a similar level, or at least enough of a level of motivation that you passed the bar in the sense that you're able to continue even when the computer or the programming language throws thing. I things at you and you want to pull your hair out. So that's what I want to cover in this course. But next, uh, in this video. But in the next video, we're going to be getting back to had actually think about programming and how to think about outsourcing as it relates to programming. 6. Your Computer is Your First Employee: in this video, we're going to talk about how your computer is your first employees and how you can think about it that way. In the last video we talked about well, it can be very empowering to feel like you're the quarterback and you have this whole team that's responding to you, or you're the coach of the football team where that soccer team or baseball or softball team or swimming team, or whatever it is being the coach or being the captain or the Wieder of that team is very powerful, and it feels good to be in that position. And so, in the same way, if you have complete control of a computer that follows every instructions, never talks back, never causes issues that can be very empowering. That's part of what motivates people to become programmers. Now I want to shift over to the differences and similarities between outsourcing to humans and outsourcing to computers and ah ah, great way to think about it is not in terms of black and white, but in terms of ah Klein or Ah, different shades of gray bleeding into one another so you can think about a computer as something that is very, very talented and has a lot of raw ability. It is not very educated, and so it needs to be given very basic instructions and exacting instructions. But if you give it the right instructions in its language, it's never going to make a mistake. It's never going to take time off. When you experience outsourcing to somebody that's in India or in the Philippines or Indonesia or Eastern Europe. I mean, yeah, you can outsource to any country in the world that you want, but those are the ones that the most popular for a variety of reasons. If you're interested in that, check out my course on outsourcing. But the language barrier can be a significant issue, and one of the things that I found over the years is capturing your screen or taking screenshots and actually showing somebody exactly what you want them to do, as opposed to just typing out instructions, ends up being a lot more effective. And I might actually talk about later in this course Ah, specific software you can use to get started with coding where you'd never write a single line of code and the way it works, is it report. This program records everything. You hit the record button and then everything you do with your mouse or keyboard, it records that. And then when you hit that record button again, it stops the recording. You can play that recording back, and then the mouse and the keyboard will move on your computer without you doing anything. And it'll perform that same action over and over and over again so you can take some very repetitive task, and then you can automate it without writing a single line of code by just showing and telling instead of telling the computer what to dio. So that's something that you can use with somebody that you're outsourcing to, where there's a language barrier. There's also, uh, ways that you can do that with the computer itself, to make sure to get it to do automated tasks or, um, get us to do routine task where you're doing this repetitive thing over and over again. Next thing is the restaurant metaphor, so now we're going to be getting deeper into this metaphor and understanding Will. How do programs work? Because when you use programs every day on your phone, or on your computer or in your Web browser. Maybe it's an extension. Maybe it's something that you installed. Maybe it's a portable application. Whatever it is you're operating on it with a ah ah graphic user interface or a gooey. That's what G. U Y is here. And that's that's the front end. That's what you see. That's what you interact with. But that's not the part of the program that's actually doing the work. In the same way in a restaurant you're interacting with the host or the hostess, you're interacting with the waiter or the waitress or the bartender, but you're not. Actually, they're usually not the ones doing the work with a bartender. Yeah, they're doing some of that work, but in terms of waiter or waitress, you're giving them the instructions of what to create for your you're putting in your order . And then they're taking that to the back end of the restaurant to the kitchen where everything's actually made where things are actually transformed. So that's the ah, very essential aspect of programming. I want you to understand, because the way most I would say 95% of programming is taught is without this G y so can be very disorienting because you spend your entire life working with programs and you've never dealt with the command line. Usually, basically, what's happening is that that graphical user interface takes whatever input you have when you're typing. Things are moving around the mouse, clicking on different buttons, and it turns that into text code that it sends to a hidden command line. And if you don't know what I'm talking about with a command line, basically it's just a that black square where there's a little blinking white cursor and you can type things into it, and sometimes a bunch of gobbledygook will come out of it. The way the G Y works is, it gives the instructions that command line the command line performs. Whatever function it's gonna perform transforms that data in our metaphor. It would be taking those raw ingredients and transforming them into a final plated meal and then the command line, uh, outputs whatever data or whatever result. And then that gets fed back into the graphic user interface. And that's what you actually see on the screen. So that's what you see on the screen of your computer of your mobile phone, whatever it ISS. So the command line is basically doing all the work in the back end. The graphic user interface just gives away for you as a human being who doesn't understand programming or computer or command line to be able to interact with the computer, interact with that program. So when you're learning from most other courses, you're not learning how to build a graphic user interface. You're just learning the command line. It can be very disheartening and de motivating because it feels like every program that you have interacted with had that interface. And now you don't have that interface so often Times doesn't feel like a real program because it doesn't have that interface. I'm gonna be talking more about this issue later, but it's very important to understand front end and back end, because this applies in Web development also. So you're developed developing a website. You're gonna design it in HTML and CSS and maybe Java script. But on the back end of that website, there's a lot of other stuff going on, and that's not using HTML or CSS. Sometimes it's using Java script. Job script is a growing language. Uh, it's being developed so that you can use JavaScript for basically every single part of it. But the front end in the back end usually are going to be using different apple, different programming languages or different implementations or features of the same programming languages. So it's important to understand that distinction, because this stuff going on on the front and that the person sees is totally separate from what's going on in the back end. And it's the connection between those two that is part of what you have to set up when you're programming something. 7. Why Programming Books Fail: in this video, I'm going to give you a brief kind of complaint summary of what's wrong with other programming books. Other programming courses you may identify with most of these already because you've gone through other courses, books, classes, etcetera. Or maybe you're just dipping your toe in the water and this is your first time. And so hopefully I'm gonna be able to save you a lot of time by warning you about these things in advance so that your least prepared for them. Because motivation, maintaining your motivation is so important. There's so many people that get interested in programming. Maybe spend five minutes or 50 minutes or five hours or a few days getting into programming . And then they just hit enough brick walls over and over again that they just quit. So most people who try to learn programming end up quitting and never getting any rial skills that they can do anything with. So I want to make sure that is few views possible. Go down that path and it's Ah, it's kind of like walking a tight rope to get to the point where your great programmer, because there's so many things that can blow you off path that just there's so many things that can cause issues. So one of the first ones with programming teaching is that they're often not based on a foundation of concrete reality. There's no metaphor. There's no understanding of, Well, what is a function? What is data? What does it all mean? What's a good way of thinking about it? Cause it's not anchored to any existing mental framework that you have built. That's why I'm using a metaphor here, because that allows you to use the existing mental circuitry that you've built up over the decades that you've been alive and use that to process and think about these new things that you're learning with programming these new, uh, these new pieces of terminology, these new concepts, these new ideas, your ableto. It's kind of like laying the foundation of the house is your anchoring the house within the ground, and ideally, you would attach it to bedrock, so it's very solid in the ground. The purpose of the metaphors and this course is to get it anchored very solidly in your existing knowledge base. And that's what this metaphor is really useful for this is what I think is missing from most programming books is connecting the basic ideas of programming and software development to what the average person already understands. And cooking is one of the things that almost everyone understands. So that's why I'm using it as the main metaphor of this course. The other thing is excitement. Amount building something useful. Part of the issue is this chicken and the egg a problem, which is until you know how to program and code. It's very hard to know what you could create with programming or what you could create with code that would be useful that hasn't already been created by somebody else. Because once you know what's possible by being able to program in some programming language now, your brain starts to look for opportunities. When you get frustrated about a problem instead of thinking, Oh, this sucks, You think? Well, ah, wonder if anybody has written a program or script about how to solve this problem, and if they haven't now, you have an opportunity to write that yourself. But until you understand how programming works, you never think that way. And so the problem is you don't have any reason to learn programming, often because you don't realize that it's a solution to the problems that you're facing in your everyday life. And so part of what's important to do when you're programming and learning programming is to find the things that really excite. You find the activities, the existing programs and software out there that really excite you look at what sort of problems they solve and then start to think about well, what problems exist in those areas that I haven't been able to solve with software and then think about, well, how easy or difficult would it be to program something to solve that problem? And that's the other very important aspect of programming is that before you know how to program, it's very hard to know. Well, is this a problem that would take 10 minutes of coding to solve, or 10 hours or 10 days or 10 years? There's some software packages out there that were, uh started their development 15 2025 years ago, and so it took that long for this team of developers all together to get the software to the level where it's where it's at today and So for a single person to be able to Teoh create something like that would be impossible. So part of programming is understanding. Well, how hard is it to build what you're imagining? You would need to solve whatever problem you want to solve, and you're not going to know that until you learn the basics of programming. So use those a fax and those understandings as part of your fuel and motivation for learning programming at the basic level. I want you to get to the point where you understand about how difficult it would be to create any sort of software. And the reason why that's important is because now you have the ability to think about it in terms of, well, how would I outsource this project? So maybe I don't have to program it myself, but I can get a rough grass ballpark figure of maybe what level is this at? Is this a 10 minute, a 10 hour, a 10 day, 10 week, 10 month, 10 year project? If you can just get in the ballpark of roughly where it's at, you can make a decision about Well, I could outsource this and save a ton of money in a ton of time. Or maybe this isn't worth it. I'll just do it myself or I'll hire somebody else to do it. But just having basic understandings like that, you're going to start to see opportunities out there in the world for things that you could program or you could have somebody else program, and that's huge. And that's what I want for you if you get nothing else out of this course. Another thing we talked about in the previous video is that you don't have a graphic user interface with most of these beginner programs that you create, and that can be really frustrating because you feel like you're not doing anything really or anything that matters. And some of you may be thinking, well, that kind of thing doesn't affect me. But the truth is, that sort of thing is very important because you may not have anything that you can show your friends, or you may have something in your head where it's not really programming unless it's something where you actually go through the installation process on your computer or it's something that you actually download from the APP store or actually open up on your on your phone or your tablet. So or maybe the website it has to. It has to be a real website that's actually online. You can type in the U. R L on any computer in the world and will take you to your own personal website. That experience is very powerful the first time you have it. And so make sure that you're thinking about how can I get that experience for myself that I can maintain my purpose, maintain my motivation and continue learning coding until you get to the point where you start to understand things, you start to get it, things start to click, and it opens up a whole new world to you. Final Thing is not having visions of the possibilities, the power of coding. So we already kind of talked about this with the excitement factor. But once you learn the basics of coding and you start to see what other people have built with basic code, and people that don't have a ton of of program experience are able to do by just using the basic fundamental tools of a language, plus maybe a plug in or a tool kit or a framework, or in sdk or ah, library for, ah, language. They're able to do amazing things. And what I mean by all those pieces of terminology that I just threw out there is. Each of those things is something where somebody else has written some code, and you can basically plug it in and play it. Kind of like putting ah VHS tape into your VCR player. And then it just goes, It just starts playing, and you don't need to know how everything works inside. So one level of programming that you can get to is you just know basically enough where you can understand what's going on. You can use the most basic functions, and you can take a ton of work, thousands of man and woman hours going in tow, programming something that's open source and free. You can plug that into your programming language, your command prompt, and you can get it to do some really amazing things without doing almost any programming yourself. Maybe only five or 10 lines of programming. You can get it to do something really cool. So really look for opportunities to do that and part of that is just going on Google and searching one of the top 10 libraries for this language of that language. Or what is this language best used for? Once you know what is best used for, you can start searching Google for, like, top 10 tools or plug ins or tool kits or libraries or frameworks for this language of that language. And you're going to start to Or what are the top projects on Get hub or another place that sort software into different categories. You're going to start to see opportunities, what other people have built, and you're gonna be able to do that yourself. Use those projects is inspiration. Copy and paste things and just start getting going and building very powerful programs very quickly. So always, especially at the beginning, be looking for opportunities where you can do something that's useful to you. That could help you in your job, your business or help somebody else or build something that you're gonna be able to use and try to find other people that have already done that so that you can look at their code and we sketch to the point where you can read other People's Code and Adam and understand the comments that they put into their coat will be talking about that later. But just being able to recode read somebody's comments and follow the logic of what's going on is extremely important. 8. Your Business is a Program: I added this last video in here because for those of you who are entrepreneurs or you think about starting a business on the side or you have a managerial role or leadership role in a business where you're employed is to start thinking about your business or your division as a program. Start thinking about it as people that are running individual scripts or sub scripts within a larger organization. They're all working to produce some sort of output, so you takes a certain amount of inputs in your business, and those turn into outputs. So how does that work? Well, each individual person you can think of as kind of like an individual computer, and they have certain inputs that they need in order to create the eventual output that you're paying them to do. So One of the inputs you're giving them is the money. Another input you're giving them. It's a roof over the head, maybe a computer, maybe a place to sit a chair and desk stuff like that, and you're providing all those things. You're providing time, you're you're providing breaks and other things organization, and then they perform some task, and then they take those raw materials you give them, and they turn that into a final results. It gets a little bit more abstract and hard to talk about when you're talking about knowledge workers. And a lot of our economy now is knowledge work. But it's very simple. If you think about somebody who say a carpenter, you give him or her the nails you give them, the the would you give them the different tools. Or maybe they bring their own tools, and then they're able to take those raw materials and build a house for you or build whatever you need built. So it's important to start thinking about your business as a program, and the way you do that is you do it visually. You do it with flow charts because the way a flow chart works is you start with the inputs , and then those input puts get changed or transformed in each new box or oval or circle in that flow chart until you get to the final result on at the end of it. And the traditional way to do a flow chart is to start on the left side of the page and go to the right side of the page, and this is hugely beneficial to start thinking about your business as a system, and it's once you start doing it, you start getting a much deeper understanding of how your business works and where there's opportunities where there's bottlenecks. So one of the first things you should do is build a systems library, and this is so that each person, each employee starts to document how they do what they do, and they document the improvements that they've made. And if you have multiple people doing the same thing, make sure that they're sharing their information. They're sharing their strategies, so they're all doing things in the optimal way. It's also going to train you, help you to train new people in your company faster. So if you're not documenting anything, then that person has to go to the person that's retiring or another person that has the same or similar position. And that person has to take time out of their day or their week in order to train that new person instead of that new person having something that's written out. So it's something that scales really well, and if you lose an employee than all of that knowledge goes with them and then you where somebody else has to recreate that from scratch. So it's really important to document everything and then keep all those documents on the various processes in systems library. Final thing is just preventing, relearning or speeding up the process of relearning. We forget things at a phenomenal rate. We're really good at the weeting things. It's the hold idea of if you, uh, use it or lose it, so prevent that very long process of relearning something from scratch. It's like, you know, you did something six months ago. You Googled around, you found the answer and then you did it and then you forgot about it. And then six months later, you're putting in the exact same Google search. You're looking at those exact same pages that didn't help, and you're just searching for that one that did help. And that process is happening all the time in your business. It could be happening with you if you're so you're going so low at it or could be your employees. And so it's very important document things that you can prevent that long process of relearning skills over and over again. Having everything in one place and part of growing of business and being able to enjoy running your business is that you're not constantly struggling with data overload. Information overwhelmed, and the reason why overwhelm happens and why people tend to rise to their level of incompetence is that out of at a certain level, somebody is just out of their depth. They no longer understand all the systems that are going on, and so they're not able to optimize that system. And when they're not able to do that, they're not able to run that division effectively. Or they don't have the tools with skill set or the understanding to run that business or that organization or that system at a higher level at the next rung up on the corporate ladder. And so that's why things work the way they work. And it's important to think about your business as a system to think about it as a program because you're going to realize that the same patterns exist in different formats in the different areas of your life. So when your business things air running in a system on your computer. Things were running as a system in your brain. Things were running as a system. There's raw inputs. They get transformed in some way by a function or some sort of process or instructions on a recipe card, and then you get some sort of final results. So when you're business, you're putting in certain things. They're being processed by your employees or by robot or by a machine computer, and then you're getting some sort of final result. And that's what you're selling with a computer you're in putting data, and then it's out putting some other data with a person. You're giving them instructions, and then they're performing some tasks and their head via thinking. And then maybe they're also doing something with their hands or their muscles in order to transform something physically or input data or export data, stuff like that. So in all these different systems, you're putting things in their being transformed in some way, and then you're getting something back out of it. And it's important to start thinking about all of the's, using the same terminology, the same frameworks, because the top people in technology that the people that are running these multimillion, multibillion dollar technology businesses. This is how they think about business. And it's an extremely powerful way to think about business, because now you're using the same frameworks to process mawr, different areas of life that speeds up your thinking. That makes it more efficient. You start to look for you, start to find opportunities in an inspiration in one area of your life and then bring it over to the other area of your life. So your programming something you've come up with a cool way of program something, and then you think, Oh, wow, In my business, I could use a similar sort of idea to really speed things up or improve things in my business as well. Or you think, Oh wow, I'm doing this in my business. But I could actually implement and how I think about things or how I store memories or how I do something and just in terms of how you're thinking strategies, your decision making computers can be taught toe make decisions via a decision tree. And if you can get your brain to think in that same way, even at a very basic level, you're going to start to make better decisions, and you're gonna know when making spending a lot of time on making a decision is a waste of time. So a lot of the frameworks that you learn when you're learning programming and you're learning how data is stored or organized on a computer how functions operate on a computer does then start to bleed into how you think about your business. How you think about your own thinking, how you run your own brain, your own biological computer. So these things transfer over, and they're extremely valuable thinking tools and business tools and computer tools. So start to expand your mind. Start to use the same pieces of terminology, the same concepts and as many different areas of your life is possible, cause it's gonna add a lot toe how your you ultimately perform. 9. What Kinds of Data Are There?: in this section, we're going to be talking about data about information about knowledge. How do you store information data knowledge into a computer? And what exactly is the difference between data, information and knowledge? So, data, the way you can think about is something that's at the smallest level, like at the atomic level. Something that's information is at the molecular level, something that's at the next level would be knowledge. And so knowledge is a collection of information that has some sort of meaning. Data is information is data that's put together that has more meaning. So it just means higher and higher levels of meaning data might be what say you're using a seismograph to measure earthquakes. So you're getting data out of that. You're getting maybe a graph on a piece of paper to getting numbers. Output it. That's just data you need toe. Add some meaning to it before it would turn into information. And the knowledge would be well, what is? What's the larger pattern in this geographical area? Or what is this data or information mean in the larger, grander scheme of things? How would we plan? Ah, response of this If there was, Ah, earthquake. That was about to happen. A city could react in a certain way, so those air the basic levels. But they're not exact definition. So don't go out looking for an exact, if definition of how those things are different because, ah, lot of people use them interchangeably. But the general connotation is that data is at the smallest level. Information is at the medium level, men knowledge is at the top level, and some people will even go beyond knowledge. But they'll go into experience, so experience is applied knowledge and then they'll go into a wisdom and they would see wisdom as, uh, understanding what that experience means or seeing that experience from multiple perspectives experiencing the same thing from different vantage points, that sort of thing so it can go up and different people have different models. But the point is, understand what it is. Now let's get debt down toe what's actually important in terms of programming. What kind of data is there out there in the world? Number one is text. This is the most obvious one. So text is not just text. When you're talking about programming, text is ah, multitude of different things. So one type of text is a character. Another type of text is a number. Another type of text is a number with a decimal point after it. So that's called a floating point. And the reason why it's called a floating point is because as you increase or decrease that number, that floating point that decimal point can change its position in terms of, well, how many digits is that number? If that that number can change, then that floating point can change its position. What else is there? Well, there's a string. So a string is any combination of numbers or letters. And in certain programming languages, there's a difference between a long string and a short string and a long, long string or a short short string. Different languages put limits on how long those strings can be, and U N forces you to group your digits or your strings or characters or collections of those into. You have to tell the program in language beforehand how big it's going to be. So, using the cooking metaphor, you could think about how, when you go to the grocery store, there's usually different sizes of the same exact product that you can buy, whether it's flour, sugar, butter, whatever. There's usually different sizes you can buy, and that takes up storage space in your refrigerator. So your refrigerator, obviously enough for flour sugar. But for perishable items, those take up space and in your cabinets where you're keeping your dry supplies, your drive. Food. Dry, raw ingredients. You have only a certain amount of space, so you only buy enough so that you can get through maybe a day, a week, or a month, where some unit of time. You just want to get enough flour, enough sugar that's gonna last you, maybe a month or a few months, and then you'll go out and buy some more. So the same sort of idea exists with data. What happens is and in higher level languages, meaning more modern languages. For the most part, languages. Where MAWR, if the information is built into it more, there's a lot of, uh, functions built into it. Functionality built into it because, as I said before, each language is built to solve a certain type of problems. So, for example, there's a programming language called Are Just the letter R, and it's optimized to deal with statistics. It has optimization for complex solving complex math problems doing, uh, complex, high level maths. And so, in other programming languages, you would have to create those functions from the ground up to do those higher level mathematical calculations. But in our they're built into the program. So all you have to do is enter what numbers do you want to put in? And it'll do the calculation for you in another language. You would have to start from the ground up with additions, attraction, multiplication, and you'd have to figure out a way to create that complex formula before you could ever plug the stuff into it. So that's why different languages matter and why you want to make sure you're using the right language for the right purpose. Let's get back to what I was talking about with data. So let's say you have a short string might be eight characters, so that might be like a name that has eight letters in it. You might have a long string, which might be a sentence or could be an entire paragraph or could be even longer. Could be hundreds or thousands of characters, all one after the other. And so the reason why some programming languages care what the the size of that string is is because it's like in your kitchen you have a certain amount of space in a cabinet for let's say, all your baking goods like your flour, your sugar, maybe you have white sugar, brown sugar, confectioners, sugar. So you want to have enough space in that cabinet toe, hold all that stuff and so you. What you might do is you might save space in different parts of that cabinet for different items. But if you buy way too much flour now, you have no space for it. So you want to make sure you only get enough so the same things with data. So in certain programming languages, you have to tell the program how about how big that piece of data is gonna be? So it only uses that much data. Now, why would the computer care about how much data that how much memory that specific data piece of data string, whatever is going to take well? The reason why is because computers have a limited amount of ram, so on your laptop or desktop. That might be two gigabytes, four gigabytes, eight gigabytes of RAM. And if you want to create a program that performs very highly goes very fast, then you don't want it wasting a bunch of space. So it's like, What say you had? Ah, the spice saffron, which is one of the most expensive spices in the world, so you're probably only gonna have maybe a teaspoon or a tablespoon of it at any one point in time. Unless you're huge restaurant. You just don't need that much. I mean on. I'm talking here about your home kitchen. You don't need a lot of it, but think about your spice rack. You don't need to fill a huge cabinet with just that one spice so you can create. Ah, you can take your spice rack and just have little slots for each of the different spices. And that's gonna work fine. You wouldn't want a waste an entire big cabinet just to hold one spice. So it's about optimizing memory. And so program wants to optimize memories. So especially lower level languages like C or C plus plus, those languages are used to optimize things to make programs that run really quickly. Sometimes you need a program that's gonna run very quickly because it's going to use water computers. Resource is other times. It's a program that's very lightweight, so you don't have to worry about this stuff. So usually newer programming languages aren't as fussy. And don't ask you well, how big is this string gonna be? They just deal with that later. But if you want a toe, create something that's super efficient, then you're gonna use one of those languages that gets closer to machine code closer to assembly language. Those of the more difficult languages to learn. Most of you will never learn those languages you don't have a reason to, but sometimes you do. So that's the first kind of data. There's other kind of data, like images audio. I have images here twice for some reason. Video three D models and there's other types of data beyond that, and there's software that can and plug ins for programming languages that allow you to manipulate these different types of data. But just for a second think about video, so video is really just a combination of images and audio, and then maybe subtitles. So one kind of data might act. You might think about it as a different thing. Will obviously might think. Obviously, video and audio are different, but it turns out that video is just a combination of two or three different types of data. Text, audio and images moving at 24 4 Ah, 30 60 frames per second. So that's a way of thinking about data. You need to be able to break things down too. Well, what am I actually dealing with that you know how to go out and find the library's, how to go out, find the programming language and the resource is so that you can achieve and solve whatever sort of a problem you want to solve with that programming languages. The next thing is, where does data come from? So how are you going to be getting data into your program? Maybe you have a mobile app. And so you're thinking about well, what kind of data does a phone having? It might have geo locational so it might be able to use the GPS and might be able to use the accelerometer. So if somebody shakes the phone, you would have access to that data. What else does the phone have in it? Well, it might have a camera in It might have multiple cameras in it. So you could use one of those cameras or both of those cameras. It has a microphone in it because people need to talk into it. It has, uh, some sort of audio so that you can hear stuff coming out of the phone and has a screen so you can display things. Maybe it has a vibration capability so you can put your phone on vibrate. That means that you could use that for your app. Also. So those air, those aren't just sensors. Things like, uh, the screen is not is just out putting information. It's not taking information in except in the sense of a touch screen. So a touch screen is a sensor where that's that's an input. Ah, microphone is an input. When you just have a speaker, that's an output. So there is a difference between input and output. That's another thing you want to start thinking about as well. How does information come into the phone or into the computer? And then how does it get out of the computer, so your mobile phone is a really great way to start learning that because you can see well , how does this work? So information comes through sensors, but ultimately, what is thesaurus? The source of the information is the human or the environment, so a seismograph would be getting a sense of the environment of is the is the is the earth shaking. But let's say you're doing a lie detector test and you have one of those needles going back and forth tracking. Somebody will have nervous. Do they feel in that? The when they get really nervous, the needles going back and forth really fast. So that's measuring something where it's a human input. Other times it's a machine. So it's one machine talking to another machine. And so it's just the data's going from one to the other. And really, it's not the machine. Usually it's usually ah, program running on that machine, and a good way of thinking about this is a P I and an A P. I is an application programming interface. What does that mean? Well, the first word application just means you have an application. You have a program. So you have your Web browser or you have whatever you used to play MP threes or video files or Microsoft Word or Excel those air all programs. Those are all applications. The next thing is programming interface. So programming interface the interface means How do you get information from one program to another program? And so the kind of interface it is is it's a programming interface. There's other types of interfaces we talked about this earlier. A graphical user interface, so graphical user interface allows you to use your keyboard in your mouse in your screen to interact with that applications, you can click around. You can go into a word and quick the the bold ID be button toe bold. Whatever text you have selected, you can go in and click that drop down menu, and then you can change the size of the fund. So those air all aspects of the graphical user interface here. We're talking about the application programming interface, so this allows a programmer to go in and create some sort of program that takes data out of that application and can also feed data into that application. So, for example, you could build if you if you used Excel to any degree than you might know about Mac Rose and Mac Rose, our little applications, little scripts that allow you to add functionality to Microsoft Excel. So that's an easy way that a lot of people get into programming. And actually learning how to use Excel is one of the easiest ways to learn the basics of programming, because to use any sort of formula inside a cell, you have to learn a basic programming function. And so the functions that operate inside Excel or Google slot Google sheets those air basic programming code. That's a very basic programming code, and you can use the A P I from from almost any Google app is gonna have some sort of a P I to it or it's in development and similar with a lot of other applications. Most big applications. A lot of big Web services like Google like YouTube, like Amazon veil of a P I so that programmers can get data out of them and then also put data in and get some sort of response or some sort of answer, or get more information about a product. Facebook AP I so you could put in somebody's name or you could put in their Facebook I d. And then you could get other information back out, like you put in their I d. And then you get back their name. Maybe you get back the link to their profile, their gender, where they live, how old they are different stuff like that. So an a p I allows you to go Teoh, request some information from a website or from an application or from a machine, and then get the information, the data back that you want from it. So AP eyes air. Really interesting. They're very powerful. You can build a complete application just by using data from another service. So Twitter, Facebook, YouTube, Google. You can think about all these major services. And if there's a feature that you want and they don't provide it and nobody else is coated it, you can just go and build that does it? It can be. Maybe only 50 102 100 lines of code might only take you 10 15 20 minutes to write it. So that's the power of programming. You don't just have to build a full on application that somebody installs on their computer , installs on their mobile phone or goes to AH, complete website. It can just be a little script that they run, or a small service that just does a small individual fixes some small individual problem that you need to solve and maybe other people need to solve. So it's all starts with data. It all starts with what are the raw ingredients, and then how can you transform those? And that's what this video and the coming videos are all gonna be about. 10. Where Do You Store Data?: in this video, we're gonna talk about storing data. So now that you know the different types of data, the next question is, Well, where do you store it? How do you store data? If you don't have it there and have it stored somewhere, then you can't work on it. If you don't have the ingredients in your kitchen, you can't make those ingredients into a meal cause they're not there. So the key is, how do you store that data? And there's basically a list here of ways to store data, but you're either storing it on paper or externally in some way, or you're you're storing it digitally, meaning on a hard driver. Flash drive on a CD DVD Blue Ray. Those air optical drives, optical methods, magnetic tape. So magnets is how information is stored on hard drives and flash rides drives. It's also how it's stored on tape. Part of this list here is that it's not all in the same category, meaning that servers in the cloud that data is stored on hard drives those servers. That cloud, which is just a bunch of computers connected together, is just a bunch of computers with a bunch of hard drives in them that are all interconnected, and they're all working together and they're all there. Re sources are combined. It's kind of like this Frankenstein entity, so that's what a server and the cloud is in your brain. So that's another way of storing information, temporary memory in your brain. You have temporary memory, and you have long term memory. And so on the computer, you have the same sort of set up. You have long term memory, which is your hard drive, your flash drives, CD DVD and even those aren't very long term. For example, Ah, hard drive is usually going to die within about 3 to 5 years. That's the normal average lifespan. So if you don't back up your data, that's the kind of life span you're looking at it before some things like we to crash and you lose everything on it, or you have to spend thousands of dollars to get those family pictures or music or whatever you have on your hard drive back. So these air different ways of storing data. But the question is, how does that apply to programming? What does that all mean? What What do you do once you have it stored? Well, once you have it stored, you can access it and work on it, so just because it's stored somewhere doesn't mean you can instantly work on it. You have to bring that in to the working memory so that the program can work on it. So good way of thinking about that is you have food that's in your refrigerator. You have food that's in your freezer. You have food that's in ah, Cabinet. OK, so good way to think about stuff that's in your freezer. It's more short term storage. Something that's in a Cabinet is more long term. Same thing with a freezer. But the thing about a freezer is that you put stuff in the freezer, but you need a thought out. And so one way of thinking about that metaphor qui is something like a zip archives, so you can put things in there and compress them, but eventually you have to take them back out to use them. So that's a way of thinking about a freezer and the metaphor there. But the point is, you have to bring that data into the program and once it's in a program, then you can work on it. And then when you're done with that data or you want to get rid of it or, uh, move on to something else, you need to write that data to a file. You need to write it somewhere so that it's stored it saved for later. Another thing on this list is a database or a spreadsheet, and a lot of people wonder. Well, what is a database database is just a place where you store information and it's made up of tables. So what is a table? A table is just a spreadsheet. It's just And, uh, you may be wondering, Well, what's the difference between like a spreadsheet and excel in a workbook? So a work book is a collection of spreadsheets, but each of those spreadsheets is just a table. If you go in tow, Microsoft Word or Google Docks and you just go to insert table, it's gonna tell you it's gonna or it's gonna ask you how many rows how many columns do you want and then it's going to create a table and you can enter information in there. The difference is that you can't do any functions on its you can enter data into that table , but you can't tell word you can't tell. Google docks will do this function. Add up these two ah cells and then put the answer in the third cell. You can't do that because there's no function there. So if you create that sort of dumb table, then you can't really do anything with it. It's just stored information. Where becomes more powerful is when you're operating on that. So if you wanted a metaphor for that, well, you're storing thing. Imagine somebody who has everything in their kitchen perfectly organized, so everything's in boxes. They're all the same size. They're like laid out in rows and columns. Everything's labeled. That's basically what a databases, databases. Just a collection of those spreadsheets. If you want to think about the Excel metaphor, as I said before, a work book is a collection of spreadsheets, and you'll usually see them a separate tabs. So there's multiple spreadsheets, but they're all within one workbook, the same idea with a database. You've got multiple spreadsheets or multiple tables within that database, and all of those tables are related to each other in some way or another, they all. Otherwise, you would put you would put different things that were related in a different database. Now do they have to be related to the have to be connected? No, but that's how you people usually designed databases. So the important thing to understand is that data is stored in these different ways, and you need to get that data out in orderto work on it to operate on it, toe run functions on it, and then you need to save that data when you're done with it later on. Or maybe it's something that's ephemeral where you don't really need to save it. Maybe it's just somebody sees at once. That's all they need, and then it goes away and it's never stored again. But it's important, understand? How do you store information? Because if you don't store the information, you're not gonna have access to it later 11. How Do You Turn Info into Data?: in this video, we're gonna talk about how to turn information into data and what does that mean? What that means is there's different types of information. And the question is, how do we get that into a form that we can put inside the computer? Because often information is gonna be stored in something that's equivalent to a spread sheet some. Because if you think about it, a single row in a single column is just one piece of information, one cell by itself. So ultimately, you can think about any sort of information that you're storing in a computer. That's data that's text based is going to fit in tow, something resembling a spreadsheet, other forms of data, video pictures, audio stuff like that. That's where it gets more complicated. We're not gonna cover that here. But the way that you want to think about that sort of stuff is figure out what sort of programming language that is gonna work best for handling that type of data and then find which libraries are going to be best for handling that specific type of data. And once you do that, then you're gonna find specific Torrey tutorials that tell you how to do that, but we're talking about Here is the types of information that are out there and one of the keys to understanding data understanding information. How computers handle data and information is that information is relationships. And what that means is, if you just put a random number inside Ah spreadsheet just in the first column the first row, just that first cell in the top left corner, you just put a number there. That number doesn't mean anything by itself. That number might mean something if you put in the column age. So now that that piece of data 13 has a relationship with age, so now it has a meaning. But we still don't know whose age it is, so we might create another column that says name. And then we might put below that Timothy. And so now we have a judge, 13. So now we have a relationship between two pieces of information. But there's also a relationship between age and 13. 13 is an example of an age, so it fits within the category of age. Timothy is a type of name, so it's on example of a name and so there's different things going on here. An identity type of information is where one thing equals another thing. So you may think of your identity as a name. You may think of your identity as an age. You might think of your identity as being part of your family. So if one call miss first name, one calm, his last name, which one of those is more important? Or they both important? Or maybe there's a middle name. Or maybe maybe there's a nickname, So each of those names has a different meaning. But ultimately that's an equality, meaning you are this name. Another thing is hierarchy, so let's go back to the kitchen example. You can have cheese, or you can have a type of cheese so you could say Add cheese to the Mac and cheese. Or you could say, Add cheddar. So that's a hierarchy. That's a type of something. There's also attributes, so going back to 13 13 is an attributes of a person. You could also say a name is an attribute of a person, so at the identity level, what you're saying is, this is what everything else is linking to. This is what's at the top level. So at the top level is the identity of whatever that organization is, and everything feeds into that. So the identity is talking about what's at the top. And is there anything that's equivalent to that, like a label for that thing that's at the top? So a person is at the top of their kind of personal life organization, and so they have a name that's equal to them. So it's at the same level. Another type of relationship is cause and effect. So when somebody says, if you do this, then I'll give you $10. That's an if then statement. That's a cause effect relationship. And those air used a lot in programming. When you see something like, if else or if then those air that's programming language, meaning If this happens, like, let's say, if you if you bring me this meal and it's cooked right and I enjoy, then I'll pay you $50 for the meal, plus a tip. If it's if the service wasn't good, then I won't give it temporal. Give less of a tip, so that's a very basic rule for how if then, relationships work and those relationships are very important because they show you how to make decisions. It's basically a decision tree at the top of that tree is what's the first question? What's the first thing that could happen? Well, am I going to leave a tip that would come down to well, one side of the tree was, Was the service great? You might leave 20%. Was the service good? Maybe you leave 18%. If it wasn't that good. Maybe we've 10 or 15% was really, really bad. Maybe we five or 10 or none. So a decision tree just says, Well, based on a certain criteria, then what do you do? And we need to be able to tell programming languages to do different things if a person gives a different input, like what say We're creating website and we want people to be able to log in so that they can participate in the website. Or maybe there's some private information we don't want the whole world having access to. So we want people to create a password, and we tell them well, it can't be a one, but that that string of a password can't be one letter or one number long because that's too easy to guess. We might say Well, has to be at least 10 letters long. Then you might think, Well, we should also make them have a special character or a number in there also, and maybe a capital letter. Let's say you're designing something that's to protect somebody's bank account. You're gonna wanna have, ah, complicated passwords so somebody can't just guess it or use a brute force attack and eventually get into that account. So you're designing that and you're thinking, OK, I wanna have all these attributes. I wanna have all of these requirements on the password. And so you're right. A little script or a little subroutine that says, Well, if the password doesn't have a capital letter, then return error. Your password needs to have a capital letter. Something very simple like that. So that's what it looks like when you're actually programming something. You also see this in recipes. So, uh, when the when the chicken is got a nice sear on it, then flip it over and cook the other side, Or when the steak feels like this part of your poem that means that it's medium rare if it feels like this other part than it's rare. So that sort of thing is an if then relationship. And almost any rule you can think of can be expressed as an if then relationships. So part of what you're gonna be doing when you're learning programming and you're learning data types and information and had a structure information is you're taking a lot of these abstract concepts and these things that maybe you never really thought deeply about, about just the world around you. People, ideas, rules, how things work, and you have to start toe, formalize them or start to write them down in a code that makes sense that a computer can also make sense of so part of what you're learning when you're learning to program. Learning to code is that you're learning to take the ideas that you already have your understanding of how things work that's at an intuitive level. Maybe you've never explicitly stated it somewhere before, but you have a feeling of you know how something works and the question is, well, how do you transition that or convert that into something that the computer understands and that it can work inside a specific programming language. So different programming languages have different ways of expressing these ideas. But ultimately there's only a few different types of information, as you can see here in this list. So this is the basis of when you're trying to convert something into information. These are the types of relationships that exist. And if you get confused about this stuff, just remember that it all comes down to very simple structures, like a decision tree. It comes down to very simple structures like Ah, spreadsheet. And as long as you understand those things and you can kind of imagine them visually, there isn't a lot more that you need to know each specific language. You may have to deal with a different code or a different way of talking about that spreadsheet or different way of talking about that decision tree. But ultimately it's very simple. It's just a flow chart or just a table with a bunch of, uh, horizontal and vertical rows and columns where you can put information into it. So that's it for this video. Just remember that information is relationships, and when you're building things like a database, which is, or a spreadsheet, which is a lot of times how you're gonna be storing information. You're just storing information according to these relationships, and each time you create a new column, you're creating a new category, a new attributes that you can be putting information into when you're creating rules in a programming like if or else do this or else do this or else to this or else to this that's cause effect, thinking that's if then. 12. How Do You Get Out the Data You Want?: in this video, we're gonna talk about how to get out the data you want. So once you've transformed that data, the question is, what do you do with it, then what happens then? Well, let's go back to the restaurant metaphor once the meal is prepared. Now you've got to get it back out to your patron. Now you have to get it back out to your customer. So they're waiting at the table and you have a waiter who's going to go get that meal and then bring it over and put it down on the table for the customers. So you've got to get that data back out to your user eventually. And so there's different ways of doing that. And this is this video is about looking at the world in a different way, looking at computers at electron ICS in a different way in terms of Well, okay, there's something going on in that black box. I'm not sure what's going on, but I know that data is coming out in these different ways. So I want you to start seeing these patterns because this is gonna This is what gets you thinking like a programmer. You can write code in just normal English language. You can just give instructions in normal English language, and then a programmer can take that and turn it into whatever programming language you want . So, ah, lot of what a programmer does isn't actually writing code. It's it turns out most of what they're doing. I mean, sure, it depends on what kind of code or they are. There's somebody that's somebody tells him, Okay, right, this part of this program, then, yeah, a lot of their time is gonna be spent coding. But if they're the person coming up with the whole idea of the piece of software application, Web website or mobile app in the first place, a lot of their time is spent planning things out. And that planning stage doesn't necessarily require you to understand a specific programming language. What it requires you to do is be able to think in the way that computers think, understand how they're taking data, processing it with various functions and then out putting it, and sometimes that output goes to a different section of the program. Sometimes it goes out to the person if it's complete, so if something's halfway complete. Think about it this way. Sometimes you have the chef working on something in the kitchen. Sometimes you have one of the cooks who works underneath the chef. Sometimes one cook will get something toe one stage and then bring it to the next stage. Maybe the farmer creates that flower. Or maybe they just create the corn than the corn gets turned into flour. Or the week gets turned into flour at a separate facility. And then that flower goes to a store or a warehouse, and then that flower eventually gets to the kitchen. And then that's where it's prepared by one chef to turn it into bread and then another chef chef four. Cook takes that bread and turns it into a sandwich or turns it into a burger or something else. So there's many different stages in the same way inside a piece of software inside a robot or a machine. That data can be goat is being transformed at each stage and is going between a bunch of different subroutines. So there's this idea of programs within programmes, instructions with instructions. Remember we talked about earlier. You can have a recipe for how to make meat loaf and then a recipe inside the recipe about how do you make the sauce for that meat loaf? So that's how you want to think about this from a big picture view. But from looking around at your day to day life and seeing how data is out, put it. These are the things that I want. You pay attention to number one motor control, so anything that has a motor, anything that has an engine, including your car, has, ah, brain inside it. And so that brain is processing data. And then it's out putting data. And so what you're seeing with your eyes air hearing with your ears or feeling with your body. That's a motor, making some sort of effect on the environment. Printing in two and three D So one way of printing as you can, let's say, Take your LCD screen that's in your radio in your car. When you look at that LCD screen, you're seeing a mini computer out, putting things like the time of day, whether it's AM or PM Ah, what channel it is, what the artist is, what the song title is so basic things like that, it's printing those to the screen. If you're looking at your laptop, your desk right now, desktop. Right now, things are being printed onto that screen that you're looking at right now. If you're on your phone, things are being printed to your screen. Your phone. If you print something out onto a piece of paper with your laser or your inkjet printer, it's being printed that way. Let's say you have a three D printer and you're printing a three D object. That's another way of printing something. Or maybe it's just you and your writing something with a pen and pencil, and you're printing it onto a blank piece of paper. The idea is your you're taking something that is ephemeral. That's just an idea or just data. And you're putting it into some sort of physical format, where as a person you can sense that that's happening either with your eyes or with your years. Maybe you're hearing things to the speaker or you're feeling things may be feeling to rumble on a video game controller, so those are all different ways of out putting data. I remember hearing a hack that this one guy did where he was hacking this video game, and he noticed that it's a team game. So half the people are in your team, other half around somebody on the other team, and so you could see on your radar display everyone who was on your team. But you couldn't see people that were on the opposite team. And so what would happen is, uh, you could you didn't have them on your radar, but you could hear them. So if you had a surround sound system, you could hear an enemy coming from behind you that would you could hear those footsteps. So what this hacker figured out how to do is he took those footsteps and he ran some simple coating on it so that he could convert those footsteps into a location on his radar screen . So now, on his radar, he wasn't just figuring out where his teammates were, but where the enemies were also. And the way you did that is he went down into the packets that we're because it's ah, it's a game played over the Internet, so those pieces of information had toe. There had to be information or data somewhere that showed whether footsteps should be sent . So if those the only way toe for the program or the game to know whether footstep should be played in the rear part of the surround sound system is if there's some sort of data that tells the game where the person is so that you know whether it should be played or not. So he was able to go into the data, find that data and then turn that into a radar screen, and that gave him a huge advantage within the game. So that's a way of not knowing where the data is originally. But no having a signal that that data must exist because it's coming out as audio once you consents that that that data must exist because there's some There's something in the real world that signaling it. Then you can start to go look at the data structures inside the computer and figure out where does that data actually exist? So sending things to speakers is another thing. Another way that Data's output is just saving it toe a file. So when you're done writing up that report, you goto file save and you save that word documents somewhere. Maybe you save it is the doc maybe save it as a pdf. But ultimately you're saving it to a file another way, as you can store something in short term memory. The problem with that is, if you stored in short term memory than when the computer turns off, it's going to be gone. So that's something that can be useful if you're just temporarily working on something and then you can get rid of it later, or it's gonna immediately be transformed into something else so you don't have to store it . It's like if you're if you're taking that bread and you're gonna turn it into a sandwich and you're temporarily gonna just brown it inside a toast, reverend or brown it by sauteing it in a frying pan, then that's just a temporary storage. You don't have to put that in a cabinet and then take it back out later. Wouldn't make sense to do that. You just leave it on that table where you were doing all that work, or maybe your cutting board. You just leave it there for a minute or two, and then you play. Put it on the plate and then you send that played out, it wouldn't make sense. Toe, take that, uh, toast of the toaster oven. Put it in a cabinet and then a minute a minute later, take it back out of a cabinet and then, uh, put it on the plate. So that's the difference between short term and long term memory. The short term is like that cutting board or that table where you're doing all your work. The long term storage is like the cabinets, the fridge, the freezer where you take something where you're not going to need it again for quite a while. And so there's a limited amount of things that you can store in that short term storage on that cutting board of that island. In terms of long term storage, you have a lot more possibilities. You have a lot more storage space, but it takes longer to get access to it. So you're making this trade off between How often do I have that? How often do I need access to it? Or, uh, how quickly do I need to get access to it? Because that's another way of thinking about things. Well, do you put it in the back of the Cabinet because you very rarely use it. Where do you put out the front of the cabinet that's at eye level so immediately when you see it, When you open that door, you can immediately grab it. Same sort of thing if you go into a grocery store. Big companies are spending lots of money and lots of marketing dollars to make sure that their products are at eye level. Because if your product is at the bottom shelf and people have to bend down to get it, they're not going to see it as much. They're not gonna want to reach down for it. And when people are making those split second decisions, even little things like that count. So that's an example of the real world in your computer. You have to understand Well, how often my gonna be using this data is it at a final stage or sit at an intermediate stage. And once you start to get this stuff, you're gonna be able to break down common sense everyday problems, problems in your business, problems in your profession, your career or even your personal life. You can break them down to the simple data structures. Uh, any time somebody's speaking to, for example, there out putting data that's in an audio format, they're creating that with their moat with their motors, their muscles. So they have motor control over their lips, their tongue, their mouth, their jaw, and so and also their lungs. So they're able toe, push that air out and at the same time move around their tongue and their lips in order to make sounds with the air. And then your your drum takes those, uh, that that air that's coming at different frequencies and it turns it into a signal. So your brain is already doing these things to convert things. And part of programming is not just taking something as it is, but converting it. So ultimately everything is being turns into zeros and ones. And at a at with a programming language, you're not going to be doing that unless you're using machine code, which almost nobody does. You're gonna be loose using a programming language that allows you to operate at a much higher level. But you just have to understand that at a deep level, everything is going on in this way. So if you use something like Siri or Dragon, naturally speaking, that's converting your speech into text in the computer. There's a lot of processing that they've done. Those companies have spent decades figuring out how to people speak. How do they make sounds with their mouth? What are the differences between different types of sounds? And then how do we turn that into information into the computer so that there's a very low error rate? These are the kind of problems that you might be dealing with with programming. Or you might be just taking that data that somebody, uh, inputs with Siri. And then you might do a Google search on it. So it's different levels of of programming. Sometimes you have to turn that raw data information into information. Or maybe you can get somebody else's pieces software to do that for you and then just use the output of that piece of software. So have Siri turn that voice into text, and then you can operate on that text. You don't have to convert it from audio to text yourself, so that's the way we want you to start thinking. Start thinking and steps in what form of output or input are you looking for? Somebody who's blind needs to have output from their computer. That's either tactile touch or audio, because they're not going to be able to see the screen. So based on what you're building, you're gonna be having different ideas of what input and output is and the final thing If you're thing about okay, Does this still all make sense to me? Just look at your mobile phone. It's got a vibrator on it. It's got a speaker on it. It's got a screen on it. So it's got a bunch of different ways of out putting information when it when a phone is ringing and you've got on vibrate mode, then that means instead of going through the speaker to create a sound, it's gonna vibrate and make a motion like that. So those are all different types of data, and then they're connected to motors. They're connected to different things that can output information. And that's how you want to start thinking so that you can start thinking more like a programmer 13. How Do Computers Think About Data?: in this video, you're gonna learn how computers think about data, and this is stuff that we've already kind of touched on. But I want to collect it all in one place we already kind of talked about. You can have a character, which is a single letter of the alphabet, or you can have a word which would be a string. The way you probably think about data is in terms of letters and numbers and then maybe pictures and audios and then feeling something that would happen, like your phone vibrating. So those letters are going to either be a single character, which is pretty rare. Any modern language, they're not gonna really talk about characters. It's gonna be a string, and a string can be numbers it can. A string can be a combination of numbers and letters. It really doesn't matter. It's just like your first names, a string in your last names of string. So if you want to connect those together and let's say have have the website when somebody logs in, say welcome Timothy Kenny. So if we wanted to say that our first string would be welcome and then a space and then our second string would be would go into the database and ask for Okay, what is the first name? It would come back with Timothy. Then it we would want to put in another space. And then we would ask the database. What's the users last name Kenny. Then we would maybe put a period after that. So what do we have there? We have welcome with a space at the end. Then we have first name that string to that we have last name that string three and then we have a period that string for So, yes, a string can be a single Ah, symbol. So as all this special symbols on your keyboard and the other ones that even aren't on your keyboard, those are all, Uh, those are all special, considered special symbols. And sometimes they have specific meanings. Sometimes even little words like if and then those have special meaning. So when you write those, those actually do something with the code, they mean something specific. So you you can't use those, for example, as a variable, and we're not going to talk about that now, But variables just like a container that you can hold stuff in. So when you when somebody says, Well, we're gonna make that a variable What they're really saying is it's like a bowl. What's like a Ziploc bag? It's like a It's like, uh, just a Tupperware container that you can store something in and then use that later. So it's like putting a label on that container so that you know what, what should be put in it and then all the other things that shouldn't be put it or how it should be used. So getting back to data, what types of data are programs using? So one type is string, so just combining things so you could think of it kind of like addition, you're just kind of putting one thing next to the next thing next to the next thing. There's also numerical operations, so one plus one that's going to equal to so the program's gonna be able to calculate that and tell you that it equals two. But what if we want to just put one and then take a string that's one and then put it next to another string that's also one. For example, let's say you want to create a date. What say the date is may 2015 and it's the first day of the month. So we want to put that together as a date. And you you do Okay, so the years 2015 and then you do plus 05 And then you do plus O one. And then what you get out is 2015 plus five plus one. So that's 24,021. So that's not what you wanted. You wanted those numbers just to show up next to each other. And the way you get that tow happen is you put those in quotes. That's how it works in most languages is either single or double quotes. And once you put those numbers and quotes now they're no longer processed at for new miracle operations. They're just going to be processed as any other string. They're basically now you're pretending that instead of numbers, they're just other. They're part of the alphabet. They're no longer going to be considered numbers when they have quotes around them. So if you did beginning quote 2015 end quote, then you did begin. Quote 05 end quote. And then you did begin Quote 01 end quote. And then you said, Put those next to each other. Then you would get your final date and maybe you puts a forward slash in between it, and that would come up with your final date. So if you want numbers to show up next to each other, you can't just do plus, uh, this number, plus that number plus that number, because it's going to be computed numerically, and then you're gonna get some sort of result. That's how letters and numbers and string works. It's pretty simple. The next thing is logic, So logic is true or false. So what say you have a fire alarm in your kitchen? And if you you turn up the heat to I and you start burning whatever solids or liquids air inside your pan, for example, and it starts turning black and smoke starts coming up, then you're that fire alarm is going toe set off an alarm just based off that smoke. Maybe there isn't actually a fire, but it's going to trip that alarm, and it's going to start making a sound. So there's a little tiny computer within that fire alarm. That's telling it to turn on based on whether reads true or false for smoke. So it's actually not a fire alarm as much as it's a smoke alarm. But we kind of think of them is the same thing because there's that cause effect relationship. Remember we talked about that an earlier video, if then relationships. True false relationships. If something is true, then do some this. If something's false, then do this. So if the customer puts in an order for I want my steak medium rare, then we say, if it's rare, if rare equals true, then we're going to continue to cook. But if medium rare equals true, then we're going to stop cooking. If medium rare is is true, but the person wants it as medium that we're gonna keep on going past Rare is true. Past medium rare is true until we hit Medium is true, so all those other ones afterwards obviously are gonna read false. But the computer doesn't go through that, so it's like giving somebody a set of instructions. You want them to dig a hole that's six feet deep, so when it's one foot deep, then it's true for one foot deep, but it's false for two for three, for four, for five for six feet deep. So that program, that person's going to continue digging until that hole is six feet deep and you can install you're well or whatever else that you're gonna put in that hole. So that's basically when you're giving us a person instructions or you're giving a computer instructions, you could say Shine the boots until you can see yourself in the reflection. That's an example of Do a task, a repetitive task. Loop through that task until a certain state until something is true. So until you can, until seeing yourself in the reflection of the toe of the boot is true content. Continue looping through this task. Continue mixing those ingredients until there's a consistent batter, then stop. So if consistent batter equals true, then stop. If it's false, then continue to go. So loops are a very basic way that programming languages and programming general works, and you use logic to tell the program when to stop running that loop. So when you tell a person to do something, something that's a repetitive task, you tell them. Keep doing this until you get some sort of signal that tells you you know when to stop. If you if you don't know when to stop, then you're always going to keep on going. So you have to have some sort of signal to know when to stop doing something. The last thing is collections, so the way to think about collections is just very simplified versions of a spreadsheet. So, for example, list a list is just, ah, single column in a spreadsheet. And then you just have something in the first row, something in the second row, something in the third row. That's all a list is. So it's kind of a pared down version of a full blown array or a full blown spreadsheet. And array is basically the same thing is a spreadsheet often times when you're creating a list where you're creating a to pull, which is just a list that can't be changed, that you can't get rid of something, and then putting put something else in its place is a permanent list, Uh, but something that, like a list, something like an array, all that is usually in programming is just something you put the first thing in the list. The 1st 1st name, for example, Timothy. Then you put a comma and then you put the next first name, Ashley. Then you put the next first name Monique. And then that's your list of three names. And that's all that all there is to it. So you could put that in a spreadsheet grown one column that says First name at the top. And then it says Timothy and then Ashley and then Monique. So those air three names and that's all the list is so information. When it's stored in a computer, it's gonna be stored in a few different formats. Sure, it could be a number where you can add subtract, multiply divide. Could be a letter. Could be a collection of letters, a string where you can combine things together. It could be numbers pretending to be letters where you just put him together as if they were strings. It could be special operators, special symbols. That means something like the plus sign or the minus. Sign those air gonna work on data that's going to tell the information the computer, how toe combine or transform that the data that you're giving them so those special symbols usually aren't data themselves, but sometimes they are. So if you're creating a quote website, you want the quotes to actually show up on the screen, even though usually quotes are a special operator. So there's things that you can do to make a special operator special symbol actually show up on the screen and their specific ways to do that. Other types are logic, so things like true and false. If and then or if this happens, then do this or else do this. So that's a very basic decision tree with two options. But there could be more than two options, so you can cook that steak rare, medium, rare, medium, medium, well done or well done. So there's five different options in that decision tree. It's all very simple. It's all comes down. Toe spreadsheets lists basic things like true or false numbers, letters, symbols, collections of letters and numbers, and symbols that make up strings so that could string could be a password. That string could be your first name with a space and then your last name. There's all these different things. It's just we wanna have more specific labels that we can talk about things and understand how the program is gonna understand and interpret those things. So the way I want you to use everything that you've just learned of this video is start looking at documents in a different way. Start looking at the applications and spreadsheets and PowerPoint slides and websites and app and mobile APS that use start looking at them in terms of Well, what kind of data is this? What kind of data is that? If you're giving instructions to somebody later today, or maybe your boss is going to give you instructions later today or you get an email on somebody's telling you to do something the banks telling you to do this or somebody's asking you for something. Are there some true or false conditions in there? Just open up some document and then press control F or option F and search for something search for their word. If and if you find, uh, uh, at least one if then you're gonna find some sort of conditional statement, so just pay attention, even to conversation. When people are just talking to each other like oh, if they win the game, I'm going to be so pissed from would be so happy if they win the game tonight does our little if then statements that are just embedded in normal everyday conversation. So just start paying attention to that stuff so you can get your brain to start thinking more in this way because it's going to make it a lot easier to go from a concept and idea for a program and turn it into something riel. Ah, lot quicker. 14. The Front and Back of the Restaurant: in this section, we're gonna be talking more about functions and functions are what we used to transform ingredients, so functions an example of a function would be. What say you want to cook a steak will be using this example more later. You have a certain set of steps that you use to do that. So maybe you put salt and pepper on a first. Then you heat up the grill or you heat up a pan, and then you put it in there and then after 234 minutes, whatever. Then you flip it over, and then maybe afterwards you put in the oven toe, cook the inside more, but you have a certain process and then maybe arrested afterwards. So you have a certain process for doing that, and any recipe is going to have that as part of its pattern. So at the top you'll usually have the ingredients, and then underneath that you'll have a numbered list, which tells you what are the instructions to do and in what order. And sometimes you also have a picture of the final result on the side of the recipe. So the two things we're going to talk about in this video specifically, are the two parts of coding, and these relate to the two parts of cooking or the two parts of a restaurant. You have the front end, and then you have the back end. The front is is the part that interacts with people that speaks people's language. So let's say you're creating a website. The design, the visual design of that websites very important because people are gonna be interacting with it. So it has to have menus. It has to have places where people can put any information buttons people can quick on text . People can read, but the computer doesn't really care about that. The computers job is to create those things so that then they get pushed to the front end. So it's the same as a restaurant in the back of the restaurant. That's where the kitchen is. That's where things are being made. That's where the raw ingredients are stored in the fridge, the cabinets, the freezer and they're being transformed into the meals. So what happens when somebody goes into a restaurant? Is they meet the host of the hostess. They get escorted to their seat and then a waiter or waitress comes and gets their order. Then that's all front end stuff. Once the order is taken, then that order is taken back to the back of the restaurant, and that's where the cook, where the chef gets a hold of that order. Once that cooker, that chef gets a hold of that order, then they start producing that meal. So then they start taking the wrong ingredients in transforming that. So if you think about it, the person is going the customer's going through a menu and then ordering something, and that order is basically telling the chef what to do. But that order doesn't actually tell the chef what to do. Um, it's a ghosts through the medium of the waiter or the waitress. So the ideas you want the Custer customer to be able to interact with the back end, But you don't want them to necessarily ever have to see the back end so usually never see the chef at a restaurant, even though they're the one that's preparing your food. So the idea is just because you want to interact with somebody and have something happen doesn't mean you have to do it directly. So in a restaurant, there's that intermediary of the waiter or the waitress. That's the difference between the front end and the back end. So when you type something into a website like, let's say you type something into Google and then you press enter or you press the search button that's submitting your order to Google that goes into the Google back end. They go through all their servers. They do a bunch of transformations, a bunch of searching, a bunch of looking up so that then they can deliver back to you 0.1 seconds later. The results. Your search results. So that's the same. It's the same sort of thing in a restaurant and in a piece of programming. And the same sort of thing is also happening, whether it's a Web application or it's a mobile application or it's something on your desktop. So they're all working in similar ways. You've got some sort of graphical user interface, or even a command line that the human interacts with the computer with, but they need to speak in the language of the chef of the cook. Imagine you're going to a restaurant where the chef doesn't speak English, they speak another language. So the waiter or the waitress has to convert your order into something that that cook, understand. So maybe it's written down in a foreign language or a different language besides English. Maybe it's just written down as a number. Sometimes you'll go to a restaurant and every single meal, have a number attached to it. So there can. There can be a separate tiny language just in that restaurant that's used to describe things. Maybe go to a diner and they have, uh, you'll notice any any bill that you get like at a diner, where it's still written by hand and you get it back, is it's there's gonna be a shorthand. There's gonna be abbreviations, and that's basically ah, lot of what computer programming is. This is not just, uh, some obscure code that somebody put together, but it also abbreviate things, so makes it a lot easier to express common ideas. The last thing about restaurant design is managing managers. So you're managing this whole restaurant, and you can think of, uh, the entire restaurant as a single piece of software or single programs, so there's multiple different things going on in that restaurant. There's a lot of different people doing different things. You're not the person who is managing those individuals because that would make you part of that program. Inside that program, you're removed from that program, you build it and then you leave it and it runs on its own. So that's the idea. It can interact with customers, and you don't need to be there. That's another key aspect of understanding business and entrepreneurship. There's some people who build a business, but they're always inside the business. They're go. They're still going to work every day. And in some cases they've just built a job for themselves. Somebody who's a true entrepreneur or true business builder is somebody who will build a business so that they can completely replace themselves, extract themselves from the business, and the only thing they're doing is sometimes making high level decisions. But oftentimes they're just collecting money from that business, and that makes it so that they can sell that business very easily to somebody else because they're not a key ingredient or key piece of that. They're not the linchpin in that business, where if they're removed it will no longer work properly. So it's the same kind of thing with a program, your programming, something building something so that so that eventually you never have to look at it again and somebody else can use that program, and without any of your intervention, it's gonna work properly. 15. The Waiter and Waitress as Front End: Now let's talk about the front and some more. So the waiters and waitresses, they're the ones doing the front end work. They're the ones interacting with the customers and doing what's called emotional work. And this is something that ah was just created as an idea or as a buzzword, maybe 10 2030 40 years ago. And it's the idea that more and more of our economy is turning into a service economy. So people talking to other people taking care of other people and that that involves emotional work. So let's say you're a customer representative for some company, and you handle people calling in with complaints. So you all day you have people yelling at you or trying to suppress their anger, but still obviously upset. And you have to do this emotional work all day of taking care of them, making them feel like everything's gonna be okay. Maybe you're a doctor in a hospital or a nurse in a hospital or a surgeon, and you have tow tell somebody you have to give people bad news, and then you have to kind of try to soften the blow or you have toe. Uh, you have to make them feel safe right before a surgery that's about to happen. So you have toe, make sure that they don't get too scared and maybe calm them down. So those air all basic examples of emotional work, and that's something that happens on the front end the back end. The way you could think about that is the patient is under under, uh, anesthesia. So they're completely unconscious. And us, a surgeon who's maybe never actually interacted with that, that patient or that customer, the hospital. They can come in, do their job, and then so the person back up and then go off and do something else, or go do another surgery and never interacted that customers. So there's certain people that are on the front end. There's certain people that are on the back end, and they have different functions. Right now, we're talking about the front end, and front end is has different, puts different levels of performance on different importance on different things. So, for example, waiter waitress, it's very important how they look OK in the kitchen. It doesn't matter as much how you look, so if you think about well, who are the most attractive people in the restaurant. It's a higher likelihood that it's somebody who's a waiter waitress because part of their pay is determined non tips. And those part of what determines somebody's tip tips is how attractive they are, both physically and also their personality. Those things don't matter as much in the back of the restaurant personality, working as part of a team that does matter. But physical attractiveness is not gonna determine your pay when you're in the back of the restaurant, so there's differences also, what's important. So on the back, you'll notice with back end tools. They're usually not as attractive. They're not meant for people that are beginners with programming. They're meant for people that are more serious coders or programmers and don't need a great user interface. Um, so what? G Why we're going to start talking about, uh, Web coding because Web coding is probably the most obvious example of where there's very ornate websites, very decorative websites and what's used to build those is HTML and CSS. And what's the difference? HTML is hypertext markup language. What it means, and it's not a programming language. It's a markup. Languages a document language. So there's a language that's used to describe how to lay out text, how toe layout information, how to lay out pictures where toe in bed, a video are embedded button and then there CSS. And that's cascading style sheets. And CSS is basically, you could think about. The HTML is the naked body and then CSS as the uh, as the clothing that you put on top of the naked body. So CSS is what decorates the page. You can use it to adjust colors. You can use it toe, make things look differently. Then there's also Java script, and JavaScript is what gives that that body with clothing on a personality. So what JavaScript allows you to do is create interaction where you can click something on the page and without the page refreshing. For example, it can change things, and JavaScript just gives you a lot more control over what you can do. But it also brings with that, uh, some inherent vulnerabilities, which is that somebody can do things with your computer. Hack your computer basically do things with Java script that you wouldn't want them to do, and it's hard to know what's going on unless you know the job script and you can see what is operating on what it's doing. Other things to think about. What g y. Our platforms that you can use to create a website like WordPress and WordPress has themes that come with it. And so a theme is where you can, uh, pay or get for free somebody else's method of designing a WordPress site. WordPress itself is what's called a content management system, and what that means is that it manages a bunch different. Blawg posts pages on your website, and then there's themes, and what themes do is they go in and they take that rob log post, which is just text and a title, and it formats it in the way that you want so it can make the background a different color . It can make the shapes a different color. It can make the menu look completely different so you can use different themes, and it's going to completely change how your website looks, but ultimately the back end of WordPress. You just log into it and it's like it's a bunch of word documents, and each word document is a different page or different post on your blawg, so the back end everything looks the same on the front end. You can change things toe look very different. So the back end is kind of like the internal workings of things. And the front end is that surface level stuff that you can change inside every human being were basically the same. We have all the same parts outside. We can look very different. We can wear different clothes, so that's kind of the difference between front and back and and graphical. User interface is that visual interface that we see when we interact with a computer when we interact with the Web site or something on APP on her mobile phone. So last thing here is tool kits, and what tool kits allow you to do is add functionality to something, and it's usually specifically designed to add a certain type of functionality. So you might have a tool kit to a programming language or a program that you're building that adds the functionality of adding a graphical user interface. So if you don't have a graphical user interface, the person using your program is gonna have to type things into a command line. So for people that are power users with computers, people that have programmers, that's not a huge problem. But for a normal person who doesn't know programming, they're gonna need a graphical user interface. And for most programming languages, that's not a standard feature of that programming language. It's something that you have to add to that language. So you're gonna look for tool kits or libraries that you can use toe. Add that graphical user interface to your program. 16. The Chef and Cooks as Back End: in this video, we're gonna talk about chefs and cooks and the other people working in the back end of a restaurant. We're gonna be going over. How does the back end of a restaurant work? How does the back end of a computer program work? So behind the counter, the the idea of the counter is there's a hole in the wall between the kitchen and where the servers get the Finnish plates, they pick up the plates and then they bring those plates out to the diners. So what happens behind the counter? And in this slide right here, I'm going to go over some different out basic elements of what goes on behind the scenes in a piece of software, and then how that relates to what goes on behind the scenes in a kitchen or in a restaurant . So the most obvious thing is, you're combining raw ingredients. You're transforming the them and the people, the customers, the diners. They're not seeing that that's happening behind the scenes. So when you're transforming things like, let's say you're just doing a very simple, uh, mathematical formula and we're gonna talk about this later. In a later video give you some examples of this, but just combining two or three things doing a little bit of multiplication addition Division that's gonna happen behind the scenes. You're gonna type that into your little handheld calculator, and then it's going to give you the results. So if you're just tallying up a few things, you're gonna type each one individually, then hit the plus sign. And when you're done with adding up, all things you're gonna press equals and then you get the result. But the calculator doesn't show you each intermediary step. It just goes from initial starting point to final results. That's all. That stuff going on in the background is what's happening in the back end, the software and that calculator. Obviously, it's got hardware and software, so that calculator itself isn't the program. The calculator is a mini computer that's running a program on it, separating meal prep into different stages. So you may hear things people talking about things like object oriented programming or procedural programming in a good way to think about doing this. Is that a certain point when you're kind of starting out with a small restaurant, you have one chef or one cook, and they're doing all the cooking. So it's one person doing all the cooking, but eventually to scale things toe have a large kitchen. You have to have different people doing different things, and then you have toe, uh, have them all working together as part of one unit. So the idea of object oriented programming is that we can have one head chef, and then we can have a bunch of of of cooks. Or you could have two chefs. You could have a chef that creates the meals, and then you could have a dessert chef where you could have a pastry chef where they specialize in cooking a specific type of thing and and they're at a level of artistry in that area. And then you have cooks that doom or basic functions, and maybe they never went to culinary school or they're just beginning and there not a skilled. So you have different people within that kitchen doing different tasks. So maybe one person is just at the stove, and all they do is there cooking different things. Maybe there's somebody else who create salads, so all they do is they chop up different vegetables and then create a salad out of it. So there's different people creating different parts of the meal. Maybe your menu has, ah, bunch of entrees and then a bunch of appetizers, maybe up one person, just creating sauces. Maybe have one person just on desserts. Maybe have one person just on drinks called the bartender. So you have different people in your restaurant doing different functions. And that's the basic idea of object oriented is that if you want to build a really large application, it makes a lot simp simpler. Two separate things into separate objects or separate people that each do something. Another part of behind the scenes is accessing data. So before we talked about how data is stored, the different types of data, how you would input data into a computer, how you get data out, and that can be through a screen where you see it, that could be through, Ah, Speaker where you hear it? It could be through a vibrator on your phone that vibrates when somebody calls you. So there's different ways of it could even, uh, be a smell or a taste. Most most computers don't do that. Um, But there are certain situations where that happens, so you can input or export or output data through any of the senses that people have. Those are that's the way that we interact with Computers is through our senses, so afraid you can think about a database as like a cabinet or a fridge or a freezer. So if you're in a restaurant, you might go into a walking fridge, and you might have all access to all these different fruits and vegetables and meats and cheeses and milks and other things. So when you're going in and you're getting those materials that's going into the database databases usually gonna be stored on a hard drive or even, ah, bunch of hard drives linked together so that they can go really, really, really fast. Imagine that you had, ah, walk just a fridge with the door on it like a regular home fridge, as opposed to a walk in fridge, as opposed to a fridge where multiple people could be going in and out at the same time. So if you have a really big restaurant, you're going to need to have more people going in and out, and so you need to have larger doors just so that you can handle that. Your enough to have amore ingredients so that you're not gonna always be running out of ingredients. So a larger date for a larger programmer, larger Web service you're gonna have to have a larger database in a larger place to store data and also your enough toe have more thorough put. So what that means is that it's like a one lane road versus a four lane or an eight lane highway. People need to be getting in and out more so Ah, home. Ah, home kitchen with a home fridge is not gonna have the same amount of people going in and out as a walk in fridge that has two doors or just has a bunch of plastic strips hanging down from the top. So your databases, like we're going in to get those raw ingredients, and it may also be where you store things. So a lot of people, when they're cooking at home, they cook everything at once. But one of the main differences between out restaurant works and how people work at home usually is a restaurant will do things in batches, so they may create that cheesecake the day before. And then they might put it in the fridge. And then they may serve it the next day. Or they may only make cheesecake once or twice a week, where they might may only get fish delivered once a week. So there's, ah, they're doing things in batches, and then they're storing it for later. So a database can also store things that are in intermediate or even a final stage, and then serve it later on, so you don't have to create something right when it's ordered. You can also create things ahead of time. So if you know you sell 20 pieces of cheesecake per day, then you can create enough cheesecake in advance toe last you an entire week and then keep it in the fridge. So there's different things you can do like that. You could create sauces in advance. You could freeze things in advance. So there's a lot of things you can do, and all of that at the end of the day represents how things work with a database. So you've got your various objects or various people in the kitchen going in accessing the database to get different pieces of information. And there's two types of storage on a computer. We talked about this briefly before someone gonna bring it up. So you remember it is we were just talking about fridges, cabinets, freezers, that's where your story or raw ingredients. But there actually is another place where your story ingredients and that's on the table, where actually working. So each chef for each cook is gonna have a workstation. And thats they have control over that station. That's where they get toe, lay out all their ingredients. So the person that's at the salad station, they're gonna have their lettuce here. They're spinach here, they're tomato here, they're cucumber here. Their care. It's here, They're radishes here. They're gonna have all their different ingredients there, and they're gonna have that laid out. But they only have room for a small amount of each of those ingredients. So that's a temporary work area. And then at the end of the day that's cleared up. That's cleaned, and it's completely fresh for the next day. So the same sort of thing with the temporary memory in your computer, like your random access memory ran. If if you think about your computer, you may have 500 gigabytes or 1000 gigabytes, which equals one terabyte of storage space on your hard drive. But your memory cards, your random access memory or your ram. You may only have 1248 16 gigabytes of space. So, uh, that's the difference. Your plate. You have a smaller amount, but you can access things very quickly at your workstation. If it's something that's in the fridge or it's in a Cabinet or the freezer, it's gonna take a little bit longer to get access to that in the same way it takes a little bit longer to get access to a file on your hard drive to get it into Ram. Sometimes if you open a document like, let's say you're opening a really big spreadsheet, you're opening a photo shop document or a video project that you saved as a file. That program's going to show you a little status bar where it might take five or 10 or 20 seconds or even a minute, just toe open that file. And what's happening is it's it's retrieving that file from the hard drive and then it's loading it into the random access memory into the memory of your computer. So make sure you distinguish between memory, which is usually used for short term memory and storage, or hard drive space, which is long term memory. Now we're gonna talk about some common terms I want you to understand, because you're going to see these over and over and over again. And these air points of confusion, where some people will go through weeks and weeks of a programming class and still not really be sure what these things mean. So variables the first example here. You say she cut, you'll see it, says she cut her finger versus she cut herself. When you see she cut herself, the only person that could have cut herself is the person who is she. So we could say Chef Alexa cut herself so we could say Alexa cut her finger. Or Alexa cut herself. When we say Alexa cut herself, the only person she could have cut was herself. Whereas if we say Alexa cut her finger, she could have cut Alexis finger. Or she could have cut Karen's finger. So there's a difference there, and her and she are examples of variables inside a natural language. So programming languages fall into a category called formal languages where they're created toe be very exacting. Natural language is something that's designed to have some sort of ambiguity, and sometimes that ambiguity is useful. So sometimes, uh, we want ambiguity in our language so that we don't have to be exact, whereas in a computer programming language, we usually don't want any ambiguity because that's going to result in confusion and the, uh, you're not gonna be able to get the computer to do exactly what you wanted to do. But the main point of variables is to label things to put a name tag on an object. So remember before we talked about objects as object oriented programming, and you have a bunch of different chefs and cooks in the kitchen, and they're each considered an object versus a no older style of programming. Where was on a smaller scale? And it's like having a single Kocoras single chef in the kitchen, and they're doing every single step themselves. So separating things out into objects is how you build a larger business, a larger organization, a larger team uh, we can go back to the football metaphor. Each of those different players is a different object. There each. They each have a different position. You have the quarterback, the halfback, the tight end, the center, the guards. You have all those different positions tackles. So, uh, the next thing is classes, the kinds of people in your kitchen. Um, so what would be an example of this from the football metaphor were, well, variable would be the name that's on the back of the jersey, the person's last name. The class would be what their position is. So quarterback, um, tight end, center tackle, guard half back, wide receiver. All those different positions. Kicker, punter and then all the defense of ones. I don't want to forget the defense linebackers, um, defensive tackles, cornerback's safety's. You have all these different positions and those air classes so you can have a team made up of a bunch of different classes. But if you want to have an individual talk about an individual person, you have to talk about a variable. So ah person, when they're born, they don't have a name their assigned a name. So when you want to create an object. If you want to create a person, then you have to eventually give them a name so that you can refer to them. They can still exist without a name, but it's It's like it's really hard to interacts with somebody if they don't have a name, because then how do you refer to them? You have to use some sort of description so that people, other people know that you're talking about a certain person. So that's why we use a variable, that we have a name that we can use to refer to an object later on. The final thing that we'll talk about his objects because we said before, Well, objects are people in the kitchen, but it turns out that objects are actually more general than that. So when object is basically anything that exists in that kitchen, that's a physical entity. So anything that's a physical entity is an object, and that includes the tools and the ingredients. So the raw ingredients in your programming, um, in your program, your application are in our data and information, so objects can be really world things in a piece of software. It's gonna be information that represents real world things, so objects can actually be ideas. Also, um, and those ideas are going to represent things that exist in the physical world. And sometimes if you're getting into very abstract things, there's less of a connection to the real world. But the basic metaphor to use is that anything that you can touch that you can pick up, that you can hold in a kitchen that's going to be an object. And so the different pieces of data, the different, uh, objects that are running those and operating and transforming those pieces of data those air all objects. So a way to think about it is as part of a team. The team is, Ah, Hole is creating the meals that the waiters and waitresses bring to the customers. But at an individual level, each one of those cooks and chefs is an object, and they're doing things to transform certain raw ingredients into an intermediate or final form. Then the all those things get put together as a meal that gets delivered within each of those individual people or objects. They're working on smaller objects, the individual raw ingredients, and they're using tools to do that. So the combination, the tools that they're using to transform those ingredients and the ingredients themselves as well as the person those are the three things that are the objects within that metaphor . So it's very important to understand the classes the general term that we use. So you're a chef, you're a cook, You're a bus, sir. And these general terms are important to know you can see the change in general terms that's used in natural language. For example, between a secretary and a personal assistant, you can see the difference between, uh, a stewardess and a flight attendant or a steward and a stewardess versus a flight attendant . So there's general terms, and sometimes they have connotations. And as we become a society where men and women are treated equally, we've gotten rid of along a lot of the terminology that makes the distinction where certain roles where they used to only be fulfilled by men. They had a strong male connotation, or or certain roles were per firm, performed mostly by women, so they had a strong female connotation. So we changed the name to a new name to get rid of those old connotations to make it more acceptable for both a male or a female to fulfill that role. So the same sort of idea is with classes. Is that you? Can you have a different name for a class and that's ultimately going to be used for objects? And the individual name of those objects is what the variables use force. You can refer to that person. So you have Peter. You have care and you have Alexa. Those of the variables you have chef, cook bus or those of the classes objects is the actual person. It's the actual physical body that we're talking about and we're referring to. 17. Functions and Restaurant Basics: in this video, we're gonna go over functions and restaurant basics. So what's actually going on in the restaurant? And how does that relate to a programming function? A basic programming function. So the 1st 1 is a tip. So how do you calculate a tip while you take the the final order? And then you add what say 10% 15% or 20%. So how do you do that? Well, you have to first get 10% of the final bill. So what say the final bill is $50? So you've got to figure out well, I want to leave a 20% tip for that. So how do you do that? Well, you have to multiply to get 20%. So 20% is 20 out of 100 so 20 out of 100 is 0.2. So you multiply by 0.2 in order to get that extra 20%. So 20% of $50 is going to be $10 and a nisi shortcut you can do is to first get 10% which is $5 out of 50 and then you just multiply that by two to get $10. Uh, if you want to get more complicated, let's say you wanted to do 18%. So the way you do, 18% is first to get 20%. So you get 10% which is $5.20 percent, which is $10. And then you figure out, Well, what's 1%? 1% is 50 cents. So that means that 2% is a dollar. So you've got a dollar, which is 2% and then you've got $10 which is 20%. So you you take that $1 out of the $10 you have $9 that's 18% of $50. You could also multiply. Okay, Wolf, the bill was double that. If it was $100 thin, the tip would be $18 obviously 18%. So that's how you calculate something like 18% 18% tip. So that's something that a programming language conduce you're just gonna put in those basic things you're going to say, uh, you'll have the person enter, for example, what the final total of the bill is, and then what percentage you want them to multiply by and then you add that together. So if you wanted to leave an 18% tip, you would take the final bill total you multiply it by 0.18 which is 18% and then you get a final result. And then you'd add that to the full bill so it would be a total of bill multiplied by 0.18 in parentheses that would get you your $9. And then you add that $9 to the total so you're totaled with the tip would be $59. Another thing. Cooking fries. So this is an example of ah, true false. This is an example of you. Put the fries into the oven, or you put them into the frying that into the oil, and then once they turn a certain color than you, take them out. So that's an if then loop. If there's if they're golden brown, then take them out. If they're still yellow, then you leave them in. So as long as they're yellow, they they stay in, and then when they're ready, you take him out similar sort of thing with a medium rare steak loop. So the the idea of a loop is that you continue to do something. For example, you continue to have the, uh, the fire turned on in this stove until that's ready. So until it's got the right consistency to it, the right pressure when you poke into it. Or maybe it doesn't blood doesn't come out when you poke it. That's when it's ready. Final thing is the dozen eggs array. So the idea of array we talked about before is like a spreadsheet. And imagine you have a dozen eggs in front of you that are still in in the container. So you've got two rows of six eggs. Maybe you get a container of 18 or 24 X. So now you're gonna have four rows of, and each is gonna have each rose gonna have six eggs in it. So that's an example of an array. You want toe talk about a specific EG in that array of a dozen eggs you have to refer toe what row is it in? And then what column is it in? Some programming languages are gonna are going to start with zero, and then some of them are going to start with one so certain programming languages. You you'd have column 01234 and five others. You would have combs 123456 And you just have to learn based on which programming language you're using, Which kind of language it ISS. But, uh, if you want, let's go back to that first example of it zero through five. If you want to refer to the first egg, that would be zero comma zero. You wanted to refer to this, uh, that same egg in another programming language. It would be one comma one. So the way you refer to a an object or individual piece of data within a database or within a table is you have to give the X and Y coordinates so the X coordinate is going to be. Which calm is it in the y? Coordinate is gonna be which row. It's an up and down. So that's the way you were referred to it X. And then why? So that's how you're going to tell the program which piece of data to get out of that array . And once it knows which piece of data to get out of it, then it can go through and do the same pattern over and over and over against. Have you ever used a spreadsheet? You can do a ah function or formula once in a row, and then you can drag it down for all the rest of the rose and will calculate the answer for all of those. So an example of that is you could have a spreadsheet where you're calculating the tip. So in the first column you give what's the total? What's the final of, uh, the final bill? And then what's the tip percentage? And then what's going to be the final bill, plus tip in the third column so you could calculate what that is for the first, uh, what the abstract formula or algebra is for the first for that first example in the first row and then every row after that, you wouldn't have to do that anymore. You would just drag drag that sell down, and it would fill in all the data for you. So that's where the power of programming comes in. You figure out what the formula is once you figure out, and that formula could be for a typical be a formula for? How do you make Ah, a chocolate chip cookie? It's just a formula. It's a way of taking ingredients, taking data, taking things, transform a certain way and getting a final result. And so you could replace the chocolate chips in a cookie with, ah, white chocolate chips or caramel or some other sort of candy, and it would come out basically the same way, just with that one change so you can add little things that are different. But overall, it's going to be the same structure over and over and over again. So any time you have a same structure, anytime you have a template, uh, you're gonna have an opportunity to use a programming language. I remember when I was part of the National Honor Society. I was working with a guy who was a programmer, and it was one of my first, Um, experience is understanding how programming work worked. And so he had created a program that would create a take a word document that contained the certificate that was given to each person when they graduated with NHS honors. And they would. The program would add the person's name to the certificate so instead of having to go through hundreds of people of individual word documents, copying each one, going into it, putting in the name and then saving it and then printing each one of them individually, he created a program that would would go into a spreadsheet or go into a database, take each person's name and then create a certificate from that, and they would all look identical. They'd all be perfect, so you can create programs that do that sort of thing. So the way you get ideas for programs as you look for repetitive tasks, you look for similar problems that occur over and over again. You look for the deeper structure of what's going on so that you notice the similarities, and that's when you're going to find opportunities to build valuable programs and valuable software. It's those repetitive problems that happened over and over again, or where you have to solve a very similar type of problem over and over and over again. You start to develop a sense for how could this feels repetitive? This is a repetitive task, and then that's an opportunity for you to create something. Ah, lot of the repetitive task that's humans do we figured out ways to replace those with machines. So the first robots, the first robots that we're seeing are robots that can, for example, vacuum the floor. They can go out and mow your lawn, and the way that happens is that we've taken the most repetitive tasks that that are the easiest to automate. And then we've turned those into things that a machine can do task that are more complicated, like building a virtual personal assistant like Siri. Those air still at their beginning stages. And we're learning how to create more, more complicated artificial intelligence and robots based on understanding at deeper levels with less repetitive tests and how to program those as well and also see repetition where maybe we don't normally see repetitions. So people that are doing work in linguistics, for example, they're finding the patterns in the repetition in language so that computers can then understand human language so we can interact with the Siri or Cortana, or some sort of robot or artificial intelligence or chat bought. You may remember back in the A I M. Days, there were these chatbots that you could talk to all of that's based on understanding linguistics. So you can understand, uh, the deeper structure of how people communicate and then turn that into how computers can communicate. 18. Learning Programming Through Imitation: in this section, I'm gonna teach you the basics of programming through imitation. So this is the idea that certain repetitive tasks you don't even know have to know how to code to be able to automate them. So a good example of this is a little program called Tiny Task. And what tiny task does is you press the record button, and then it records everything your mouse in your keyboard do so you can create a little loop, a little program that just you record yourself pressing a few buttons on a website or in a form or on a piece of software, like for example, maybe after flip through things. Or maybe you have to go through a bunch of things and just press a button, wait a certain amount of time, and then press another button, something like that. So something like that comes up. And you maybe, Or maybe you just have to copy and paste information from one place to another place, and you're gonna have to do that over and over again, dozens or hundreds or even thousands of times. So what you can do is you can get a little programming recorder like Tiny Tasked to record you doing that step once, and then you can tell it how many times to play that back over and over and over again. So you can leave this going on like a laptop or second computer or in a virtual machine or virtual computer, and have it going over and over again all day, all night while you're doing something else. So this is an area where in the past you might have had to outsource this to somebody. But over time it's been completely automated. Another, more sophisticated version of this sort of application is I macro, and the great thing about software like I Macro is that it records what you're doing. But it also shows you in a text format what it's actually recording, so it's showing you how it's recording your movements. It's recording on every few milliseconds where your mouse is. It's recording. Every time you click your mouse or right quick your mouse. It's recording any buttons that you press on your keyboard. So instead of just seeing the final result, you also get to see kind of a code that the program of the software is using And so then you can look at that and you could add things yourself. Or you could delete things that are extraneous, so that gives you an idea of you do something and then code is automatically generated. Another interesting example of this is Wolfram Alfa. So just do a Google search for Wolfram Alfa. It's this math website where you can ask it math questions in normal natural human language . And then it converts it into a programming language and also gives you the answer that you're looking for. So that's another example of coding without coding. The last one is auto hot key, and this one does require coding usually, but there are extensions or plug ins that allow you to record something and then set it up as a hot key to do it. So one way that I have this set up on my computer, I don't use auto hot key. I use another. Uh, I used another program that basically works the same way, and I have a mouse, a gaming mouse. I don't do any PC gaming. I used to be into like Xbox gaming, but the reason I got the gaming mouse is because it's if you want a mouse that has a bunch of buttons on it, then you have to get a gaming mouse because that's the only kind of mouse that's made that has, like a bunch of buttons on it. So the mouse that I have has 12 buttons where the thumb rests, it's it's got four across and then three up and down so you can assign each one of these buttons to a different task, and it makes it so. You you don't have to have your fingers on the keyboard, shortcuts for things like copy and paste or cut and paste or, uh, print screen or undo or select all those sorts of any sort of thing that you use over and over again Any sort of repetitive task. You can assign that toe a single button, and then you just click that button, and then whatever that macro is is automatically done so you can set up Ah, hot key. The whole idea of a hockey is you hit that key or that combination of keys, and then you get some more complicated result back by just hitting that one keys. You don't have to do all the individual steps anymore. That's automated. You just click a single button and the thing goes on its own. So this is a great way to get started and get some actual results out of out of a computer . Is you set up? You record yourself doing something, then you play it back or you set up some simple hot keys or you start to find scripts that other people have created. An auto hot key is the most popular, if not one of the most popular hot key or simple automation programs out there. So almost any script you could want any sort of simple automation you could want to do on your computer. Somebody's probably already written a script on how to do that so you can find that script and just install it on your computer and not have to code it yourself. And that's another important aspect of coding. Without coding is you have to know that most basic problems have already been figured out and solved by other people, so you shouldn't be coating that yourself. You should be finding out where somebody else's coded that and then using it, and then you can learn how it works by reading that code and in most introductory programming courses. They don't really care about teaching you that. They care about getting you to learn the basics. And so most of what you're doing is actually coding things that other people have already coded. And professional coders almost never code things at that basic level. It's more about finding things that are already created and then figuring out either had a create something very similar to that and use a lot of same structure, same ideas, or actually, just plug and play with it. And programmers save thousands and thousands and thousands of hours by just knowing where to look, to find things. So it's really important that, you know to do that. And that's part of what we're gonna be talking about in the next section. 19. Owner vs. Investor: in this section, you're gonna learn what to do next. So now you've got a basic understanding of programming. You've got this understanding. If there's raw ingredients and then there's functions, there's transformations that you do on those raw ingredients. Basically, that's what cooking is. You're taking your raw ingredients and you're turning him into some final output. Then that output that meal gets delivered back to the customers they put in an order gets sent back to the code kitchen. And once it's Trent, once those raw ingredients are transformed, it's brought back out to the customer, and they get served them their meal. So, in the same sense, whether you're building a Web app or a mobile app or desktop app, you're gonna have a user interface. And then you're gonna have something that's like the kitchen behind the scenes, the back end. So we've talked about front end and back end coding the different types of raw ingredients , different types of data that you're gonna be working with. Now we're going to talk about Well, how do you design software? How do you think about the process of creating software? How do you start to build your skills and learn on your own and get help from other people . How do you make sure that you're not wasting your time coding something from scratch, where somebody else has already figured out a recipe or they've built it themselves? And all you need to do is plug and play? You shouldn't. If you're the, uh, chef in the kitchen and you're building a stove from scratch out of raw metal, you're making a mistake. Somebody else has already done that. So you need to make sure you know what tools are out there so you can stock your kitchen before you start cooking things up. And that's what this is going to be about. This about taking your programming skills to the next level, and the metaphor we're going to use here is between owner and investor. So we talked about before. The chef is kind of, uh, equivalent to the processor, the CPU that's inside the computer that's actually doing all the work. You're the owner of that restaurant. You're the one who's programming the front end and the back end of that restaurant. You're the one who's setting all of that up, so you're setting up OK, what is the dining room gonna look like? What air? The waiters and waitresses and bartenders. What are they gonna wear? What's gonna be the music? What's gonna be all that front end stuff? That's the design work. Then you go into the back ends, you figure out Well, what are we gonna cook? What's going to the kitchen going to be like, What am I gonna invest in? So you figure out the front end in the back end. But there's another way of thinking about ownership, and that's the level of an investor. So somebody who's putting resource is into it, and maybe having on arms reach or arms length connection to the restaurant. But they're really not involved in the day to day whatsoever. What they're doing is they're going around investing in a lot of different restaurants. So you may think about somebody who's a venture capitalists and their investing hundreds of thousands or millions of dollars. But you're investing your time and your energy and your money, and your resource is on a day to day basis every single day. So the question is not am I in a new investor, but you already are in investor. The question is, how are you investing? The resource is that you have your money, your time, your energy. Your other resource is your relationships, the things that you own, the objects and tools and machines and all of that. How does all of that combine as your resource is? So one way you can think about coding is, uh, being a coder, and there's a difference between a coder and a programmer, and different people have slightly different thoughts on it. But the Comitatus difference is that a coder is somebody who's doing very basic programming , somebody who really isn't that creative. It's somebody who, instead of thinking about the larger picture of, well, how do I want to design this? How should it work? They're more about converting ideas that somebody else already came up with and turning it into code. So translating ideas that somebody already wrote out instructions that somebody already figured out or designed somebody figured out and just converting that into code. So they're kind of a beginner level, and they're doing a lot of repetitive stuff. Ah, programmer is somebody who has gotten to the next level where they understand conceptually what's going on. They're able to plan out the ideas, and then they can hand off those concepts and those ideas of how the operation is supposed to work, how the program is supposed to work, and hand that off to a bunch of other coders and programmers on architect of somebody who takes a larger piece of software or even a suite of several different tools. And they're figuring out how large system works. So Kenna is an architect, also a programmer, Yes, but they're at a higher level. They're at that meta level. They're the highest level. They're dealing with the most complex software challenges where you've got to figure out a lot of systems level details, make sure every piece of that system is working together. So imagine a very large restaurant or maybe dining hall that's designed to feed hundreds or thousands of people all at once or all in a very short amount of time. That's a logistical nightmare. You need to have somebody who's kind of managing that whole orchestra. So that's what the architect is doing, and the last way to think about it is a leader. So maybe you're leading, maybe you're not a technical person, but you want to lead a technical team or you wanna have or and or you already have a technical person or a small technical team working underneath you, and you want to understand what they're doing. The basics of how the the programming works. You want to be able to talk to them in their language and have them be able to explain things to you, said It makes sense when they're drawing things on the white board. You want to be able to understand what is that drawing? What does all this mean? What sort of ramifications are there? Maybe you want to be able to read their code. Maybe you don't need to be able to write code, but you like to be able to read code so you won't have a basic foundation. So you'll still have to ask some questions. But you can look at the code and you can get a lot out of it. You can understand the basics of what's going on, so it's not just about you coding and programming things yourself. It's also about leading other people being that team leader and having other people coding . Now a lot of programmers will say it's a nightmare toe have somebody who doesn't know how to code leading them. And, yeah, it's not the ideal situation. But when you're a leader, it's never going to be an ideal situation. So it's good that you're going down this path. There's more that you if you if you really want to be able to read code, you're gonna have to do other things. Beyond this course, you're gonna have to learn a programming language. You can talk to the people work that you're working with, where programmers asked them what sort of languages they're working with and what would be the best one for you to start out with. But it's a really good idea to learn these skills because as a leader, you're gonna have more and more parts of your business and parts, your organization running with code, running with software and interacting with software. So this is a skill that's only going to grow in importance and value over time, so it's a really, really good idea toe. Learn these skills back to the idea of owner versus investor, somebody who owns a restaurant business, somebody who's an investor in the restaurant business, So the difference here is that you don't just have to build it yourself. You can also pay somebody else to build that restaurant for you so you can pay somebody to build a piece of software for you. And where these skills come in is that you can understand and give good instructions. High quality instructions to your to the person that you're outsourcing the software to outsourcing things is its own other challenge. I have a course on outsourcing if you're interested in that, and then outsourcing software presents its own challenges. But the main idea is that instead of having the other person tried toe, turn your ideas into things like data and functions. You can do that part yourself, even if you don't know how toe you couldn't write a line of code to save your life. You can write it in what's called pseudo code that's gonna allow you to give instructions, and then they can turn that into the code. They don't have to do that kind of the 1st 50 get to the 50 yard line is just coming up with concepts. What's the data? What's the functions. How does it work together, then? The second half of the 50 yard line to the end zone? That process is turning those ideas into code, so ideally, you want to outsource less of the first part and more of the second part so that you're really outsourcing the translation. Instead of the creation, you want to create the ideas and concepts yourself or for the most part, do that yourself be able to drought a diagram or write things out in plain English and then have somebody be able to take that and turn that into programming code. 20. Learn to Read First: As I said earlier in this course, one of the most important things about programming is making sure that you're motivated and you're staying motivated. And it's really important to understand that most people that are really great programmers they were highly motivated from a young age, and I talked about why that is. But what's important for you to understand is that if you just dive into and most programming courses or books, they're often designed to be used in a context where the student is being forced in one way or the other. Teoh learn that language, meaning maybe they're part of, ah, in person class at University, and they're going to get a failing grade if they don't do all the work, and they don't do things the way the teacher prescribes it. The difference between that situation yours is when your self learning motivation is a huge factor, because you can't use that pain avoidance very effectively without, like getting a friend bet, giving them money, setting up some sort of other incentives, which most of us at the end of day. We just don't have the time or interest in doing. We'd rather just be learning because we really enjoy it. So the process of learning to enjoy programming right from the beginning involves taking some short cuts in some hacks. And the thing to know beforehand is that you are losing something by taking these shortcuts or these hacks. And what you're losing is you're not getting the same sort of fundamental foundation that a lot of classically trained programmers are getting, and you may build up some bad habits. You may build up some coding habits, and it's just important to be aware that eventually you should probably go back to those more difficult texts. Once you've got that itch for programming, you want to do it and you're sufficiently motivated. Make sure you're going back to some of those classic ways of learning whatever language you end up learning, and it's very easy. You can just do a little bit of research on Google with language that you're planning on learning and then ask what's what are the top books? Or go on Amazon. Look at what the top sellers are for that programming language. The same few titles they're going to show up from each programming language, so you just pick one of those and then go for it. But at this beginning stage, often that's what kills most people's motivations. So I don't want you to do that. If it's something where you're already motivated, then uh, you may be taking this course, but most you taking this course, you're not totally motivated to learn programming, and maybe you never really do want to learn how to write. But this is the strategy that I advise taking and its first being able to read code, then quickly moving to combining other people's code. And then finally, if you want to start learning how to write code and one of the important thing about learning languages, whether it's a formal language and natural language, your mother tongue a foreign language is that you have to use it to get your brain to be able to remember it and understand, So just reading things over and over will get you to a certain point. But there's a lot of benefits you get toe. Once you actually start writing things out, it has to do with spaced repetition. It has to do with understanding what's actually going on and building mental frameworks and that happens to repetition where you're actually taking action. So what you're looking at right here. This list is things that you can plug in or you can get started with. That's gonna massive massively speed up your progress. Number one is libraries. This is the first thing that you should start researching. So once you have an idea for a piece of software where you're not even sure yet what kind of software you want to build, start looking at what are the most popular libraries in the language that you're learning? As I said before, if you don't know what language to learn yet you're not sure what language is best you need to start their start with. Well, I want to create this type of program or that type of program, and then look at what the most popular libraries are for that specific language. Because those libraries, they're going to tell you. Okay, somebody already did 100 hours or 1000 hours or 5000 or 10,000 hours of work on this one little area. This one problem so that you no longer have to do that yourself. It's basically plug and play. You install the library, and then instantly you have a ton of functionality that would have taken you hundreds or thousands of hours to build on yourself. Eventually, you could create your own libraries, and then you could make those open source. You could charge for them. Next thing is tool kits. Tool kits are are aimed, usually at a very specific problem. They're going to give you a collection of resource is so that you can tackle that problem or effectively. So sometimes it's just a library, sometimes a combination of other stuff. That's something that you're not going to see nearly as often as libraries. But there's, uh, anytime you see toolkit, just think. Okay, this is designed to solve a specific type of problem, and it works with some piece of software, some programming languages. Next is frameworks, and what a framework is is if you ever think back to mad Libs where you would have some sort of story and then you would fill in the blanks. That's basically what a framework is there giving you a structure. It's kind of like you learn five paragraph essay. Were you when you were in elementary or middle school? five paragraph essay is a template. It's a framework, it says. First you have an introduction, then you talk about your three main subjects, and then you have a conclusion. So that's a template that's a framework may be familiar with frameworks or templates from Web design. For example, WordPress, where you can install a theme and that theme may contain a certain framework or a way for you to order things. Ah WordPress itself is a framework because it has certain types of data that you're forced to use like pages and posts and then comments. All of those things are part of a framework that WordPress created. S. De Kay's on example of an SDK would be like the android sdk. So if you want to develop android apps, sure, you could write it out in plain text documents. But you're much better off installing the android sdk, which is a software development kit and what that is is. It's basically an environment where you can build a piece of software designed for a certain programming language or a certain platform. So you're getting started with this. All these tools built in that it makes a lot easier for you to code your program. So, for example, in the android sdk, there's all these templates for different buttons and layouts of things, so that when you're building an app, you're not starting from square one. You've already got a lot of template things that you can use, and it makes the development process go a lot faster. So when you're starting out programming something, maybe you should do a Google search for an SDK related to that programming language or that application. And when you see that, just know that. Okay, this is a kit. This is a resource that's gonna kind of act, is the foundation, and I'll build everything for that platform on top of that. 21. Where to Find Code Recipes: In this video, you're gonna learn how to find code recipes and pre made code basically almost equivalent to a pre made meals or pre made appetizer or pre made side dish for an entree. That's what your we're talking about here. So sometimes you just need to put in the microwave or take it out of the fridge, and it's basically ready to go. Other times it's a pre written recipe, but you've still got a kind of implemented or build it yourself. So the first thing to do is just go to Amazon or Google, pick your programming language that you're using and then go to just putting cookbooks. And there's books that are literally called like a python cookbook, where you gonna find dozens or hundreds of examples of pre written code that solves various popular small and medium sized problems? So look for that cookbook and then start reading through it. This is going to really help you build your understanding. You may take an intro level course on, or a book or whatever on a programming language. After you finish this course and you may be thinking, well, these examples aren't really relevant to me. this stuff doesn't still really make sense. But once you go through a ton of examples, that's going to really help you start to get a feel for things because you're going to start to connect to the the two most important things about program, which is data and functions you're going to start picking out. Okay, you read. You read what the author says about what this problem saw. What? This ah program solves what problem it Selves. So you you get an idea from that? Okay, what are the? What's the raw data were putting in? What are the ingredients? And then what are the basic transformations were making, too, that those pieces of data. So once you start to translate just into those two major concepts, then that's going to start to connect with the actual code that you're reading. You're going to start to see. Okay, here's where we're creating some data. Here's where we're in putting some data, and then here's where we're transforming it and getting it to intermediaries stage. And then we're transforming again and getting it to the final stage. You're going to start to see things I highly recommend. You get some pens and print out. Or get the print version of of these cookbooks and annotate them, especially if you can get different colored pens or pencils and really market up. Really get a feel for how things are organized and start to break apart the code into little chunks. Because when it's a huge page a code and there's no organization to it, it could be pretty difficult to understand these next two are mostly for front encoders. So some of you may be thinking, Well, I want to be a Web developer. I'm never going to create a mobile app. I'm never gonna create a desktop app. I'm interested in HTML CSS Java script, Python, Django Frameworks, Web development stuff. So that's fine for that, uh, to really great resource is our Code Canyon and theme Forest. Code Canyon is where you can get scripts and other small to medium size applications where you can basically install it directly onto your Web server directly into your website. One thing I didn't mention, and when the Web belt development also is dealing with databases, for example, that's starting to get more into back end, but you should have a basic understanding of how databases work. If you're gonna be doing any serious Web development, theme Forest is more for themes, and WordPress themes is probably. We're going to start out looking at theme force. Both of these companies are actually have a parent company called and Votto, and it's a really great website. I talk about it in a number of my course of creative courses because one of the most important things as an artist or as somebody who just creating anything is to find other examples. Find out also what's trending right now. What's the most popular applications or ways of doing a design right now? So you get the most up to date ideas on what's relevant, what's popular, What are people doing right now? Is that your nuts? Because you can read a book that's five or 10 years old and learn great fundamentals. But you may be missing out on a lot of innovations that have happened since then, so check out these templates sites and save your favorite things. Just bookmark it or save a screenshot of it because you're going to start to build a collection of the the favorite, your favorite things, things that you like, how they look. You like the idea behind it. You like how it's implemented. You like the video. Any time you there's something creative that you're doing and you're dedicated to, you should be collecting all your favorite examples because what those favorite examples air telling you is what you like. They're all kind of a reflection, reflecting a different kind of angle on who you are and what your tastes and aesthetics are . And as you collect those, you can look start to notice patterns. And that's one of the one of the easiest ways and best ways to figure out your own personal style, your own personal way of doing things. And that's really important in any creative tasks. A lot of people don't think of. Programming is a creative task, but it actually is highly creative. And if you talk to anybody who's been programming 10 or 20 years, they'll talk about the beauty of code. They'll talk about the elegance of code, so that's something that you'll start toe, get more of a feel of as you look at more examples as you start to find things that are really useful and it's like somebody who talks about the beauty of mathematics or the beauty of physics. It may seem really complicated and boring and dry textbooks, but once get past that to the big ideas of what's really cool about it, it's a totally different game. Get Hub is another really important place to check out. This is where a lot of people put up free, open source applications. Source. Forge is another place, so they're going to be giving the source code and you can just take that source code and then start playing around with it. Started looking at how they do things, how they implement things and then start to understand code. And the great thing about these websites is they rank things by how popular they are, so you can use those rankings to figure out what ideas are good ideas for programming, what ideas, what's something that could be useful for another project. So it's not just coming up with your own ideas. It's also about looking at what's out there right now and think about how could you build on top of it. One of the easiest ways to do this is to build a browser extension. So instead of even creating your own standalone application is, you can take your favorite, uh, browser. And just maybe there's an add on that you really like. But it's missing a feature you could build in that feature yourself with with an extension . So just starting out with adding on little things like that is a great way to get started. You don't have to build something from scratch. You don't have to build something from the ground up. You should be looking for other ways to do it, and another way to do that is just searched. Google. So search Google for, uh, open source or source code, or how to build this type of programmer. Just search for examples of people that have maybe already built what you're trying to build. So make sure that you're not wasting your time building something that somebody else has already built. And it's important for you to get into the the feel for the culture of programmers because it's a different culture than the culture that most people live in online. So you have to get used to how things look differently. People talk a little bit differently. Different part kinds of personalities and what's considered acceptable or rude versus normal. So all this kind of stuff you're gonna learn as you start toe, spend more time online and spend more time in communities where programmers air hanging out online. 22. How to Get Free Help: these next two videos air going to talk about how to get help online, how to get help with your programming when you're starting out and we're first going to talk about free help. As I said before, one of the biggest things you're going to notice is that any smaller, medium sized question or problem you've had somebody else or usually multiple other people . Sometimes even dozens of other people have asked the exact same question online in a different format. So your first thing should always be. I'm gonna go to Google, type in my question. And if I don't get any results, I'll type the question in a slightly different way. Or use different words and spend a good 5 10 15 minutes just looking to see if somebody else has solved this problem, because if they have, it's going to save you a lot of time. One of the most important things about learning is how big is the feedback? How long does it take for you to get feedback? So at the beginning, you need a short feedback loop and waiting a day or two for people to respond to a post is can really slow you down and you can get distracted and start working on something else. So it's important also to set up accounts. So while you're in a non stressed out state, not when you're needing. Needing a problem, solve instantly, but a little bit before that. Go on, Cora. Go on, stack exchange. Go on, get hub and create your profile. Create your account on there. So just go do it. All one Spend 10 or 15 minutes, Open up your email in one tab, open up these three sites in the other tab, and then just sign up for all of them. Right now, the reason why you want to do that is because while you're when you want to solve this problem, you don't wanna have to go through all these extra hoops just to get your account set up. It should be all set and ready to go. So when you have a question, you can instantly go toe one place or multiple places, ask your question and then get all the results back at the same time. So that's the important thing to do. First, spend some time searching for the answer. If you can't find it, Then ask the question on one of these places. Wait for a response. And on certain sites like Quora, you can use credits that you build up. If you help other people, you're gonna build up credits. And then you can use those credits to get your question in front of MAWR experts or even ask an expert to answer your question in exchange for some of these credits. So there's huge, huge, huge online communities, and you may be used to some other online communities for other interests or hobbies that you have and assume that programming would be about the same in terms of levels of interest . But the main difference is that everybody who programs by necessity is online and they're on a computer. So the percentage of people in programming who are active in online communities in some way is significantly higher than almost any other domain. Because they're all they're all using the Internet toe learn. They're all using the Internet to communicate with other people and keep up to date on things. Find libraries find plug ins, find example code, do their research. So there's a ton a Tana Tana people online in a bunch of different forms. Once you pick a specific language, you're going to start to find communities like Reddit is another example where people, uh, come together in groups based on what programming language. They're talking about, what they're learning about. So once you start to figure out what language or a handful of languages is going to be best for solving the type of problem you want to solve, building this type of application or Web or whatever that you want to solve, then you can start to focus on finding those groups. And you should spend a significant amount of time over the next few weeks or the next few days. And I'm talking about several hours just doing research online about where the best places where people come together and talk about the programming language of the programming problem that you're trying to solve. So let's say you want to build a video editor. That may not be a specific language, but it's definitely going to be a specific community, so you would want communities of people that care about video editing, but you in video conversion or stuff like that. But you would also want to find a specific community for people that deal with audio, maybe, but definitely video programming and the different plug ins that work with different applicator programming languages. Sometimes you're going to make a decision of which programming language to use, just based on the fact that one language has a specific library or plug in. That's just so effective and will save you so much development time that just having that one thing is gonna put you so far ahead. So you decide to use that language just for that one feature. Another great thing to do besides online communities. But also you can do it online as volunteer, so find an open source project and start to volunteer for that. Build something for somebody for free, goto a start up and say, Hey, I want to help out. I want to do some free work, find a student startup, find a small start up in your community. Maybe you can work with the founders. That's one of the most important things I did when I was younger. Is I started? I was just at an art gallery, and, uh, my friend that I was with, she knew Ah, a couple of guys that had a startup, and so I just met them. I learned they were start up, so I asked for their card and then I e mailed them, like 12 or 13 different changes I would have made to their website and how their application. Their Web application ran. And they said, Hey, do you want to come by and up lunch? Do you want to see what we're doing? Do you want? And basically I was there Intern for about a year and and I learned a ton from that, cause I I saw them coding. I got a feel for the environment. I got participate, and I got to have direct one on one interactions with the founders. So having those sorts of interactions with founders, if you're interested in starting your own business at some point being an entrepreneur, it's really great toe. Have those sorts of interactions because you get to get a feel for what it's all about, how they think how they operate. So volunteering is a great way to start building your skills, and it's also a great way to build your portfolio. So you have some proof of you can actually do some great work and just having two or three good, really good examples of you doing good work is usually enough. And that's about how many projects it's going to take also for you to get Teoh, I said, get even a basic level of skill. And so it's important for you to start doing projects as soon as possible in build your portfolio because instead of that way, instead of building just example applications using some textbook where you're building something that's never going to be useful for any real world task, you're instantly starting to build things that are useful in some way either to yourself or somebody else. And so once you start thinking that way, once you build a note, you have a nose for problems and you start to just kind of sniff them out and notice them everywhere. It's gonna you're gonna go from having no ideas for what you want to build toe having more ideas than you know what to do with. So that's why it's important for you to take this course and go through the basics of data algorithms, uh, functions with the raw ingredients and the preparation, understanding that sort of stuff is going to give you the tools to understand. Well, how would you have build a program or a piece of software to solve this problem or even approach this problem or even think about this problem? So that's why this stuff is important. But you want to start getting help as soon as possible, getting opportunities to help other people as soon as possible, because that's gonna make all this stuff sink in deeper so that you get to the point where you can actually build things. 23. How to Get Cheap Help: this last videos about how to get cheap help. So sometimes you're not gonna be able to get free help. Sometimes that free help, they're not gonna be able to spend enough time to teach you what you want to learn. So these are a few different options. One is live ninja live in inches, a place where you can pay per minute to have somebody help you. And don't know what I don't want you to take from this video is that you can Onley get high quality help when you pay for you can actually get a ton of high quality feedback, either on a one on one basis. Let's say you're on a form or question answer site. You can get the crowd sourced answer, which is a bunch of people answering and responding to each other's answers. But you can also take somebody who's answered something and then private message them and go back and forth. And I've done that many, many, many, many times, and I've met some really great people that way, and I never paid them anything for their help. So and then there's people that a message me and I help them and I'm not charging them for that either. So it's a back and forth, and when you're in a community like that, where there's a culture of sharing for free, that's what you get. So don't assume that just because there's options to pay for information that it's necessarily going to be significantly better. Or you can't get that help for free. But the first one's life uninjured. That's where you pay per minute. Now the one is just ask somebody for one on one help, and then if they're not willing toe, they just can't spend enough time. But they're not willing to than you could offer to pay them for their help. You could also, maybe you have a friend or an acquaintance who knows how to program, and you're not close enough or you wouldn't have any skill to exchange with them where it be reasonable for them to just give you hours and hours and hours and hours of one on one help. But you could go to them and say, Hey, I'm willing to pay you this amount or take you out to lunch or this or that. Uh, it could be a combination of paying the money or bartering using something else and get that one on one help and it can be digital could be over Skype or can be in person one on one, so it could be a combination of things. Another way to do it is to use up work and up work is the new merger company that came out of o desk and freelancer dot com, which are two of the biggest places where you can outsource jobs online, put up a job and then have people apply for it or put up a fixed rate job and then have people bid for bid for the job or bid for the project. So there's basically two ways you can do it. One way is you can put up your project as I want somebody to teach me how toe code this or just be my coach. The other ways you can take your project and pay somebody else to code it for you. And then you either can include in the project, and I want you to explain things, line by line or ad verbose comments so I know exactly what's going on at each step or you can just say code this for me. And then if I have any questions, you have to be willing to answer the questions. And most people that kind of goes along with the territory. But you're gonna be probably asking more questions than the average person, so you may want include that in their You may want to give them a bonus at the ends, depending on how much extra time they spend. Then the next thing is come up with some sort of test. So come up with some sort of 5 10 15 minute coding test, where you figure out something that's simple enough that could be done in short amount of time but would test their ability to code. And you'll get a bunch of different people submitting code that looks either identical or very similar. And you're gonna be able to judge the quality of people's work just by looking and comparing, contrasting them. So, yes, testing people does require that you have a basic knowledge of what's going on. You may be able to get somebody else's help with this. If you have a programmer friend who might be able to quickly look over things But you wanna have some sort of test, and once you do that test, that's gonna help you filter people out and then you just hire them and you get started with the job. I usually interact with people using Google docks as well as sometimes Dropbox and then Skype for communications. So this is a great way to pay for help. Get a project done at the same time, Some. If it's a small project, you could have multiple people code the same thing and see how they do it. You're gonna have interactions before they coat it where you say, I want this, I want that you have your specifications. They'll ask for clarification, so there's gonna be a back and forth process, and you can learn about how a coder thinks, just by interacting with them and interacting with multiple coders. So one of the ways you can start out is maybe you have code that you wrote, but you can't figure out how to get it to a finished product. You can give somebody code that's already pre written or ah, like, halfway done and then have them finish it for you. So there's different ways you can approach this. Ah, the great thing about it Is there so many people out there that are middle or low or high end coders and you can get small projects done very cheaply. One way to do it is I was on five or recently, and I saw somebody who was offering Teoh Code anybody's small python project or homework assignment for $5 so you could give them any small or small to medium size, application, project or coding project, and they do it for $5. So that's how it wants you to be thinking. I want to be thinking about Well, what's the sort of thing that I could build or somebody else who was a good coder could build in 1 to 2 hours, and that's the kind of thing that you could outsource for $5. So you start to get ideas for Well, what's possible? What can I do with data and algorithms? And then you can outsource that to somebody and get something to look at, something to play with. And you start to build this feedback loop of looking out at the world for problems, finding something, figuring out how that relates to data and algorithms input, transformation output and then come up with some sort of pseudo code or a flow chart or diagram for how it's supposed to work, giving that to somebody and then seeing code come out of it that has comments in it. So always make sure you're reading comments and code makes you're looking at that I didn't cover. I don't think I covered comments earlier, but it's a very important concept in any language. There's gonna be a certain special symbol or collection of two or three special symbols that allow you to add comments to a code. So basically says everything after that special symbol or in between two special symbols won't be processed as code. It'll be just something that is for the humans that are reading the code. So it's kind of like when you're writing and you have foot notes in a in a book, that's an example of something that's kind of like a comment or commentary. It's not part of the text itself. It's on the same way. Uh, you can add that any software code and so you you should be commenting. Your own code is very important for collaboration with other people, but also make sure that the people working under you, the people working for you make sure that they're commenting their code and make sure you understand it. So if they're not giving good comments, you can rewrite them, tell them how to write their comments, make sure that the comments air good so that when you're working as a team, you're not having communication problems, and you can at least read the code that they're writing. I really want you to be able to read code. I want you be able to understand the basics of what's happening with data and what's happening with functions, and this course is what's going to get you started out. Uh, this is the last video. The next video you're going to see is the conclusion video. I'll talk a little bit more about next steps, but it's very important that you start interacting with code and you get something that can actually do something that actually works that you can see in a Web browser you can install on a phone or install on your computer. Add is a plug into your browser once you get to the point of getting some sort of result going to that planning phase and getting some sort of result as quickly as possible, because that's what's gonna build a feedback loop that's gonna keep you motivated. So that's it for this video, See in the in the conclusion. 24. Conclusion: in this last video, we're gonna talk about next steps. So we're gonna talk about what should you do next? How should you approach programming from here? You still haven't really seen any code. We talked a little bit about variables, objects, classes. But you haven't seen code yet. So the first thing you do before you jump into code is you should figure out. Well, is this code gonna be relevant to anything I end up doing? So what you should do for that is start figuring out what type of problem you want to solve . What kind of area of programming are you going to get into at least to start with? So one question is, well, is gonna be front end or back end. Most people like to start with front end because it's something that they can see. It's something that they can design has kind of a graphical interface to it. So that's one way you can start. If you feel more comfortable with the, uh, command line, then you can start doing stuff that's more back end or if you really like playing with data , you want to get patterns, you want to find patterns. Want to store a bunch of data or you wanna analyze a bunch of data, then back and stuff those sorts of things. They're gonna be a little bit more obscure, a little bit less user friendly. And there's a general pattern, which is there's a lot more people that are at a very intro level in front and stuff than in back end stuff. So you need to have a little bit more experience with programming. Or you just need to be willing to go through more pain in the beginning to get comfortable with back and stuff. So that's just how it works. That's just, um, especially Web designers. There's a ton of graphic designers that have had toe learn digital technology. I've had to learn how to implement their ideas into a digital interface into ah website, for example, So they've had to transform. They've had to learn those skills, so there's a lot of resource is help for helping those graphic designers transition. There isn't the same sort of field of the same sort of transition that happened with back end developers, so there isn't as much of that easy slope when you're getting started Another very important thing is that first half of the process, which has nothing to do with writing code whatsoever, what it has to do with his breaking down problems into data and functions. And one of the best ways to do this is to start using spreadsheets more. Start using flow charts more. I want you to be going into every area of your life, looking at what you're current routines and patterns are and start breaking those down into data and functions, breaking it down into objects or functions, breaking it down in tow. What are the constituent pieces and what are the moving parts? What are you doing? What are the routines where the habits start? Breaking that down, start looking for the system. Start drawing that out as a flow chart. So if you've got a project coming up, start flow charting that process, think about okay, what am I adding? At each step? You could even think about taking other aspects your life and turning them into recipes. So just thinking in terms of what with my ingredients, and then what are the procedures? What what am I actually doing to transform those ingredients? Start applying that to other areas of your life and then go into the reverse. So go into the kitchen every time you're making a meal every time you're cooking thing about. OK, how is what I'm doing right now, similar to what's going on when I'm programming? Or how would I describe this in programming language? What I'm doing right now or what is? If I had to create a recipe for the whole process of what I'm doing right now? How would I do that? So I want you get very comfortable moving in between different aspects, your life, different areas of your life. So you congenital allies thes ideas. Ah, lot of what people experience when they're learning programming for the first time is it's like I said before getting ships to another planet where everyone speaks a different language, thinks in a different way, and you have no idea what's going on. So what happens is that programming knowledge remains isolated in like a different department of their brain that doesn't talk to any of the other parts. So I want you to become very integrated. I want you to have this knowledge of how to program how data information works, how functions work. And just take those two very simple ideas and start applying it to all the different areas of your life. So start with the cooking metaphor, but then move on to other metaphors. Look at the similarities in all the different aspects of your life and start to look for patterns. Start to make those connections because that's gonna build a very strong foundation so that as you move through life, you're constantly seeing opportunities for things that you could build. And as you get better and better at doing that, you're no longer you have these questions about, Well, what programming language should I learn? What should I build? I don't There's nothing that I can do that's like a real project that would actually help me. You have to get started looking at other people's examples of what they've built. It's going to give you an idea of what's possible. You're gonna be hit with something that inspires you. That seems really cool. So any website that's out there that can do anything, that's something that was built with code. You can duplicate that once you learn how to code and There's people out there that have figured out how to do all this stuff. So ah, lot of it is just being willing to go out there and look for the answers. The other thing is, and we've talked about this a number of times. But true zing the right programming language. It's all about figuring out what type of problem you have. And if you're not sure what type of problem you have, then just look for other applications programs, APS that have the same or similar sort of function or in a similar category and start to figure out what language they were programmed in. Search for open source tools that solve that sort of problem. See what they were programmed in? Start reading that code. Get familiar with code even if you never learn. Plan on learning how to write complex code. You shot least be reading code. You should be reading the comments. You should be taking these ideas of data and algorithms and converting in tow. More full formed ideas of Well, how does this does this line of code that I'm reading right now does this represent data doesn't represent information. Where is this information being stored is it's stored in memory is stored in an external file. Just start to answer basic questions like that. And where that sort of learning comes from, is just taking examples and then breaking them down, deconstructing them. So when you look at a meal that's on, ah, served to you, part of the way you can deconstruct it as a chef would. Is there deconstructing the flavors? They've got categories, so they look at textures. They look at flavors, they look at the heat, how they look at the visuals, how everything's put together and then creativity. Was this inspired by something? Is there some sort of story here? So all of those things go into how a chef breaks things down? There's different basic flavors. There's different cuisines, so they're looking and paying attention to all these different categories at the same time , and they're going through that so they can deconstruct anything. They're eating anything they're looking at. So you want to build that same sort of ability, and you probably already have that ability. Think about what are your major skills? What's your profession? What kind of problems, or what kind of things are you very experienced in breaking down? Now you want to think about programming in the same sort of way, you're breaking down a problem into a series of raw ingredients that then get transformed into a final output. You're taking existing programmer application or library or script, and you're breaking that down toe. How does it actually work? So get practice going forwards, getting backwards, breaking things down, building things up, combining other people's work and focus on getting real results as soon as possible. Focus on building something that does something useful for you. Wish as quickly as possible and one of the best ways to do this. As I said before it, start using spreadsheets and start using flow charts. The reason why spreadsheets air so important is they give you an experience of laying out data in a very logical way so that everything's in the same format and your brain has to think more clearly in orderto separate out the, uh, the gel of ideas that you have in your head of the nebulous cloud of ideas that you have in your head. It forces you to break them down into distinct categories and organize them in a super logical way. So if that's not something you're used to doing, just getting the experience of working with spreadsheets, something that maybe you could just get away with putting in a word document instead, put it into a spreadsheet and focus on organizing your ideas more thoroughly, because that's going to get you trained in thinking about information and data in a very strong way, because a lot of what you're starting out with his data and then transforming it into another type of data or another form of data. So you're taking to things and you're adding them and combining them into one thing. We're taking three things. You're getting the average of those where you're taking a bill total and you're adding 18% tip to it, and then you're getting your final result. So when you're thinking about problems, all you're really thinking about is the beginning state and the end state. What are we starting out with? What do we have when we're starting out those raw ingredients that you have sitting on the table in front of you or your cooking cutting board? And then you have the end result You have that picture in the cookbook that showing you what how it's gonna look when it's all finished, and that part in between is the functions that you're using. So that's how I want you to think about programming once you finish this course, and by now you're probably just about done. The next step is find a single problem that you're going to start looking for. How to solve? Figure out what programming wing, which you should use to solve that, and then start looking for libraries. Start looking for other people's work that you can deconstruct or combine into your own program. So start thinking about what kind of problems exist that are small level problems. Start looking for help. Go out and asked. People, make sure you're searching your questions because there's answers that are already out there and start building stuff. Don't wait until you know everything about how to program just yet. Just the bare minimum until you start building a few applications, get some positive reinforcement. Build those initial feedback loops because the most important thing for you to get out of this course is how to keep your motivation going. How to make sure that you just don't quit because what happens to most people is they quit . So the first question you should be asking yourself for these first few months is how doe I do whatever is the most fun or whatever. The is the most motivating. So I just continue to go for the next few months. Eventually, you're gonna build up a foundation of knowledge, things we're going to start to fall in place and really make sense. And you're to start being able to do things. And you're no longer and have that self doubt of Can I really code? Is this really worth it in my the kind of person that could actually do this? You need to get through the first few months before you have that kind of ah ha moment or that just lightbulb moment. But after you get to that point, then it's a little bit more smooth sailing. You're no longer not that self doubt. It becomes more of ah, learning journey, just like learning most other subjects where you know, eventually, if you just spend enough time, you're going to get where you want to go. Sees the initial few weeks and months where it can be the toughest and people are most likely to quit. So I really encourage you everything you do every step you take. Make sure that it's revolving around keeping yourself going, keeping yourself motivated and integrating it with the other aspects. Your life, even if all you do is just keep on playing with this cooking and coding metaphor, breaking down the things you're cooking and thinking about Well, how is this? An object houses a function houses a piece equivalent to a piece of data. Just doing things like that is going to start getting those space repetitions in there. So you that you really burn into your brain, that framework of how coding how programming works, and it's gonna be super valuable, and it's going to serve you well for the rest your life.