00:00:00,080 --> 00:00:03,310 DAVID MALAN: --it on problem set zero, so we'll be back in five minutes. All right, so we are back and in our-- DOUG LLOYD: Prepare quickly now, we're nearing the end of the first lecture and we're going to start introducing programming, but we're not going to be doing it with a text based programming language, we're going to do it with Scratch. What's interesting about Scratch is that if you go to the website, it's sort of advertised as being for kids six and up, so it has this childish look to it maybe or a-- DAVID MALAN: Childlike. DOUG LLOYD: --childlike look to it, but it's actually quite a powerful language underneath the hood. DAVID MALAN: It is, it has a pretty high ceiling so to speak and wide walls, to borrow Professor Mitchel Resnick's terminology around the language. This is an environment that was initially targeted at students and after school programs, quite young ones, but we actually adopted it some years ago for higher education and for CS50 specifically so as to introduce some basic programming constructs like loops, and conditions, and functions more recently. We also look at threads and events, so it has this high ceiling in that you can actually cover some pretty sophisticated topics that would actually take weeks in a more traditional language like C or Java to get to, but it's all pretty-- I think within students grasp early on, because we give them examples by way of this portion of the lecture via which you can apply those constructs to very reasonable problems in a graphical environment no less. And my god, I mean look at the most canonical program you might write in C just to say, hello world, there's so much syntactic overhead DOUG LLOYD: Yeah, it's a little heavy the first time you see. DAVID MALAN: They include the ints, the parentheses, the semicolons. I mean, none of which are intellectually interesting. You really want to get to the heart of the program, which really is just printing a message like hello world. And we can do that with Scratch. DOUG LLOYD: Now we've been using Scratch since 2007, but since then there's been a number of other drag and drop programming languages like Snap or App Inventor. How come we haven't switched to using one of those or perhaps allowing for mobile development or something like? DAVID MALAN: So, it's definitely unfortunate that the current version of Scratch remains based in Flash, which limits the number of devices increasingly that it can be used on. DOUG LLOYD: Although that seems to be soon changing. DAVID MALAN: Indeed, indeed. They are making strides with Scratch 3.0 toward being HTML5 and JavaScript based, which will be great. Snap is already there, out of US Berkeley. This is a adaptation of Scratch that is implemented for web browsers in HTML5 and JavaScript which works. I've just had certainly a personal preference for Scratch, I mean it's kind of part of our origin story over the past 10 years. So there's that sort of loyalty there, and we only spend just one problem set in one week on it, but it's definitely suboptimal now that some of our students who might want to use a tablet device or might otherwise not want to install Flash on their computer these days-- It's not great. But I think in terms of capabilities it's wonderful, and I think even more compelling is the galleries and the shareability online. What MIT really focused on in Mitchel's group focused on in their Lifelong Kindergarten group is on creating shareability and reusability, remixing so to speak. And the fact that our students by just logging into Scratch's website can share their works, not just with each other, but the whole world, add a nice, I think proud opportunity very early on in the class. DOUG LLOYD: No, it does, and I think that that focus on the community aspect, which ties in really nicely to CS50s own focus on community is a really nice touch, and it's a great way to start the term, I think. DAVID MALAN: I think so. It's a nice way of bookending it too, because we end of course with the CS50 Fair where students are exhibiting all of these works that they created in other more modern languages, or more traditional languages, but right from the get go to can you experience a little taste of that. And I think that's compelling. And you can also learn so readily as a result from other student's programs that are already out there. You can delight in friends programs or kind of share them around. So as such, that feature alone is pretty compelling, so we've stuck with it. Notice the Easter egg, repeat 50 times.