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.