So for this section, I'm gonna talk about
sort of off start questions that people
posted on the forums. So I'm really glad
people post all sort of questions and
discussions whatever. I'm sorry I can't
talk about all of them. I just have to
pick some of them. And I'll made this kind
of simple outline of what am I gonna say.
So the most popular topic in a sense was
well what can I do after CS101? Where
should I go? What about this language that
language, whatever and I'm not gonna
answer right now. That would be, I promise
I will talk about HTML5 and phone
programming and Java and Python all that
sort of things. I will talk about in last
week. We'll have an official section about
that so I'm not talking about that today
so that's get [inaudible] questions. So
all an out, I was gonna through, you know,
some like shows up, that's interesting, So
Margaret Imber asks essentially how, how
do you produce this stuff and what kind of
goes in to it. First of I should say I
feel like the technology, I mean, it works
but I also feel like the whole Online
education areas so hot that I'm sure ten
years from now will be just light years
better, But The way CS101 is produced and
it works pretty well and it's actually
fairly simple. So, I write for each
lecture, I just write straight HTML which
is the, the sort of standard language of
web pages, pages And, and there's a thing
called CSS that is used kind of style with
pages and stuff, the font, the color and
stuff. And then I'll just have JPEG and
PNG images which are also standard and
I'll put those in the pages and that's
what the, that's what the lecture
practically looks like. This program
called OpenOffice, the free office suite
or recently, there's a new version called
LibreOffice, Which is like, talk about
nerves coming up with not good product
names. I think LibreOffice is not a good
name. Anyway that includes a free drop
program and so that I just use a free
program to produce the rectangles and
boxes and whatever. Just as inside I think
I will mention if you're ever pro ducing a
document where you're trying to explain
something I mean diagrams are just so
awesome/ And I think a lot of authors or
teachers feel sort of inhibited like oh
well, I'm not gonna make very good artist,
not gonna look that great. And so there's
inhibited to where they just don't do it
or their in words end up trying to paint a
picture on words on what the thing is. And
I got to say. Just make a diagram. Just
use your crummy arts skills and don't feel
uninhibited about being criticized and
just make a simple little diagram and that
is much better. Anyway, that's what I do
so that will end up with this fairly crude
looking diagrams I'll sprinkle all through
here. So, just in, in terms of producing
the videos, I was thinking like sometimes
we'll, we'll hear a story where someone
says oh well, you know, I have this tire
in my car and it blew up and I was almost
killed and you're like oh, what kind of
tire was it? And well, he'll say well I
don't wanna say it. That's lame, whatever.
We should give credit or you know,
criticism or say so I'm just gonna say
what technology would [inaudible] a little
picture. So to produce the videos. So this
is what a typical set up looks like. So
I'm sitting on a laptop and I've got here
the HTML page open. I'm just gonna end up,
obviously I'm just gonna scroll through it
as I'm talking about stuff so then for the
sound, there is this company Blue that
makes a bunch of microphones. These USB
microphones, just plug it in your computer
and just we've been using that. Seems to
work pretty nicely and then the video of,
of the talking head is just this Logitech
HD camera which also seems to work pretty
nicely and also USB. So, you just plug in
here, And then finally, we use on the Mac,
we use a software called ScreenFlow. This
seems that, it's pretty easy to merge
together the picture of the desktop you
know showing the computer screen and
merging the talking head and the sound and
then you know, I'm trying this and so I'm
pretty happy with that. Alright. So yeah,
that's how we pro duce that I should say
then Corsera has its own kind of internal
technology for how it does the exercises
and whatever. That's. I'm sure that's
gonna change a lot and get better but it
works. All right, another question, we
have Roberto Lopez asked about nested If
statements and or logics or the natural
from last week is kinda a natural
question, a great question really. It
turns out. That's the topic this week.
You're gonna see all sorts of, it turns
out the syntax for that is this and our
but that's in the so and as two ampersands
or this two vertical bars and that's,
that's all through this week's lectures
and it'll come out more than you want on
the on the weekly exercises so good
anticipatory question there. Also just
nested statements put one statement inside
of another. Turns out it's kind of like
end cause you end up having the first test
and the second test have to be true. So,
anyway just check it out. Another question
was about a syntax, computer language
syntax so moving, doing the waiver asked
questions about syntax, cuz one of the
people mentioned it. So I know that it's
just CS101 sort of going from no
programming to some programming. This
syntax maybe is very, it's very sort
interface I like to use, it's kind of
annoying. I'll tell you all computer
languages have this sort of fixed syntax
and ultimately I think it is not an
accident that the fixed sort of rigid
syntax is ultimately an excellent way to
communicate with computers. So honestly I
don't see that going away. You'll get used
to it. I, you know, I work with computers
all day long, all sorts of different
syntaxes and I never, I never feel like
oh, this syntax, oh this really
interfering with my ability to express my
ideas. You know what, it's like at some
point, I just got used to it, that's what
computers are and now I just work with the
[inaudible] system very comfortable. So I
don't know if that's a good news. But
that, that's my honest take on that, this
is syntax. Chris [inaudible] points out
there's a system called Scratch that enab
les you to do some sorts of programming
but without syntax where you sort of drag
and drop these little blocks around the
represent logic. There's also some of
named as Alice system where you have these
3D things that kinda run around and that
also doesn't use syntax. So those are
experiments in this kind of programming
space. Well, could you show people
something about logic you know, let them
play around and learn about computers but
not get [inaudible] syntax. Realistically,
my take is, is different from the Scratch
[inaudible] system where my take is that
very introductory students can deal with a
little bit of syntax and that is, that's
my that's my attempt at this problem. But
these non-syntax systems are very also
popular and it's just, you know, you have
to kind jump through a lot of hoops and
stuff to make things work without syntax.
Also, ultimately I, I put my, my bet, on
you know, let's try to make some syntax
work and then honestly it remains to be
seen which works better and obviously,
it's just can be different for different
audiences. You know, if I had. First
graders I would think yeah, maybe the
syntax is too much. Maybe I would try
something else. But anyways, this is a
courage area of research, how that's going
to work out Anonymous person asked what is
the real syntax for a Javascript
portfolio? So I've mentioned here and
there, I should do this in the last
section as well that, mostly we're doing
Javascript but you've got this sort of
nick extensions on the front of them so at
the end, I'll need to expose what is, I
can help with the. So All computer
languages have some syntax for this idea
that you have a big group of things and
you wanted just essentially loop over
them, You wanna do some operation for each
one. So here's a good syntax for that.
Four pixel cone image, that's the syntax
we've been using. And actually that is
pretty much the syntax that Java uses and
actually very close to the syntax that
Pipeline uses and that's very popular
languages. It happens ironically this is
not the syntax that JavaScript uses.
Javascript just by historical accident
Doesn't have a good syntax for this very
common case. I think this one of the very
unfortunate things about a Javascript. And
you may ask, well why they don't just fix
it. It's a little bit, you know, once a
language is out there and millions of
lines and codes have been written, they
can't just change so we'll have it
[inaudible]. It's certainly like. If
England decides, you know, it really would
be better if we all drop on the right had
inside [inaudible]. Yeah but they've got
all of these roads and all these cars.
There's all the stuff in place where they
can't just switch. And so, when I say
something is sort of stuck as historical
accident, that's when [inaudible] it
happens with the Javascript. History was
unkind. It has many nice qualities but
this one is terrible. So anyway, what is
the syntax? So the syntax begins 4i or
this could be any variable you want, 4i in
image. So you're gonna loop i over the
image but unfortunately in this case you
would think i was gonna be the pixels
themselves but its not. It's an index into
the image and then so then your next line
would have to say pixel = image square. So
you take this index, you got here, used it
in the square back of an image and the
neck gets you to pixel up. Anyway,
obviously this is not gonna come up for
CS101 but that, that's the syntax. There's
a couple syntaxes in Javascript but
that's, that's probably the last one. Now,
if you're writing a lot of code in
Javascript, you know, I am obviously, I am
a little saddened by this kind of lame
syntax but you know what, when are looping
over stuff is very common and at within
the day, you could just get used to like,
okay well, that's what we have to do it
and that's not gonna be a [inaudible]. You
could manage that. Alright, Another
question I really liked from Dave Pittman
and Chris Posner was this question of well
if you have a zero or one or whatever in
the computer how does it know. If its part
of a JPEG you know, maybe its part of t he
red color or it's a, it's a letter in the
e-mail or something. How, how does that
work? So the way it works, draw a little
picture here, is you can think of RAM is
a, there are billions of bytes in RAM and
the bytes are just laid out in an unmarked
uniform field. It just starts at you know,
the zero byte runs all the way through the
end and there's no distinctions about
anything. They're just all bytes. So, the
way it works is that the software which is
manipulating RAM lays it out by area and
the software knows which byte it's gonna
use for which purposes. So, let's say here
is this big bunch of bytes and so let's
say I'm in a. You know a byte, you know my
example was it could be part of an RGB
image or maybe it's a single type letter
so let's say it's a single type letter. So
maybe, the program, it has all this RAM
and it all say well, these bytes here you
know it's you know there's 10,000 bytes or
something. It says I'm gonna use these
bytes to hold an e-mail that someone who's
typing in And so it's could sort do it by
area. So it marks off that area and says
this is an e-mail here. So then as the
user types in the letters of the e-mail.
So the letter a or something or letter t
or something or whatever then maybe those
bytes gets set in here. It sets the 0s and
1s to be the number for the letter a or
the letter t or whatever and so then later
when the software looks at this area it
knows, alright this is the areas set aside
for e-mail so I know. To it I know to
interpret these bytes by letters. Or also
you can imagine if the program said, okay
I'm gonna store the RGB image here. That's
where I'm gonna use these bytes for. And
that's a little more complicated because
it would even need to know what the
scheme. So, the scheme usually is gonna,
is gonna have the red number followed by
the green number followed by the blue
number. For each pixel so it'll be, it'll
sort of follow this three by two time
pattern and this [inaudible] details. So
it would know that maybe that's a red
number you know, zero to 55 and then it
would know that maybe that's the next red
number. So the point here is that, if you
look at the chips, the bytes, it's just
undistinguished. So, it seems to give you
know to hold. The way the software is able
to work coherently, essentially having a,
a pre-plan about, for this area bytes is
gonna be used and such and such way and
just might be consistent with that plan
when setting the bytes and then later when
we [inaudible] back. You can also say in a
way that the, the part disk, the flash
memory is also the same. Right at the, the
hard drive likewise, it pretty much just
looks like a big bunch of bytes. And so
the software would need to know oh,
something about other file like JPEG. Oh,
I know that in that I stored the bytes for
RGBM image or, or something. It needs to
have some plan so then when it gets the
bytes back, it knows how to organize. All
right, So oh, sorry, it's our last
question. So sort of about the question of
what does it take, what, what, what would
do you wanna do if you wanna be a CS
major? Salvardor Diaz. So I'm gonna have
someone [inaudible] answer for this
question. So the first thing that you
should know is that most colleges do not
require, if you want a major in CS. Don't
have some requirement when you come in
with programmability. So and for example,
it's Stanford. The Stanford CS106A course,
it's an excellent course. It's fairly
difficult but there's an enormous amount
of support, there's tons of office hours
and all those help so people have a lot of
different abilities and all get through
it. That course requires no experience or
whatsoever. So it'll show up and then that
is a full programming course. So, CS101 is
not a full programming course, it's kind
of a sampler, I'll describe this more in
the last week, 106A is a for real pretty
demanding really important question, ten
weeks. So, What does this mean if you are
a pre college and you just sort of think
about this? Well, one answer and I talked
to a couple of colleagues in Stanford
about this. One answer is, well, you might
just kinda do well in Math and Science and
English, whatever. Just courses that
colleges look at just to get in to college
and all, that, that's maybe good
background goal. Now I'm gonna take that
part a little bit and say. I don't think
it is that important in particular that
you do well in Math and Science to take
CS. That's maybe partly controversial.
Obviously Computer Science involves. Doing
some math and sort of organize logical
thinking Like you know if you happen to
hate biology or actually even if you
dislike calculus. I don't see that's being
a big for CS. I think computer science in
some [inaudible] is what on you, you've
got in a real sense of what sort of, there
is math and there is logical thinking but
I think it's a little bit a thing into
itself. If someone has done very well with
calculus or very well in physics, I mean
that's fine. I mean it just shows that
their you know, their brain is good at
working at stuff and sure that's gonna be
useful for computer science. But I think
it is more sort of the historical accident
that physics or in my high school calculus
was regardless very important advance
thing to do Whatever. I mean its fine. If
you get to use your brain and you practice
something you're interested but I wouldn't
link it to a computer science exactly. So
what is going to help you with computer
science? I'd say the most important thing
for computer science and not everyone
agrees with this but I feel it's true is
programming experience like playing, and
programming doesn't have to be some big
heavy weight thing but I think playing
around with computers in a meaningful way.
Gives you a stronger intuition about how
they work with the boundaries and
obviously CS 101 very much fits on this
pattern. So there's many things that you
could do with computers that I think help
sort of feeling those instincts. I think
the, the key feature is having some sort
of real project, your typing and clicking
in the computer creating something that
[inaudible] at have some visual upload
that you ca N. Change it in some way and
then get slightly different output. I
think those are the, those are the key
qualities. It's possible for someone to
just self motivate like get the book on
whatever and then play around on your own
but I think that's, that's just difficult.
In a sense this is why courses exist like
well, even if maybe you have the ability
to play around with a robot or whatever,
it's just much easier if there's someone
setting kind of a weekly case and give you
little goals [inaudible]. So that said,
I'm just gonna mention a bunch of sort of
computer related things that I would think
would be useful or if I was talking to
high school person who is interested in
maybe doing computer science. Just so in
no particular order so there, there's a
chip I showed earlier, the Arduino,
Arduino is set up for doing such a little
art projects with little blinking lights
or switches, whatever sorts of physical
thing. It's not software just down the
screen of your computer and there's a lot
of blue books and kits or whatever.
Essentially to play around with the
Arduino it's kind of fun. It has some sort
of a hands on feeling and it involves a
little, a little bit of programming. So
that's it. Random thing, something in
credit There is in the US. I don't know if
it's international. Not sure. There is a
computer science high school course. It's
in Java. It's a fine class. There are lots
of books and online resources or whatever
that I happen to fit in the material and
some high schools have it but some don't.
I mean I think. That's why colleges
realistically should not expect some prior
experience cause where, you could have
great, you know, world's greatest high
school students but whether [inaudible]
have it. Well high school people are
planning out for robotics is sort of like
Arduino you know, it kind of a fun, hands
on, way to play around computers. I can't
remember a couple of some sort of the
weaker forms spreadsheets you may have
heard of spreadsheets, Spreadsheets
actually have in them a simple language
for the Google spreadsheet than it is
actually a Javascript which allow you to
write a little short bits of code that
they do really interesting in [inaudible]
with data adding things up or computing,
you know, something like computing. So
next time you find yourself in the
position where you got some big ton of
data or, you know, part of your Biology
class or Club or something I would say I
would be open to, oh, you know what I'm
gonna go read the docs and gonna try and
use the spreadsheets to do this rather
than by doing this by hand or something. I
think that's an example of pushing
yourself to use the computer. In something
that looks like code but I think it's
beginning, it helps to fill out that scale
set Just sort of make that stuff work.
Notice the one example is some games have
a level editor that's maybe a kind of a
reduced form of programming but the level
does have a kind of a logic to it and so
you could play out the level editor and
then play it sort of yeah, yeah, yeah,
yeah, sure. I think that, that is getting
you some insight about the. The formal
instruction of the computers So as I said,
anything where you're, you're using your
brain and seen there was also doing
adjustments, I think is, is a good
impression for doing something you could
do. All right, So, thanks again for all
the people who are sending questions. Like
I said, I'll have the, the What Could You
Do After CS101 will definitely be a, a
last week topic. All right Take care.