Hi now that you've created your first app let's take a first look at some of the basic hardware and software concepts hardware refers to the computers electronic and mechanical components such as it's chips and it's disk drive and in flash drive keyboard etc software are the programs or code that control the hardware so for example your I have a dream app control the Speaker of the device and it told it to play the recording a model is our king general-purpose computers are computers that can run any program we give it so for now you've given the device theme our Luther King app but you're going to be writing lots of other apps in this course we contrast general-purpose computers with special-purpose computers these are ones that have fixed programs that can't be changed such as a watch or a calculator program or the anti-lock braking system in your car the computer programmers a person like you who designs and write software in fact that will be you in a few weeks Let's take a closer look at hardware now the main hardware components are showing this functional diagram first of all is the memory : this is temporary memory and this is where your program is stored while it's running on the device the central processing unit is the brains of the computer that it's the unit that interprets each of your programs instructions and tells the other components on the computer to carry them out. for example when you want to play a sound, it tells the sound component to play the sound that you give it. The hard drive is the permanent storage device. Here's where your apps and your sounds and your pictures are stored permanently even when the power is off. The last functional component are the various input and output devices that connect to our computers. For example on the smart phone, there is the touch screen, the mic, the speakers and so forth. All of these devices are connected to the computer through its motherboard which is a printed circuit board that houses all of component. This is a picture of the Sony Playstation motherboard. the chip in the middle here is the central processing unit for the Sony Playstation. A chip is an integrated circuit that contains millions of tiny electronic circuits and devices. we also have other chips on here such as the memory chips and chips that control the i/o devices that can be attached to the computer. Here's a closer look at a chip. don't be misled by the size the chip itself is a very tiny rectangle in the middle that has millions of diodes and switches and circuits on it. if you opened up your Nexus phone you'd find a similar motherboard pointed out here is the 2 gigabyte memory chip 2 gigabytes is 2 billion bytes that's about 2 billion characters Underneath it which you can't see directly is a central processing unit. ut there's other chips on this motherboard as well for example 1 outlined in purple here is the audio chip this controls the sound component when you tell it to play the speech by Martin Luther King and the modem component controls its communication with the Internet you turn the motherboard around you'll find fill other components the 8 gigabyte flash drive is for permanently storing your apps and your music and your pictures 8 gigabytes is 8 billion bytes or 8 billion characters and you also have chips for the phone for communicating with the internet the HDMI chip is for displaying high-definition output on your touchscreen so those are some of the main hardware components and concepts let's now take a look at software. Software serves as an interface between us and our computers so in this case the interface consisted of some buttons that you put on it and some labels and when you touch the button it would play the right sound now apps are just one part of the interface between us and our computers between the application layer where the I have a dream app reside and the hardware layer this is the operating system in our cases the Android operating system this contains a lot of software that helps us use our devices for example when we want to load an app the operating system has a piece of software called an app loader and when we tell it to take a picture it has a piece of software that controls the camera and another that controls the touchscreen all of the software has been written by programmers and it makes our ability to use our devices much much easier it would be the same picture if you had an iPhone the only difference would be that it would be using the iOS operating system the reason we need all this software to interface with our computers is because they can only understand their own language by this I mean Apple machine language or Nexus machine language or Samsung machine language that explains why you can't run an iPhone app on your Android device and vice versa unfortunately we don't have to program in binary code computer scientists have created lots of high-level languages that are readable by humans but of course in order to run on the computer or on a smartphone the high level programs have to be translated into machine language by special software called translator software it translates the high-level program which is called source code in the liberal level binary code it may be useful to step back for a moment and think about the fact that these languages are really abstractions that help us deal with our computers App Inventor is a very high-level human readable abstraction it lets us deal with the computer in terms of things like sound components and buttons and labels it gives us instructions for manipulating these components but machine language is also an abstraction it deals with the computer in terms of very low-level constructs like the computer's memory or the processor it has instructions that say things like load this byte of data from the memory into the processor or send us piece of data to the speaker which of course would play a sound because it too is an abstraction programs written in machine language have to be interpreted before they can be accessed - processor this happens at a very low level and we'll look at that process in that in a future lesson the important point for now is that all of these languages whether they be high level or low level are abstractions that provides constructs and instruction sets that led us as programmers deal with the computer itself but focus now on what happens when we run an app we now know that our I have a dream app has to be translated into machine language and then the previous tutorials you learn two ways to do this one by using the connect to companion menu the other by using the package and you let's talk about the differences between these two late when you click on connect your companion the app that you're writing on your browser has to be transferred over and the software that does that for us is a MIT companion app which resides on our phone so that takes the blocks and interprets them for the Android operating system which in turn interprets them and loads them into the processor and run again when you press a button I have a dream speech okay nice part about pre connect presenting options is that as we make changes on the browser's they are immediately interpreted and run on our device this form of translation where instructions are interpreted one by one immediately executed is known as interpretation what about when you say package an app well you know again that some kind of translation has to occur but exactly what it's actually quite different in this case in this case a piece of software on the MIT server translates your entire program into binary code and puts it into a file called an apk file if you say Falcon then we load it onto the phone using a barcode scanner or some other piece of software this form of translation is known as compilation where the entire source code program is translated into a single binary file the advantage of compilation is that the translation has to happen so the translation is more efficient however the advantage of interpretation is that it allows us to more easily see how each instruction works and to debug our apps as we're developing them we'll learn a lot more about these two ways of translating as we develop more apps phew that was a lot of new content we'll have more to say about some of these concepts in future lessons to help you review the terms and concepts we prepared a little matching activities so pause the video here and try matching each of the technical terms in the left column with description in the right hand column thank you