Alright, welcome to the last CS1 Lecture Session. There's not going to be exercises for this section. I'm just going to try in, I don't know, summarize what it all means and talk about some next steps. So, for CS101, I took the strategy of just jumping right in with code really and we got into the detail of codes and played with the code and my plan was that as you played with code and have bugs and experimented that you would gradually just come to see what some of the features are of the computer. So, I hope that works. Today I'm going to step back and talk a little bit about what it means and [inaudible] and things so first thing I want to talk about is this word algorithm. I may have used here and there. Algorithm actually it's named after a Baghdad astronomer Al-Khwarizmi. Some of his work ends up in the word algebra so he's rather influential. So the given algorithm Refers to the steps to take to get something done. So, not just saying well I want this script to be you know blue. That's just saying what the goal is. The algorithm is really figuring out something to describe one step sort of. Now it's not the same as syntax. Syntax is really a computer language feature so algorithms I would say capture really human, human creativity of how I might going to solve something And really, for CS101, very often for the exercises are in lecture examples. I've been describing an algorithm. Oh, take the picks and do this and do that, whatever describing the, describe is going to be And then I've left it to you to, to then phrase into code and that, that's just a totally classic computer system way to work. You have human, you have the idea, unless you get phrased in the code. I'll have other bunch of examples sort of. Hit that pattern. So this is an example, I won't go to the details exactly but here's the code from the Monkey Moon example and so we had the strategy of like computing average and then trying and find the blue background behind the monkey and then copy the red, green, and blue pixels that is over. So such thin g is that, that's the idea which was pretty complicated and you know effective and then here it is expressed into code And party, I mean, it's a little bit of amazing that we did and my code is fairly complicated, right? So, at least a couple of weeks ago, you didn't, you didn't understand this so it also shows the gap where we had this plan, what we're going to do but then look at the individual steps in the code. Pixel dot got red. You know, average times you're pointing on too. The building blocks that the computer has are really pretty simple and I just get that. There's no insight, it's just mechanical and then in a way, they get what a computer programmer does. I've taken an idea that's interesting and valuable and sort of phrase it down to the computer, break it down into the little mechanical steps that the computer can do to sort of build up the program that we like one And that's. That's a key example. That is what, that's what the modern world looks like in terms of the computers, computers doing some usual stuff. So, as long as I was talking about code, you know, having an algorithm for phrasing them to code, I also thought I could revisit the word bug. I'm sure this is a word you've all heard at one time or another. Here's a little example of a bug where I, I have to [inaudible] over the image. And then here I've mentioned I'm trying to change the image to gray. So, I could help the line of average equal pixels to get red plus get green plus get blue/3. The problem here This code does something. It just doesn't compute the averages I intended. The problem here is that the slash three only applies to get blue. We would need to put [inaudible] in here to make it work right. So the results is that was [inaudible] and so the numbers going to come up like 450, just way too big and so setting it in to the image makes the image come out almost near white. This is just an example of a bug where there was intent, well here's the other thing that I might want to do. But the code I typed in Said something else. It, it said something but it had steps the computer could follow but it wasn't the ones I intended. And that's. That's very often what bugs looks like and I'm sure you've have run in the bugs all the time. So there's a little insight of how, where the gap was between the intent of the programmer and running out the steps for the, the computer actually do so this sort connection I'm talking about is at the very start of the class I made this kind of a provocative claim well you know computer is to powerful plus two. Computer is so stupid and limited and I stand out of that I think because you have seen [inaudible] limitations and yet. That was very useful we have e-mail and the Internet and computer games. All of these are phenomenally valuable awesome useful stuff so how that works? And I guess ultimately the answer is humans, That a human programmer had a creative, an idea of like here's what I'm going to do and this is going to be great and that's really where, that's what computer programming are, that's what computer programmers are and that's where computer science is about and then it gets broken under these steps with the computer can actually do it. So I just have some, some examples here. Grab some of theses from Stanford so these are examples where you have the computer installing these mechanical stuff between something [inaudible] it's kind of professional. So Daphne [inaudible] at Stanford has this awesome research on grading cancer cells. So basically, you have a [inaudible] dish with some sample cells in it. And you show a computer an image of it and then the computer is going to eventually, she trains the computer to do great, so something that normal humans do that's actually pretty difficult and humans have a tough time doing a good job out of it. And so, but when I get that, this looks like a little bit like our image code. It's not that you just say that the computer, hey, I want you to grade this. Really, you know, the computer just has. Values, you know, bunch of numbers and can do less than and gr eater than, you know, loops are those building blocks and so the [inaudible] ingenuity to phrase up an algorithm for the computer using it's simple [inaudible] to do something profoundly useful like [inaudible]. I'll, I'm just putting links here. If you want to visit the document then you could try this up. Another example of this just sort of amazing is there's a treatment for certain forms of deafness called the cochlear implant and this is a little bit of controversy about the deaf community about if this is a good idea or not but it is amazing. Other works is there is a microphone that takes in sounds and the sound waive is kind of like we saw in the analog and digital lectures are processed by a computer and eventually ultimately ending up going into wires that go directly in to the, the sense organ in the head and so. It's, it's possible to give, not exactly hearing but sort of hearing for someone who is potentially completely deaf before. So there's, I gotta say, a fairly amazing video Youtube video clip here of the baby hearing their mother's voice for the first time. And so it's, it's what's saying, future is about that. I gotta say, if I was an engineer who had anything to do with this project, I would very proud. Like that is a, it's such a vivid example of the technology really changing someone's life Last example. Also, a part from Stanford is this idea of self-driving car. So this involves, the car has all sorts of cameras and range finders on it and it's sort of, I'll put it in quote. It's Kind of seeing surrounding and trying to understand what the obstacles and pedestrians, whatever are and then making decision in real time like it has to decide right now what to do. That's profoundly a hard problem. But so Sebastian's run at Stanford and now we can do this in Google he has made a lot of partners with this and I gotta say, I'm sort of a national optimist but I think this is all going to happen. I think it's going to happen because although the technological challenges are enormous, ultimately it will sa ve time And as society becomes more wealthy, time is just something everyone values. I think that's going to provide a lot of pressure to make, make this work so I'll be, I'll be interested to deliver long enough to see that working. All right So I want to talk a little bit about you know post C101, things you might want to think about. So Most people are not going to be computer programmers, That's fun we need more but life certainly is not for everyone. So I think there is kind of a skill to just working with computers. Computers obviously have the sort of mechanical, slightly fragile and I think that just have to be just so way that are. And my hope is that, with CS101, you've seen how that is at times and in different ways that you, it's [inaudible] you a little bit of confidence and a little bit of patience. I think sometimes, people [inaudible] something in the computer and I click the button and it doesn't do what it's supposed to. And there's, there's sort of stuck of well what I do know. And I think they can get past that stuff whereas now, I think you've seen the, the kind of the mechanical quality of the computer. My hope is to have a little patience. So, okay, well, we're not doing what it's supposed to, let me read the docs again, there's probably some little. Dumb thing right I'm missing semi colon or whatever. Some little detail that computer is going to get trip by and so I think there is a skill to no getting derailed when a computer messes up like that and I'd like to thank that CS1 on help. I'll give you what skill a little bit. It's certainly a very handy life skill since computers are everywhere. So finally let me list of. Classes where thing, things you might want to study after CS101, I have bad news about this. There is not a class which I think is really a good fit to just be right after CS101 there is just one that I know of so I'm not going to recommend the specific one but there's a lot of research and activity in that area. Someday day maybe I'll create one but I'm done yeah. So I'm just going to mention things that you could look at sort of Poseus point of view. So one thing I'll mention is spread sheet. Spreadsheets are very commonly used to organize data or do computations or whatever; you probably, probably heard them. So the next time you see a problem where someone says oh hey, we could do a spreadsheet for this I'd say, you might want you know, you could consider. You might want to take a shot of that. The sort of "programming in spreadsheets" is not that different from what we've done. Microsoft Excel is a super popular spreadsheet but it's not free. The Google Docs spreadsheet is free and actually it uses JavaScript which is the language we've been using so. Is just so I guess have a question of, of confidence of being open like, be open to reading the docs and reading some examples I'm trying to use them specially I think would not be much a lot of them from what we've done and they're very common. Very commonly used for, for problems, for problems like that. So another next step is to take a sort of your general college introduction to [inaudible] course. A lot of colleges just have this and I think some high schools to. So Cs101 is not a general programming course. I had the analogy somewhere that it's as if there is this island and it has. Hundred miles of trails on it which represent all the different types of program you might want to do and a way when a time with CS101 is I've, I have very carefully chosen fifteen miles of trail. So, I've showed you, you have seen real programming issues. You definitely have the sense of what bugs are, what those are and those are absolutely vital core programming and of course, you, you have done them [inaudible]. However There is the 85 other miles all sorts of stuff. I didn't talk about it. I sort of constructed my examples and the way the lectures work to just carefully use the things I talked about and not trying to get distracted by all of the stuff I didn't talked about. So you just know. That's kind of CS101 leave you versus the regular program and c ourse. In a way you've been a nice head start. You've seen all these computer stuff. You have seen loops or whatever setting. You have got a bit of a tail end. Going to it, general programming course You would expect it to move faster than CS101. I was pretty, I tried to keep CS101 at a pretty measured hay anybody can do this. I don't want to be able to, stressful experience. So you, you would expect a bump up in the speed but certainly something I'm sure many of you would enjoy doing. So something about I'm just going to mention a couple other, a sort of specific type of programming that people talked about. So HTML five or first to web page programming that's done with HTML, Javascript and CSS. We've done JavaScript in CS101 but I gotta tell you, the JavaScript for web pages is going to look more complicated, have more going out. We, we do this very stripped down very focused type of JavaScript. So, for lot of these kind of topics that I mentioned here. A, the [inaudible] college students when we think about it is that you take the General Programming course to just sort of get a general loop statement sort of experience to have a sort of generic ability and then you make the specialized and learn about web pages or something. It happens when programming is not that hard and so it's possible to just to skip in the web portal in like just have a HTML five or whatever. Of course and just sort of just learn the Javascript in the contents to that. So. Other than that, I've gotten questions about sort of various areas and I, I, I find it hard to identify anyone in particular I say, yeah, there's phone programming, game programming, finance programming and science programming, that, that, that. What I can tell you is. It's a huge field. There's at you know, science, air dynamics, finance, I mean, any, anything you could mention. There's, there's computers going on and generally, it's regard to there's tends to be a shortage of people and so if you are interested about computer, you know, if you learn about computers and y ou want to work with, anyways, there's a good chance that you could. There is demand for people who know that stuff. So I guess I have to sort of summarize the, the course here so I might claim at the very start of the class was the CS1, CS101 teaches the essential qualities of computers by playing with code. You've certainly played with a lot of code at this point so I hope that sort of holds up my fear Is that people go through life. They use computers all the time but they see the computers are sort of opaque and not comprehensive but something they could never understand and I hope I hope I have put that down. That you can sort of see through the other side and appreciate oh The computer is working this way and then I can know this sort of thing, Whatever so just sort of pretty in context of how computers work in your life. So as I said before I also hope that, with that knowledge CS101 gives everyone a little bit of confidence and maybe a little bit of patients to work with their computers and kind of get them, get computers to work for them. They are, as what I've said they are stupid mechanical but. They're also incredible useful. Alright, take care.