Subtitles section Play video
-
>> [MUSIC PLAYING]
-
[MUSIC - ROSSINI, "RANZ DES VACHES" FROM WILLIAM TELL]
-
>> [MUSIC - THE ENGLISH BEAT, "MARCH OF THE SWIVEL HEADS"]
-
>> [APPLAUSE AND CHEERING]
-
>> DAVID MALAN: So this is CS50.
-
My name is David Malan.
-
And 73% of you have no prior experience with computer science,
-
contrary to what you might think.
-
So today we thought we would chip away at that lack of familiarity, but also
-
give you a sense of, for those of you with more comfort, which directions
-
you can go this semester.
-
>> So let's start with this.
-
I really have no idea what's inside of a computer, even though, like you, I
-
use it every day.
-
But it's some kind of box, and there's not many inputs into it.
-
Minimally, there's, what?
-
Probably a power cord.
-
>> And indeed with this one ingredient, electricity, we seem to be capable of
-
doing quite a bit these days.
-
But at the end of the day, we have to represent the things
-
that we care about.
-
We have to represent information in some form.
-
And you're probably at least vaguely familiar with the idea by binary or
-
bits somehow or other, computers reduced to zeros and ones.
-
But can we embrace that and at least put a bit of light to that?
-
>> So I have these little desk lamps here.
-
I have an electrical outlet here.
-
And I'm going to propose that inside of my computer is at least one of
-
these things, something capable of being switched on or off.
-
In this case, it's indeed a desk lamp, but at the lower level, it's something
-
called a transistor.
-
>> But in our world, it's a desk lamp, so I'm going to go ahead and plug this
-
into my electricity here.
-
And I claim that using this simple, simple device, this simple switch, I
-
can represent information.
-
For instance, right now, I am representing nothing, right?
-
I'm representing what I'll call 0 or false, the opposite of something
-
actually being present.
-
But if I simply turn this switch, now I've represented a 1.
-
So using this very simple piece of memory, if you will, I can represent
-
information.
-
>> Now unfortunately, my computer can't do all that much.
-
It can only represent two values in the whole world--
-
0 or 1.
-
But what's an obvious solution, now, if we want to expand our computer's
-
memory and represent more than just 0 and 1?
-
>> Well, let's grab another such bit.
-
Let's grab another switch, another transistor, however you'd like to
-
think about it.
-
Let me go ahead and plug this into my computer as well.
-
And I'm going to claim, now, that by using a bit more electricity and
-
turning more of these switches on and off, I can represent more such
-
information.
-
>> So right now, this is 1.
-
If I want to now represent 2, I could do this.
-
But typically, convention, as we'll eventually see, will have me do this.
-
So this is 0, this is 1.
-
This would be 2.
-
And not surprisingly, this would be 3.
-
>> So in this way, still, can we count up even further?
-
If I get a third bit, a third switch, what's the highest number I can now
-
count up to from 0?
-
So 7 if I'm starting at 0, right?
-
Because if I turn this light on and actually plug this third and final
-
light into my electrical socket here, then I have the ability to represent
-
any of two values here, two values here, two values here--
-
and so I can represent 2 times 2 times 2, or eight possible values.
-
And if I start accounting at 0, so that's 0, 1, 2, 3, 4, 5, 6, 7.
-
>> So this binary.
-
It really is as simple as that.
-
And I'd argue that this is actually quite familiar to most
-
everyone in this room.
-
Let me go ahead and open a little text editor here.
-
>> And you might recall from grade school that we had things like the hundreds
-
place, the tens place, and the ones place.
-
And recall that if you had some decimal number, like something random
-
like 123, you would essentially write that out in the form
-
of these three columns.
-
And why is 1, 2, 3 what we know as 123?
-
Well, in the leftmost column, we have one 100 plus two 10s, so that's 120,
-
plus three 1s, so that's 123.
-
>> Now this world that we just illuminated is exactly the same as
-
you've been familiar with for years, except now, our columns
-
aren't powers of 10.
-
They're just powers of 2.
-
So whereas that's the ones place, this is going to be the twos place, this is
-
going to be the fours place.
-
>> And because I am only using the simplest of mechanisms to turn things
-
on and off-- electricity is flowing or electricity is not flowing--
-
I don't quite have the same expressive range as 0 through nine.
-
We're going to keep it super simple in this world of computers.
-
I only have 0 or 1--
-
off or on, false or true.
-
>> And so what I'm representing right now is 1, 1, 1, because each of these
-
lights is illuminated.
-
Well, that gives me one 4 plus one 2, so that's 6, plus one 1, and that's 7.
-
And ergo does this sequence of three bits represent the number 7.
-
>> So all this time, inside of your computer, have been any number of
-
transistors, any number of bits.
-
But at the end of the day, we can represent information
-
as simply as that.
-
Now unfortunately, we've only counted up to 7 in CS50 thus far, but
-
hopefully we can do a bit better than that.
-
And indeed we can.
-
>> Suppose that we as humans just arbitrarily decided that we are going
-
to associate numbers like 1 and 2, 3, 4, 5, 6, 7, with specific letters of
-
the alphabet.
-
And for historical reasons, I'm going to start somewhat arbitrarily, but I'm
-
going to say, humans, we are going to decide as a standard, globally, that
-
65 represents the number the letter A. 66 will represent B. Dot, dot, dot.
-
90 will represent the letter Z.
-
>> And let's suppose, if we really put some thought into it, we could come up
-
with numbers for exclamation points and lowercase letters, and indeed,
-
other people have done that for us.
-
So now we had bits with which we can represent numbers, numbers with which
-
we can represent letters, and with letters can we now start composing
-
emails and printing characters on the screen.
-
>> So let me invite, if I could, eight brave volunteers--
-
who don't mind appearing not only on camera but on the internet--
-
to come up here and represent eight such bits, rather than these three.
-
So how about one, two?
-
How about three?
-
How about four in light blue, five on the end?
-
About someone over here?
-
Six in front, seven in front, and eight in front, as well.
-
>> So I just so happened to come prepared with a whole bunch of slips of paper.
-
And on these pieces of paper are numbers that represent what columns
-
you guys are going to represent.
-
So you will be-- what's your name?
-
>> STUDENT: Anna Leah.
-
>> DAVID MALAN: Anna Leah, you will be the 128s column.
-
You are?
-
>> STUDENT: Chris.
-
>> DAVID MALAN: Chris will be the 64s column.
-
You are?
-
>> STUDENT: Dan.
-
>> DAVID MALAN: Dan will be the 32s column.
-
>> STUDENT: Pramit.
-
>> DAVID MALAN: Pramit will be the 16s column.
-
>> STUDENT: Lillian.
-
>> DAVID MALAN: Lillian will be the 8s.
-
>> STUDENT: Jill.
-
>> DAVID MALAN: Jill will be the 4s column.
-
>> STUDENT: Mary.
-
>> DAVID MALAN: Mary will be the 2s, and?
-
>> STUDENT: David.
-
>> DAVID MALAN: David will be the 1s column.
-
So if you guys could step a little forward so that everyone can see.
-
What you guys don't see is that on the back of these slips of paper is a
-
little cheat sheet that's about to instruct these eight bits to either
-
raise their hand or not raise their hand.
-
If their hand goes up, they're representing a 1.
-
If their hand stays down, they're representing a 0.
-
>> Meanwhile, we the audience should be able to figure out, based on this
-
mapping, what three-letter word these folks are about to spell out.
-
So in just a moment, you're going to read the first line off the back of
-
your cheat sheet, and you're either going to raise or not raise your hand.
-
If you're a 1, you raise, if you're a 0, you stand there
-
awkwardly, just like that.
-
Go.
-
What number, first and foremost, are these guys representing?
-
>> 66.
-
66, right?
-
We have a 1 in the 64s column, a 1 in the 2s column.
-
That gives me 66, so that appears to be representing B. So
-
you guys have spelled--
-
OK, that's enough.
-
B.
-
>> So now let's move onto our second letter.
-
Go.
-
Who's quickest at math here?
-
So 79.
-
Again, if we add up all of the columns in which there's a 1, currently, just
-
like we did before with the simplest of examples of 7, we now
-
get the number 79.
-
Which according to our mapping is the letter O. So we're almost there.
-
B, O. And lastly, go.
-
>> What are they representing now?
-
Less consensus.
-
That's just an absolute murmur.
-
Yes, it's in fact 87.
-
Good.
-
>> So if we now map that back up to-- let's start calling our ASCII chart,
-
American Standard Code for Information Interchange.
-
That gives us the letter--
-
not "bo" but "bow." And that's a perfect cue for you guys to take a bow
-
and head on back.
-
Thank you very much.
-
>> [APPLAUSE]
-
>> DAVID MALAN: You can keep them.
-
Though actually, would anyone like a desk lamp, also?
-
>> [HOOT FROM AUDIENCE]
-
>> DAVID MALAN: Desk lamp?
-
>> [LAUGHTER]
-
>> DAVID MALAN: Really?
-
Desk lamps for everyone?
-
All right.
-
So starting with the very simplest of principles, we've now not only counted
-
up from 0 all the way up to 7, we've assumed that just by throwing more
-
bits or more lights or more transistors at this problem, we can
-
represent bigger and bigger numbers, and ergo, bigger and bigger ranges of
-
alphabets, like English.
-
And just let's take on faith for today that similarly could we start to
-
represent graphics and video and any number of other media with which we're
-
familiar today.
-
>> So this is CS50, and in this class alongside of you are, again, very many
-
classmates who have as little experience as you.
-
And I mention this only because quite often, including as recently as one of
-
the freshman advising events and at last spring's sophomore advising
-
event, we often hear students disclaim when coming up to the CS table, well,
-
I've been thinking about taking this intro class, but I'm not really a
-
computer person.
-
Or, but everyone surely knows more than me.
-
And I put this in the biggest font possible, to convey this message that
-
that's not in fact the case.
-
>> And if you're wondering, should I, in fact, be here?
-
Realize that not only is this course's title Introduction to Computer
-
Science, it is Introduction to Computer Science I. So there is indeed
-
a second such introduction.
-
So you're not, in fact, in the wrong place.
-
And among the goals I have for today are to assuage any such concerns you
-
might have, but also to paint a picture of what's in store for
-
students less and more comfortable alike in this course.
-
>> But first, a word on one of the handouts you have today, among which
-
are a number of FAQs.
-
It's been a vision of ours for some time now to introduce a new grading
-
option into this course-- namely, SAT/UNSAT.
-
Philosophically for me, it is much much, much more important that the
-
students in this class engage with the material, be challenged by the
-
material, and worry far, far less about the mechanics of actual scores
-
and letter grades at semester's end, but truly embrace the
-
course and its material.
-
And really this feels, more generally, for what's interesting to them, to
-
feel challenged and rewarded but without fear of failure.
-
>> And indeed, this too is a recurring theme in this and other introductory
-
courses in other fields, that you have this trepidation when it comes to
-
putting one's toes in unfamiliar waters.
-
I myself, back in 1995, was a freshman.
-
I was very much focused on being a Gov concentrator here.
-
And yet I'd always grown up with a bit of an interest in computer science.
-
I was always curious.
-
>> But back then, even, I had this fear of even stepping foot in CS50, so much
-
so that I didn't even shop it freshman year.
-
And the only reason I put a foot in the door sophomore year was because I
-
was allowed to take it pass/fail.
-
But even pass/fail required that I get up the nerve to make an appointment
-
with Professor Kernehan at the time, bring this big sheet of paper, and ask
-
him for his signature and his permission to explore
-
these unfamiliar waters.
-
>> And it hasn't helped in recent years that when doing this in CS50, when we