>> [MUSIC PLAYING]
>> SPEAKER 1: It's CS50, Harvard University.
>> [MUSIC PLAYING]
DAVID J. MALAN: [INAUDIBLE] is probably in the latter half of the phone book,
I can now tear the problem in half.
That was actually real, that struggle.
>> [MUSIC PLAYING]
>> SPEAKER 2: You humans are so easy to beat.
>> DAVID J. MALAN: All right, this is CS50.
This is the start and the end of week 12.
And you may recall that in week zero, this
is the messaging with which we began, that it doesn't matter where you end
up relative to your classmates, but where you today,
and maybe just a few weeks from now, end up relative to yourself some weeks ago.
>> And in fact, we do hope after so many problem sets, and so many hours,
and a couple of quizzes, and still with the final project,
that you do feel particularly proud having come all the way from week
one where this, perhaps, was the earliest of struggles,
whether in the standard edition or the hacker edition thereof.
And I would propose, that at some point in your free time, that you go back
and see your PHP, your JavaScript, and see
if you can't implement this far, far faster and more comfortably
than you once upon a time did ago.
>> Indeed, after this, recall you did cryptography, you did the game of 15,
you did forensics challenges, you did the fastest spell
checker that you could, you did CS50 finance, the CS50 mash-up,
and then now, ultimately, your own final project.
And so today, we try to get closure, and look at where we've come,
and where we're going.
And just to reassure too, that once all of the remaining training wheels
come off, you pretty much have sufficiently many tools
in your tool kit to now go off and do most
anything in the world of programming.
>> Certainly considering taking some higher level course can be of advantage.
But realize too, that even if this is the last CS course you take, realize
that on Mac OS, there's so many different tools
that you can use independent of having to use something like the CS50 IDE.
Nearly the same tools exist for Windows, for Linux, and more.
And indeed, one of the goals CS50 in using this fire hose of languages, C,
and PHP, and Sequel, and JavaScript, and HTML, and CSS,
is to really make sure that you don't exit this course
thinking, I learned c, but rather that you learned how to program,
and that you understand a little something about computer science
itself.
>> In fact, even though we haven't looked at all of the following languages,
it's fun now to enter this community of folks who find geeky humor funny.
And even though some of the languages you're about to see
might not be totally familiar, you'll at least
get a few chuckles from at least one familiar language, JavaScript.
This was a talk by a particularly well-versed programmer
some time ago entitled, Wat.
And we thought we would give you a glimpse at how computer scientists tend
to think, or at least talk.
>> GARY BERNHARDT: All right good.
You guys know what wat means?
Wat.
Exactly, exactly.
Let's talk about Ruby.
In Ruby, if you reference an undefined variable, of course
it NameErrors, as you would expect.
And if you try to assign b to a with them undefined, of course
it NameErrors, as you'd expect.
And what happens if you try to assign a to a, with a undefined?
>> AUDIENCE: Nil.
>> GARY BERNHARDT: Correct, nil.
Wat.
>> [LAUGHTER]
Let's talk about Ruby.
Ruby, unlike some other dynamic languages, does not have bare words.
So you cannot just type words in, and have strings come out unless you define
a particular method_missing that does the right thing.
And then, if you type bare words, suddenly, Ruby supports bare words.
And in fact, it will even support bare words with bangs in them.
And this is not deserving of wat.
This is actually a result of how awesome Ruby is.
But if you ever actually do this, then, wat.
>> [LAUGHTER]
>> Let's talk about JavaScript.
Does anyone know, in JavaScript, what array plus array is?
Well, let me ask you this first, what should array plus array be?
>> AUDIENCE: Empty array.
>> GARY BERNHARDT: Empty array, I would also accept type error.
That is not what array plus array is.
Wrong, wrong, array plus array is empty string.
>> [LAUGHTER]
>> Obviously, I think that's obvious to everyone.
Now what would array plus object be?
This should obviously be type error, because those are completely
disparate types.
Does anyone know what this is?
>> AUDIENCE: False.
>> GARY BERNHARDT: No, close, no, far away.
AUDIENCE: It's object.
GARY BERNHARDT: It's object.
Yeah, right, nicely done.
>> Now, of course, because this is plus, you can flip the operands
and the same thing comes out.
So if we do-- what?
No, that's just an object.
If you do object plus array you should get exactly the same thing.
Which as you can see, you do.
>> [LAUGHTER]
>> And finally, the only one of these that's actually true
is-- because you add arrays and you get empty string, it doesn't make sense.
But an object plus an object is actually not a number, technically.
>> [LAUGHTER]
>> So this one's actually right.
Exactly, right, like what is even going on in this lang-- I just,
I don't even understand what person with a brain in their head
would think that any of this is a good idea.
>> [LAUGHTER]
>> OK, OK, enough making fun of languages that suck.
Let's talk about JavaScript.
>> [LAUGHTER]
>> If I say array dot new 16, or just array(16),
I get an array of 16 things, which it represents
as 16 commas, which is obvious.
If I then join those with a string, then I get the string 16 times.
This is actually the only line in this entire presentation that's reasonable.
Now, if I take that string and then add a 1 to it,
it interprets the 1 as-- casts the 1 to a string,
and then we get wat1 a bunch of times, fine.
Does anyone know what will happen if I subtract 1 from the string?
>> [LAUGHTER]
>> I'm assuming no one does.
Let me-- I'll give you a hint.
Does this help?
Does anyone know?
>> [LAUGHTER]
Watman.
[LAUGHTER]
That's all I got.
Thank you guys.
>> [APPLAUSE]
DAVID J. MALAN: Let's take a quick look at some of the things ahead for you.
So the CS50 Hackathon is this epic all-nighter,
during which you, and your classmates from Yale, will dive into--
but hopefully not begin-- your final project.
The evening will begin at 7:00 PM.
First dinner will be roughly at 9:00 PM.
Second dinner will be at 1:00 AM.
And then, for those still standing, breakfast
will be served at IHOP at around 5:00 AM.
>> You might see such scenes as this.
As promised, in week zero this year, we'll
have not only food, and dinner, and candy, but also for the second time
in history, vegetables.
But around 3 or 4 AM, scenes like this are not all that uncommon.
Indeed we see our fair share of pillows being brought to the Hackathon, which
is fine as well.
And then the climax of the course is the so-called CS50 fair.
There's one both here, and in New Haven a week after.
The one at Harvard is Monday, December 7,
during the afternoon in Northwest Science.
>> And upon arrival, you will check in.
And you will see such things as popcorn, and balloons,
and ultimately, as of last year, over 2000 people coming
to see your final project, students, staff, and faculty
from across campus and even off-campus.
And if it weren't enough incentive to come see you yourself,
realize that your friends can be encouraged
to come to see Asana, and eBay, and Facebook, and Google, and Microsoft,
and Palantir, and Quora, and others, recruiters and alumni
from these various companies to talk about life in the real world,
opportunities both full time and summertime in the actual industry.
>> And if that weren't reason enough to come see you,
your friends can be encouraged to enter the raffle whereby, upon arrival,
you as students will each be handed a bunch of smiley face stickers.
And attendees, like your friends, will be handled a little raffle card
upon arrival.
And for every person they chat up, they will be
handed, by you, a smiley face sticker.
Each of which represents an entry into a raffle with fabulous prizes,
among them an Xbox, a Wii, and a whole bunch of other fun things,
some of which we've seen here in class.
So stay tuned for that.
>> But ultimately, it's entirely about the accomplishments
this semester, and the expressions, and excitement
that you will stir in those attending.
Where you, ultimately, are wearing your very own-- this,
I took CS50 t-shirts like that here.
So do encourage your friends to head to this URL
here, which will send you to all details therefore.
>> Meanwhile, if you're considering another look at computer science this spring,
or beyond, realize that this is the same handout-- albeit updated since week
zero-- that we handed out.
And if you go to the middle of this booklet--
there's copies in the transept outside-- realize this shows you
via arrows exactly what courses you can go off
to explore this spring, next fall, summertime, and beyond.
So do take a look at the chart therein to get a sense of things.
And if you'd like to get involved in other capacities,
do know, if you don't already, that the College Board-- which
you may have some not so fond memories of--
has nonetheless just creating a new curriculum framework called AP Computer
Science Principles.
Something you might have taken, or at least heard about,
an existing CS course at high schools called
APCSA, which is a fairly mundane class that
focuses way too much on the language Java and the mechanics thereof.
>> APCS principles, meanwhile, will be more about ideas, and more
about problem solving.
And toward this end, we, a bunch of our friends at UC Berkeley, at co.org,
and a few other entities around the world
are creating curricula that will satisfy APCS principles.
Which is to say that CS50 AP will be a AP equivalent that students
in various high schools across the world can take starting this coming fall
2016.
And if you'd like to get involved in secondary school education,
and involved in this outreach, do reach out to us there,
whether you're a TF, a CA, or simply interested in education at large.
>> And indeed, if you'd like to join CS50's own team,
realize that as soon as term ends, we'll begin recruiting
for Teaching Fellows, Course Assistants, as well as the many artists that
make this course possible behind the scenes,
creating its online assets, its in-person opportunities, and more.
So if any of these roles here appeal, do let us know at this URL here.
Now in a little while, we'll turn to, just as we did in week zero, some cake.
This time it'll be downstairs in the pub.
So head there later on.
But I did just want to take a moment to recognize really what this cake here
represents, or perhaps more canonically, what this here face-off represents.
>> It has truly been an honor, honestly, to be partnering with our friends
down the road in New Haven this semester.
It's certainly been a strange thing, an unusual thing,
dare say an unprecedented thing for two colleges
to be coming together, offering one course in the same,
on two different campuses and bringing these two student bodies together.
But it's been such an honor to work with Andi,
with Scass, and with Jason in New Haven, and the entirety of our 44 person staff
of Teaching Assistants, and course Assistants
in New Haven, who, for the first time in Yale's history, were mostly themselves
undergraduates.
>> Indeed, until this year, fall 2015, Yale did not actually
have a tradition or an allowance for undergraduates
leading sections and serving as teaching fellows
much like we've enjoyed here within computer science
at Harvard for some time.
And so that alone has been an extraordinary opportunity for us
to partner with them on that initiative, and bring
into the fold such leaders as Andi and other teachers there on campus.
And allow me to draw special attention too, to this fellow in the middle.
Even though he now lives in New Haven-- largely because we sent him
there-- this is all the result of Jason Hirschhorn having been a Teaching
Fellow for CS50 for quite a few years here,
graduated last year, Kirkland House.
And ultimately-- I think got a phone call from me
at one point that pretty much reduced to, hey,
would you mind moving to New Haven after graduation?
This was all because we were trying to stand up this initiative,
and we want to make sure that there was institutional knowledge down
there in New Haven because we were building something from scratch.
And if-- Jason, if you could maybe just come on up awkwardly toward stage,
so we can at least all see Jason Hirschhorn in person.
[APPLAUSE]
>> Surely, without Jason, Yale 50 would not have been possible.
So our thanks to Jason Hirschhorn.
And also, we have a huge staff that we won't draw personal attention
to everyone here, but over 100 individuals
here in New Haven who make this course possible.
And you might just see your own Teaching Fellow
on this list, whether here or a New Haven.
And so if we could, a huge round of applause
for the entirety of the teaching staff.
>> [APPLAUSE]
>> And let me draw some special attention to a few of the folks
here, especially Hannah, and Maria, and Daven, and Rob, who,
as the courses head, make everything run here in Cambridge.
Of course, Colton Ogden, who begins most of our lectures over there on music.
Doug Lloyd, who-- this is CS50 AP, who was leading our AP initiative.
Dan Armendariz, without whom we would not have a CS50 IDE this year.
Aliess, who makes everything possible behind the scenes,
including running the lights as pictured here.
And then last, but not least, CS50's production team.
>> Suffice it to say, it's CS50's production team
that empowers so many of us to sleep in in the afternoons,
and to engage with the course's material really asynchronously.
And this is very much one of the design goals of the course.
As you know, we are-- enjoy right now an opportunity
to allow simultaneous enrollment.
We have an opportunity for students, certainly,
to watch these courses- materials online,
even in real time live right now.
And this is entirely because of the production team that you see,
or even don't see around you, and behind you here.
>> For instance, this was some footage shot by Jordan this past year,
just to speak to the sort of artistry that goes on behind the scenes.
This, of course, is FoHo in the Quad.
And just to give you a look back at week zero,
this was the imagery with which we began the first week.
>> [MUSIC PLAYING]
>> That was from CS50's own Jordan.
And also behind the scenes here today is Ramon, and Ian, and Scully, and Dan
Coffey.
Dan Coffey, who heads CD50's production team.
And truly over the past several years-- this
is my ninth year involved with the course-- really has
Dan Coffey, with the production team, taken CS50 to another level.
Not only do we shoot the course now in 4K, so to speak,
this coming year we'll also be able to shoot it in 6K.
As well as in virtual reality, partly because it's cool--
partly because it's cool, but also as you know,
we have a very sizable online community.
Folks who, for various reasons, could not travel to,
or could not attend a place like Harvard and Yale.
>> And one of the goals pedagogically is to experiment with new forms of technology
so that we can, through proxy, and through you all, give online students
around the world an opportunity to see, and feel, and hear
what a place like Harvard or Yale feels like.
So coming soon, in fall 2016.
And now to take it down a notch, this is about to be horrifying.
>> But you might recall that most of the lecture videos this year,
or every other, ends with a sort of seemingly strange clip from Seinfeld,
inspired by some actual episode re-implemented by CS50's production
team, who have been incredibly gracious and creative.
And I thought I will show you one of the inspirations, a 30 second clip,
from an actual Seinfeld show that inspired one of this
semester's-- I'm told-- favorite clip.
So first, an actual clip from Seinfeld.
>> ELAINE: C'mon who's dancing?
Want me to-- want me to get it started?
I'll get it started.
All right, woo!
>> [MUSIC PLAYING]
>> [LAUGHTER]
>> Woo!
C'mon guys, what's the hold up?
>> GEORGE: Sweet fancy Moses.
>> [LAUGHTER]
DAVID J. MALAN: So we often talk about pushing students
beyond their own comfort zones.
I, now, am going to crawl up into a ball and sob
as we play for you this re-implementation of this,
thanks to CS50's production team.
>> [SEINFELD THEME SONG]
>> All right, who's dancing?
C'mon, who's dancing?
You want me to get it started?
I'll get it started.
Woo!
>> [MUSIC PLAYING]
>> DOUG LLOYD: Sweet fancy Moses.
>> [APPLAUSE]
>> DAVID J. MALAN: And now some special things for an alumna
who is now doing her PhD just down the road here at Harvard.
And who could most often be seen in this form in office hours,
both in Cambridge, and in New Haven.
In fact, if we enhance-- a big round of applause for CS50's own, Zamyla.
And now, a word from CS50 staff in both locations who would
like to offer some parting words of their own.
ANNALEAH ERNST: There is no other course in which
everyone who works for the course is as excited to be there, and be
involved in it, as CS50.
I don't know, it's like this really important and special responsibility,
and kind of an incredible experience.
And I'm really glad I get to be a part of people's education.
SPEAKER 3: CS50, in my opinion, is amazing.
I love it.
I loved it when I was taking a class.
And I love it even more as a TA.
JORDAN HAYASHI: CFing is a lot of work, but it's really rewarding
because you get to teach so much.
You really get to know your students.
You get to know the material yourself.
And you get to just watch them become computer scientists.
>> SPEAKER 4: My students are the highlight of my semester.
>> [MUSIC PLAYING]
DAVID J. MALAN: And this is CS50.
DAVID MCPEEK: I've just never felt as much as a leader on campus,
as I have this semester.
>> SAM LEVATICH: This is one of the only opportunities on Yale's campus
to really get invested in teaching.
>> SPEAKER 5: It's really cool to see CS50 from the other side.
NICK JOSEPH: I was surprised at how excited all the students were.
ARIANNA BENSON: It's also nice when people
recover a picture of Rick Astley, and are like, who is that?
DAVID ARMENTA: I wanted to give back because I got a lot of support
when I was a student.
MARY FARNER: All you need is enthusiasm and a love of teaching, or CS,
or any of the above, and you'll be able to do it.
SAM LEVATICH: All my students keep Rickrolling me.
[MUSIC PLAYING]
ANNALEAH ERNST: It's been so much fun to teach about this thing
that I really love, and think it's a lot of fun,
and try to other people excited about it as well.
I'm Annaleah Ernst, and this is CS50.
>> [CHEERING]
>> [MUSIC PLAYING]
DAVID J. MALAN: And now, you may recall that we began this semester talking
ultimately about computational thinking in solving problems independent
of actual programming languages.
And we thought we'd see just to what extent
this has sunk in by trying an exercise we didn't do in week zero,
but we thought we'd try a couple times here
in week 12, for which I need a volunteer who
is comfortable coming up here on stage.
>> Come on up.
What's your name?
>> YAHONG: Yahong.
DAVID J. MALAN: Yahong, come on up, this way.
And if you all, if you have a sheet of paper from us
or a blank sheet of paper of your own, go ahead and take that out
at this point.
Nice to meet you.
All right, Yahong's goal here is going to be the following,
I have here a drawing that only she is going to be able to see.
Come on over here in the middle, if you'd like.
And let me give you a microphone here.
And your goal here is going to be to describe,
in as precise detail as possible, what you see.
>> And these folks here, as the sort of computer implementers of this,
need to draw exactly what you say.
And then, what I'll do is grab a few random samples from the audience
and we'll see just how precisely this worked out.
YAHONG: So I describe this.
DAVID J. MALAN: You described this.
You tell your hundreds of classmates here exactly what to draw, go.
YAHONG: OK, so in the very middle of the piece of paper,
there are two shapes, one on top of the other,
but not touching, but almost touching.
So there is a circle on the top, and a square on the bottom,
and they're almost the same size.
They're kind of medium, small.
And within the circle, there are two-- there are three squares.
So there's a little square within a bigger square, within a bigger square.
And within the square on the bottom, there are three circles.
A little circle within a bigger circle, within a bigger circle.
DAVID J. MALAN: Got that?
AUDIENCE: No.
DAVID J. MALAN: So why don't you-- I'll go walk around.
I'll grab a few, and if you want to recap for those who need a second path.
>> YAHONG: OK, do you need me to explain this again?
OK, all right, so in the middle of the sheet of paper there are two shapes.
And one is on top of the other, but they're roughly the same size.
There is a medium small circle on top of a medium small square.
OK, so it's kind of like on top, think about putting it like a snowman,
but with two different shapes instead of two circles.
And then on the-- inside the circle, there
is a small box, inside of another small box, inside of another small box.
And inside of the square, there is a small circle,
inside of another small circle, inside of another small circle.
Did that make sense?
DAVID J. MALAN: Yes.
YAHONG: A lot of pressure.
DAVID J. MALAN: All right, I will be right back.
Going through the audience here, OK, very nice.
Thank you, OK we've got to take that one.
All right, that seems like a good random sample, thank you.
All right.
>> YAHONG: Awesome.
DAVID J. MALAN: So now-- also?
>> YAHONG: Awesome.
>> DAVID J. MALAN: Oh, awesome, OK.
So awesome, stay right there.
I'm going to go ahead and reveal to you what some of your classmates here did.
So here we have this one here.
OK, it sort of just keep going and going.
Here, a little different interpretation.
OK, here, let's see, getting closer, albeit smaller, very nice.
Though, I just had to grab this one.
>> [LAUGHTER]
>> What was the actual answer?
Let's take a look over here.
What she was describing was this image here.
So man-- some of-- many of you up here in the ones I looked,
did get this right.
Let's go ahead and show-- let's call someone else up and see how easily,
or with what level of difficulty they can do it.
Thank you so much.
How about one other volunteer a little farther back.
OK, I saw this hand first, come on up.
What's your name?
Oh, sorry?
MARCY: Marcy.
DAVID J. MALAN: Marcy, come on up, nice to meet you.
All right, here we have a microphone for you.
Let me get a drawing.
And so if you want to just use the flip side of that sheet,
or some other sheet of paper, I'm going to go ahead and give Marcy
a different one here that only she can now see-- that only
she can see opaquely, OK.
>> MARCY: OK.
>> DAVID J. MALAN: Go.
>> MARCY: Draw 16 little dots all in a grid.
So four rows of four dots each.
And the dots are hollow, so they're like tiny little circles.
Oh, there are five of them.
OK, it's five.
It's five rows of black dots.
Five rows of five dots, and then, starting on the top left corner-- OK,
so five rows of five dots, and the dots are hollow,
so they're like tiny little circles actually.
So they're white on the inside.
>> AUDIENCE: OK.
>> MARCY: OK, so five rows of five dots.
And then, you start from the top left dot,
and then draw a line down to the next dot
down, and then draw another line to the one to the right of that one.
So that's two lines so far.
And then draw a line down to the next one down.
OK, so that's three lines, down, right, and then down.
And then left.
And then down.
>> OK, so recap, it's the first one is down-- OK,
you're starting from the top left corner-- and then down, and then right,
and then down, and then left, and then down, and then right, and then right,
and then left.
OK, so we're about half through.
DAVID J. MALAN: You said right, then left.
MARCY: Oh, whoops, OK.
DAVID J. MALAN: It's not easy.
MARCY: Let's start over.
Let's start over from the top left corner.
>> DAVID J. MALAN: One more pass.
MARCY: Yeah, OK, down, right, down, left, down, right, right, down, right,
up, right, up, left, left, up, up, right, down, right, up, and you
should be on the top right corner.
OK.
>> DAVID J. MALAN: All right, and if you did that correctly, you should now
have this on your sheet of paper.
So let me come grab a couple.
OK, thank you, thank you, thank you, OK, I don't think you want that.
OK, oh love this, thank you.
Sorry to reach, wow, aw, OK I'm going to take just that one.
All right, that's good, that's very good.
All right, so let's see what we have here.
>> So notice, try to make a mental imprint of this.
Let me go back to the projection here.
And this is pretty darn good here, very nicely done.
This one, a little smaller, but I think that's on the right track
as well, very nicely done.
OK, this one I feel like I shouldn't put this on the internet,
so let me-- this one has a phone number for some reason.
>> [LAUGHTER]
>> Thank you.
And then, why don't we end with this one and now-- thank you so much--
we have time for one more example here.
This time, how about on the left there, come on up.
Yup, with your hands, yup.
All right come on up, come on up.
This time though, come on up.
What's your name?
>> DANIEL: Daniel.
>> DAVID J. MALAN: Daniel, this time though, we're
going to spice this up a little bit, and we're
going to have you come over to the touch screen.
So now this time, I'm going to show all of you all the drawing.
And on the honor system, you may not move your eyes ever so slightly up here
to see what the actual image is.
So you just keep a-- just straight ahead.
And then you're going to draw on this screen what
your classmates describe to you.
And I'll try to summarize verbally so it's loud enough.
>> All right, so honor system here, look straight ahead only,
and you all step-by-step-- not unlike the peanut butter and jelly example--
let's try to describe this.
First instruction please.
>> AUDIENCE: Draw a big circle.
>> DAVID J. MALAN: Draw a big circle.
>> [LAUGHTER]
>> All right, this I'm going to undo.
>> AUDIENCE: Draw a stick figure without arms.
DAVID J. MALAN: I heard, draw a stick figure without arms.
>> [APPLAUSE]
>> OK, all right, second instruction.
>> AUDIENCE: Left arm on hip.
>> DAVID J. MALAN: Left arm on hip.
>> AUDIENCE: Angular, angular.
>> DAVID J. MALAN: Angular, OK, we have to-- let me give you the eraser.
Let's erase.
OK, again.
AUDIENCE: Pointy elbow.
DAVID J. MALAN: Pointy elbow.
Pointy elbow.
AUDIENCE: Slightly acute elbow.
DAVID J. MALAN: Slightly acute elbow.
[APPLAUSE]
DAVID J. MALAN: All right, what else?
Third instruction.
AUDIENCE: Now rotate the--
DAVID J. MALAN: Now rotate the--
AUDIENCE: Rotate it 90 degrees.
DAVID J. MALAN: Rotate it 90 degrees.
[LAUGHTER]
[SHOUTING]
What?
Right arm is a v. Right arm is a v.
>> AUDIENCE: There you go.
>> DAVID J. MALAN: Nice.
[CHEERING]
>> All right, and last step, last step.
>> AUDIENCE: Line away from the head.
>> DAVID J. MALAN: A line away from the head.
No top left, yeah.
>> [SHOUTING]
>> AUDIENCE: 45 degree angle.
>> DAVID J. MALAN: 45 degree angle.
Oh, no.
>> [SHOUTING]
>> Yes.
No.
>> AUDIENCE: From the top left of his head.
>> DAVID J. MALAN: From, from the top left of his head--
>> AUDIENCE: Not connected to his head.
>> DAVID J. MALAN: Not connected to his head.
Yes.
>> [SHOUTING]
>> That's good, that's good.
>> AUDIENCE: Write, Hi.
>> DAVID J. MALAN: Write, Hi.
Write, Hi.
>> AUDIENCE: Higher.
>> DAVID J. MALAN: Higher.
>> AUDIENCE: At the end of the line.
>> DAVID J. MALAN: At the end of the line write--
>> AUDIENCE: Little i.
No.
>> [SHOUTING]
DAVID J. MALAN: Lowercase i.
I heard, lowercase.
Yes.
>> [APPLAUSE]
>> All right, that was amazing, thank you.
All right, so we have time for just one more exercise.
You might recall the following theme music
which, realize we've taken some liberties
with the rules of the following game, because in problem set eight,
we asked you a bunch of questions that were essentially
in the form of Jeopardy.
And only after p-set eight did we decide,
well, maybe it would actually be a little more
fun to play something else instead.
>> [FAMILY FEUD THEME MUSIC]
>> For this, we're going to need four members of the teaching staff.
Four members of the teaching staff, and four students, how about one,
two, how about three, four.
Come on down, come on down.
All right, We're also going to need-- we're also
going to need one student-- if the staff would like to go here at left, students
over here right-- we need someone who's really good at arithmetic
under pressure.
>> OK, right here be volunteer [INAUDIBLE] come on up.
So you'll use the touch screen here.
What's your name?
MICHAEL: Michael.
DAVID J. MALAN: Michael, come on up.
So we'll give you instructions in just a moment.
But if you want to just write staff on the right and students
on the left for score keeping, let me go ahead and let each of you
introduce yourselves to your class on this last day.
JAMES: I'm James, I'm a freshman.
>> AARON: Hi, I'm Aaron.
>> MAYA: I'm Maya.
>> KATHERINE: I'm Katherine.
DAVID J. MALAN: And now the teaching staff.
JACK: I'm Jack.
ABBY: Abby
TIM: Hi, I'm Tim.
MARIA: Maria.
>> DAVID J. MALAN: So, we have in advance, come up
with a number of questions, some of whose answers we kind of made up,
but others whose answers are based on actual statistics
from your own submissions of problem set eight, and other problem sets.
So in general, each of these answers we'll have surveyed,
let's say 100 people, we will put the top four or five or six answers
on the board, each of which has a score associated with it.
What we're going to do is tweak the rules a little bit.
So rather than give control to one team or another,
we're simply going to use the Staples easy buttons to allow each team
to buzz in the quickest.
And whoever guesses-- hits the button first, and gets a question right,
will potentially get that many points.
We'll keep going, we'll keep going, and then
whichever team finishes the board, will get all of the points tallied thus far.
So what you'll want to do is tally the points
as we go for each question answered right.
And then once the round ends, you're going to put the total either here,
or over here.
>> MICHAEL: So I tally in my head.
>> DAVID J. MALAN: Or on the screen in front of everyone, yes,
or on your phone, which is back there apparently.
All right, so we'll walk you through this.
No need to do anything just yet.
The first thing the students and the staff need to do
is hit their respective buttons the fastest
after I start reading the question and you want to propose an answer.
Make sense?
All right, here we go.
Name a function declared in stdio.h.
Staff.
>> ABBY: Printf.
>> DAVID J. MALAN: Show us printf.
Very nice.
So just write down 68, or keep track in your mind of 68.
Now we're going to move on.
As soon as I'm going to read the question again,
you may not buzz in until after I've repeated the question.
Name a function declared in stdio.h.
Same question
>> JAMES: What is sprintf.
>> DAVID J. MALAN: What is sprintf.
Show us sprintf.
No, I'll read it again.
A function declared in stdio.h.
Staff.
>> TIM: Scanf.
DAVID J. MALAN: Scanf, show us.
Two strikes.
Once more, a function declared in stdio.h.
Students.
>> JAMES: Fopen.
>> DAVID J. MALAN: Fopen, very nice.
I'll just keep repeating the question, a function declared in stdio.h.
Staff.
>> TIM: Fclosed.
>> DAVID J. MALAN: Fclosed, good job.
Nice, we have two answers left on the board, number two and number 5
for this round.
A function declared in stdio.h.
Students.
>> KATHERINE: Fread.
>> DAVID J. MALAN: Show us fread.
Very nice.
Whoever now-- whichever team answers the fifth and last answer,
gets all the points.
So you should be adding all these numbers up, and whoever gets this,
gets that total.
Is there a mistake?
There is no number six.
No number six, unimplemented.
Name a function declared in stdio-- staff.
>> TIM: Fright.
>> DAVID J. MALAN: Show us fright.
>> JACK: That explains so much.
>> DAVID J. MALAN: Let's try once more.
Name one-- name a function declared in stdio.h.
Tim.
>> TIM: Fseek.
>> DAVID J. MALAN: Fseek.
About one more try, name a function declared in f-- in stdio.h.
>> MARIA: fgetc.
>> DAVID J. MALAN: fgetc.
So no one gets the points.
Colton, want to show us what number five was?
OK, Matlock is not in stdio.h.
Jason Hirschhorn everybody.
All right let's move on to the second question.
First person to buzz in here, to this question, a program that you
use while programming.
Staff.
>> TIM: Clang.
>> DAVID J. MALAN: Clang.
Very nice, number two answer.
Again, name a program you use while programming.
Students.
>> JAMES: GDB.
>> DAVID J. MALAN: GDB.
So at this point, 38 would be the total, but no one's gotten any points yet.
All right, name a program used while programming.
>> TIM: Valgrind.
>> DAVID J. MALAN: Valgrind.
All right, name a program you use while programming.
Students.
>> AARON: PHP.
>> DAVID J. MALAN: PHP Name a program you use while programming.
Staff.
>> MARIA: Facebook.
>> DAVID J. MALAN: Show us, show us Facebook.
>> [APPLAUSE]
>> We have top six answers on the board, three to go.
Name a program you use while programming.
Staff.
>> TIM: Google.
>> DAVID J. MALAN: Google.
Brow-- all right.
>> AUDIENCE:Boo.
>> DAVID J. MALAN: Boo.
All right, name-- two answers left-- name
a program you use while programming.
>> MAYA: CS50 Discuss.
DAVID J. MALAN: CS50 Discuss.
One more try, a program you use while programming.
I heard students.
Students.
>> AARON: CS50 IDE.
DAVID J. MALAN: CS50 IDE.
And last one, a program you use while programming.
>> TIM: Check50.
>> DAVID J. MALAN: Check50.
Nope, let's reveal the answer.
Number six was Spotify.
All right, I think we have time for just one or two more.
Complete the following sentence, no points for either team still.
It's zero to zero, winner take all soon, good job.
Complete the following sentence, I'm never gonna-- Staff.
>> TIM: Give you up.
>> DAVID J. MALAN: Give you up.
Nice.
Students.
>> JAMES: Let you down.
>> DAVID J. MALAN: Let you down.
I've never gonna-
MARIA: Run around and desert you.
DAVID J. MALAN: Run around and desert you.
Run around desert, OK.
Students.
>> AARON: Never gonna make you cry.
>> DAVID J. MALAN: Make you cry.
Staff.
>> TIM: Say goodbye.
>> DAVID J. MALAN: I can't believe this is the question you're all getting right.
Say goodbye, yup, and the last one.
Students.
>> KATHERINE: Hurt you.
>> DAVID J. MALAN: Tell a lie and hurt you.
Students get 100 points.
That's why-- that is it for CS50, cake is now served.
>> [SEINFELD THEME SONG]
>> [MUSIC PLAYING]
DAN ARMINDARIZ: Are you crazy?
What do you think you're doing?
>> SPEAKER 6: I'm trying to get into the elevator.
>> DAN ARMINDARIZ: What are you talking about?
You didn't see me waiting here?
>> SPEAKER 6: I didn't see you waiting man.
>> DAN ARMINDARIZ: If you didn't see me waiting, then why'd you
put your cart in like that?
SPEAKER 6: Because that's how I get into the elevator.
>> DAN ARMINDARIZ: [INAUDIBLE]
>> SPEAKER 6: Get out-- let go!