DAVID J. MALAN: Hello, world. My name is David Malan, and this is CS50 live. Odds are, if you're tuning into this stream, you're a student in CS50x and CS50 perhaps through EdX, Harvard College or Harvard Extension School. Well, because so much of the course's material these days is provided to you on video, we thought we'd do the same, but this time make it a little interesting and actually broadcast all of this live. So if you see me trip, if you see me misspeak, if you see me screw up, all of that is happening literally right now in Cambridge, Massachusetts on Friday morning here. Well, we thought we would first give you a sense-- see, there it is. This is CS50 live, already. So over the past couple of weeks, people have been posting questions to Reddit and Facebook and Twitter and the like. And one of them in particular caught our eye that we thought might be a frequently asked question. So I thought I'd read to you here live. So in Week 0. Anyone else feeling a little confused and/or overwhelmed already? Well, this was posted on Reddit. And the student elaborated as follows-- I don't have much prior experience. Could that be why I seem to be catching on much more slowly than the rest of the people posting here? I'm really interested in all of this, but scratch is a little confusing to me for some reason. I don't seem to know where to start. What should I do to try and grasp all of this a bit better? I'm disappointed that I'm already getting confused. So this is absolutely, indeed, a frequently asked question. In fact, if you tuned in to Week 0's lecture already, you'll know that at least here on campus, 73% of your classmates here have no prior programing experience. And realize too, that a lot of the chatter on Facebook and Twitter and Reddit now is perhaps biased toward those students who already do have a bit more comfort and savvy. And that's, after all, why they're gravitating toward those forms so quickly. So certainly, don't be overwhelmed by so many of the amazing projects that are already being shared in the Scratch Gallery, as well as on Reddit and Facebook. But really take comfort in the fact that there are hundreds, nay, literally thousands of other people just like you. And they might not be speaking up, but they are indeed out there. So what is CS50 live meant to be? This is going to be an opportunity for us, every once in a while, to speak back and forth live. And we'll either take in questions via video, or do our best to allow you, in the future, even to tune in yourself live via live streaming video. But for now, we've got a number of fun segments prepared for you, the first of which is going to be a glimpse at Harvard University. For those of you who have never stepped foot here in Cambridge, Massachusetts, we thought we'd show you some of the more well-known sites, as well as some of the sites unique to CS50. Let's take a look. We're here outside the main gates of Harvard University, and through these gates you can see the John Harvard statue, which is most folks' first destination. Let's go in. So this is the John Harvard statue, one of the most popular locations on campus for tourists. What you'll see here is emblazoned with John Harvard, Founder, 1638. Well, turns out, if you take the tour, one of the things you'll learn is that there's three lies here. One, this isn't John Harvard. Two, he wasn't the founder, and three, Harvard was not founded in 1638. But what is true is that if you rub his foot up here, you might just get a little bit of luck. Shall we take a look at CS50's studio? So we're here in Maxwell Dworkin G-123. Maxwell Dworkin's our computer science building. If you'd like to look this up on Google Maps, we're at 33 Oxford Street in Cambridge, Massachusetts. So here, against this backdrop, is where we shoot CS50's shorts, walk-throughs, and other material. What you'll typically see is that we'll come in here, turn on a lot of these lights, and the subjects, Zamyla, Rob, and others, will have them situated up here, against this white backdrop. Or alternatively, if we drop this green screen, we can actually digitally put in behind them anything we want-- a computer screen, TV screen-- really, anything like that. Well, around here, we have some of the lighting that we throw on to the subject so that you get a nice, clean shot against them and the backdrop. Here we have some remnants of what was once the CS50 lounge. So this used to be a place where computer science undergraduates would hang out. We've since turned it into something more high tech for these shoots. In fact, here's a remnant of CS50 puzzle day. At the start of the semester, we have some 200-plus students get together and solve puzzles, which is meant to be demonstrative of the fact that computer science really isn't about programming, per se. It's more generally about problem solving. But here you see from yesteryear, some of the markings that we've left forever up on these glass walls. Now if we pivot around, you'll see what things are like from the producer's perspective. Over here, we have a tripod. And on this tripod is really just a computer screen that is reflecting against a mirror. So if we actually turned on the camera, turned on the computer, you would actually see the words on this screen that I or one of the team members are actually reciting on camera. What we do in this studio is really the only scripted content for CS50. And we script it with a teleprompter, so that we can get the takes just right, and so that when we make mistakes, it's a lot easier to redo, redo, redo, and deterministically, say the same thing again and again. Sanders Theatre, meanwhile, is very much off the cuff. And it's a much more organic environment where we have me and students and others interacting on stage. So why don't we take a look there next. So we're coming up here on Memorial Hall, which is where CS50's office hours and lectures are held. Here in this entrance is Annenberg Hall. This is actually where all of Harvard's freshmen take their meals. And it's also where in the evenings, one or more nights a week, that we have hundreds of CS50 students gather sometimes to work on their problem sets alongside each other, as well as CS50 staff. So we're here on the steps of Memorial Hall. These are the main doors that will lead us to Sanders Theatre, where lectures are held. Shall we? And this is Sanders Theatre, where CS50's lectures are held. This is CS50. So there's this expression going around the internet known as, Had One Job. And I indeed Had One Job about two minutes and a half ago, that my colleagues here, Ramon, Colton, Dan, and Padrick, very quickly reminded me of, as soon as we went to that tour. Because in fact, what we were supposed to begin with here today were a few hellos from some of your predecessors in the class. So we're actually going to rewind a little bit, and bring up William now, who hails from Wales in the United Kingdom, who was one of our youngest students last year, who would like to say hello. SPEAKER 1: What's your name? SPEAKER 2: William. SPEAKER 1: What's this? SPEAKER 2: CS50. DAVID J. MALAN: So that then was William. Let's now head elsewhere, down to Nigeria, where another classmate of yours from years past is [? Annette, ?] who would similarly like to say, Hello, world. SPEAKER 3: Hello, world. I'm really excited to be taking CS50 this year, all the way from Lagos, Nigeria. I felt the need to hone my computer skills, and I've always wanted to become a good programmer, and so I signed up for the course. I want to say thanks to Harvard and MIT and schools that came together to make this happen for thousands of people across the world. I only just finished my first game ever. Got done with P-set 0, my Scratch program, which is lots of fun. I look forward to having more fun with the course, and with my classmates as we go through p set after p set. My name is [? Annette ?] [? Onoja ?], and this is CS50. DAVID J. MALAN: Now, particularly if you're worried that you're the eldest student in the class, rest assured that you're not. CS50 and CS50x has quite the gamut of ages from as young as 10 years old to much, much older than that. In fact, a number of your students who have been posting on the bulletin boards have been sharing videos to that effect. And we'd like to share one in particular from last year-- [? Alecio ?] from Brazil, who would also like to say hello to his successors in the class. SPEAKER 4: Hello, world. I'm [? Alecio ?] [? Omida ?] from Brasilia, Brazil. I'm 78 years old, and I'm very enthusiastic about this online course. I'm sure it will help me lots to perform my work in the area of distance learning. I take this opportunity to thank EdX for the initiative of courses like this, and also to thank Professor Malan and all the CS50 gang. My name is [? Alecio ?] [? Omida ?], and this is CS50. DAVID J. MALAN: So now we would be cutting to a tour of Harvard University, for those of you who haven't seen Harvard before. But something tells me you have now seen Harvard University before. So we're going to forge ahead to a segment known as our inbox. Over the past few weeks, you've indeed been submitting quite a few questions, for which we've been keeping an eye out. And some of you were kind enough to ask those same questions via video. In fact, here in Kuwait, we have Dhruv, who would like to pose a question to us, the staff, about CS50 and about computer science and programming more generally. Dhruv? DHRUV RAMANI: Hi. I'm Dhruv, and I live in Kuwait, Middle East. I'm a student [? in class 10th, ?] and I've done four languages by now. I have taken CS50 in 2013, and the first question that came to my mind is which is the best language to learn in today's world? DAVID J. MALAN: So that's a great question. And there actually isn't one answer to it. There really isn't the best language, but rather there's the best language sometimes for the job. But even then, you often have discretion. For instance, pictured here is quite a few of the most popular languages today, and C is just one of them among them, as is PHP and others that we'll explore later in the semester, in CS50 itself. Now, very much in vogue these days are languages like Python and Ruby and Perl, and even Java to some extent for web-based programming, whereas Java in particular is used quite a bit for enterprise software, made by large companies. C is quite common in low-level embedded systems. But we actually tend to use C because it's a fairly small language, on top of which a lot of its successors have been built. So if you're wondering which language you should use for a particular task, well, it really depends. And quite often, a programmer's own personal preferences weigh in. Right now, for instance, I'm going through a phase where I really like JavaScript. Not so much in the browser, but actually on the server side. You can actually use it with a framework called Node.js to program the command line in a server. Now in the real world, much like you could, for instance, try to get a screw like this into the wall using most any tool-- for instance, even the most heavy-handed of hammers. This would indeed work if you hit the heck out of the thing into the wall. But you could be a little more sophisticated. And you could reach for instead, something like a flathead screwdriver. Because if you get it just right, that would fit into the crosshairs of that screw, and you could probably get it into the wall. But the best tool for the job, or the one most appropriate for this particular application, so to speak, would be a Phillips head screwdriver, where the head of the screwdriver fits perfectly into the head of the screw. So when choosing a programming language, it's similar in spirit to that. And you could use different languages to solve the same task, but some of them might yield a more elegant solution. Some of them might yield a faster solution. And arguably, some of them might indeed yield a better solution. So one of the takeaways, hopefully, you'll get out of CS50 is when to use particular tools for a particular job. Well, next up, let's take a look at another question that was submitted by one of your classmates, this time from Bernardo from Brazil. BERNARDO: Hey. My name is Bernardo. I am from Brazil. And I'd like to ask two things. First of them, how fast is the internet speed at Harvard, and second, who had the idea to make the appliance? DAVID J. MALAN: So that too was a great question. And we actually didn't know the answer to that. So last night, I sent off an email to some friends in Harvard's networking group, and posed precisely Bernardo's question. Well, it turns out-- drum roll-- that Harvard's internet connectivity to the outside world is 10 gigabits. To put that into perspective, that's 10 billion bits per second. Now to put that into perspective, if you were to download a movie from something like iTunes or elsewhere online these days, they might in fact be really big if it's an HD video. That might be two gigabytes in total. Well, if your bandwidth is 10 gigabits per second, you can download a movie like that in mere seconds, rather than the minutes or hours it takes most of us at home. Now in fairness, not each and every one of us here on campus has access to 10 billion bits of bandwidth per second. In reality, it's shared across quite a few people. But in fact, why don't we take a look at a speed test, whereby we'll conduct a test that tests just how fast some bits can travel for my particular laptop to some other nearby location. That isn't necessarily an authoritative answer as to the bandwidth. In fact, if you try this at home, you might find that your internet service provider, or ISP, is kind of misleading you, whereby a lot of ISPs these days allow you burst speeds. And by burst, I mean for the first few seconds of downloading something or doing anything with your internet connection, it might actually download quite fast. But if you watch a progress bar-- the speed at which your bits are being downloaded-- you'll often see that it's slowing down and down and down. So these speed tests, frankly, aren't necessarily representative. But for short downloads, you'll indeed get this many bits down per second. Dan, shall we run the speed test? Come on. There's our download speed and now our upload speed. Come on, come on. Come on! Come on! Too much, I'm being told. All right. So that was in this studio here, Hauser Studio, in Widener Library of Harvard University. The speed that my little laptop is getting, through Harvard's outbound internet. Now lastly, we have a question from a third of your classmates-- Mauricio from Peru, who would like to pose the following question from here. MAURICIO RADA: Hello. My name is Mauricio, and I'm from Peru. My question is, am I allowed to start [INAUDIBLE] to teach CS50 for our schools using CS50 materials? [INAUDIBLE]. My name is Mauricio, and this is CS50. DAVID J. MALAN: [INAUDIBLE] Mauricio, and anyone else that's interested in this particular question know that the answer is absolutely, wholeheartedly yes. In fact, a student here on campus named Gabriel [? Grimardes ?] who hails from Brazil actually did exactly that in his hometown with a course he dubbed CC50, available here at CC50.com.br, those of you who speak Portuguese, if you'd like to take a look. And what Gabriel did a couple of years ago was literally downloaded all of CS50's handouts and exams and problem sets and videos. And he translated most of that content himself. And then, with his dad's help in the back of the classroom in his high school, he himself started teaching his own version of CS50, to first 50 of his classmates in high school. Then the subsequent semester, some 150 of his classmates. And it's quite, quite inspiring to see him. So if you do go to this URL after this broadcast, click on the YouTube video that's embedded there. And you can see Gabriel teaching pretty much the same material that we taught that same year in CS50 on campus. And I'm so pleased to say that that same Gabriel, formerly a high school student from Brazil, is now here on Harvard's campus as a Harvard freshman, and this coming year will be CS50's head teaching fellow, and all the more involved in CS50 goings-on. So if you yourself would like to do this like Mauricio, please just go to CS50.tv, which is the course's own OpenCourseWare site. There's a license there that you can read, and it's actually something called a Creative Commons license, which pretty much says that you are free and welcome to use the material, to modify the material, so long as you yourself share alike with others. So that's it for this week's inbox. Why don't we take a short break here, and allow you a chance to watch 60 seconds of kittens. DAVID J. MALAN: [INAUDIBLE] live, and what we thought we'd do is conclude today from a film that one of CS50's own staff members, T.J. Barber, has put together. As you probably know, CS50 here on campus culminates with a CS50 fair, an epic display of students' final projects. Those of you taking CS50 through Harvard Extension School online, or through EdX online will have a similar opportunity, albeit virtual and online, to exhibit your final project some number of months hence for the whole world to see. But we thought we'd give you a sense here, with some fun backdrop on our big screen display, of exactly what happened just a few weeks ago here on campus with the on-campus version of CS50's fair. Let's roll. [MUSIC PLAYING] SPEAKER 5: Hi, [? I'm Allison ?] here at the CS50 fair, with-- SPEAKER 6: [? Curt Stone. ?] [? SPEAKER 5: Curt Stone. ?] Great to see you. So, can you tell us a little bit about your project? SPEAKER 6: Oh, well absolutely. SPEAKER 7: We made music visualizer. SPEAKER 8: [INAUDIBLE]. SPEAKER 9: So neither of us had any experience [INAUDIBLE]. SPEAKER 10: That's awesome. Same as 70% of other students. SPEAKER 11: I was one of the 70% of people who didn't know anything about-- SPEAKER 5: And now you're like [INAUDIBLE]. SPEAKER 12: It's an amazing chance to bring students together and see what happens. Look at some 600-odd apps being demonstrated here that didn't exist before because of one entry-level course amazing. SPEAKER 13: They really do cater to your experience coming into the class. Like me, I had zero, zero computer programming skills. I knew what Java was, so that was about it. They really, really do. And especially-- and the TFs, amazing. The TFs are a wonderful, wonderful component to this course. This was CS50. SPEAKER 14: Hundreds of projects walk through this hall. Hundreds of boxes of candy, hundreds of boxes of popcorn, and quite a few attendees, and just all of the stress balls that have been thrown and taken home. This has been CS50, and this has been the CS50 bear. Good night. DAVID J. MALAN: That, then, is what awaits you here in CS50. That's it for CS50 live. Thanks so much to Ramon, Padrick, Colton, and Dan, who are here behind the display. And do keep an eye out on Twitter, Facebook, Reddit, and elsewhere for announcements via which you yourself can submit videos and questions so that you can join us here in the studio for the next CS50 live. This was CS50.