CARTER: OK. Well, hello, one and all yet again. So I'm excited to introduce Peter over here who will be guiding us through how he's used CS50's own tools in his very own classroom and modified some of the curriculum to suit his own students. So thank you, Peter, for being here, and I'll turn it over to you. PETER WADE: Hello, everyone. So as Carter said, my name is Peter Wade. And one of the-- I have two sessions coming up. But this is the first one. And what this really is-- it's the missing class. It's what I felt that I really needed, which is someone to hold my hand, maybe both of my hands, and push me along slowly as I started using all of the different tools. There's a lot of stuff moving here. Among the many things we're going to do is we're going to build the first classroom and the first assignment in Google Classroom. Obviously everyone uses different LMSs. So I'll let you figure out how to translate it in this. But this will give you an idea of how my classes worked and how I found my kids responded to those classrooms. There are going to be lots of questions. If you're online, put them in the chat. If you're in here, please stop me at any time. And I'm happy to answer. So the first one is this, is the good old Google Form. Who are you, and what are you here to learn? I want to know who I'm talking to and what everyone's really curious about because there's a lot of questions when you just start. I started this using CS50 in 2020 for my AP Computer Science class. I then expanded it out to my entire upper school. I was the only computer science teacher like lots of you out there I'm sure, the only computer science teacher and really felt like I was just working alone and needed a big group of support. But I want to know what your questions are as you're starting this, second year, third year, fifth year, 20th year. How are you feeling about all this? AUDIENCE: [INAUDIBLE] PETER WADE: The [INAUDIBLE] blocked. The link is blocked. AUDIENCE: I got it open, but it won't let me select anything. [CHATTER] PETER WADE: Oh, good. OK, yep. Well, I've got some coming in. Try typing in the link. See if typing in the link works. So it's cs50.ly/year1. See if that one works for you guys. Wouldn't be a computer science class if something didn't work the first time. Is the URL working? AUDIENCE: URL works. PETER WADE: The URL works. AUDIENCE: I can't fill in the radio buttons on the form. They're all like grayed out. PETER WADE: Why are they doing that? OK. We're just going to move on from that. But there's some answers in here. So a little bit about myself. AUDIENCE: Are you logged into Zoom? PETER WADE: No. I shouldn't be. AUDIENCE: [INAUDIBLE] Thank you. PETER WADE: Nope. So who am I? So, again, my name is Peter Wade. This is the school I've been teaching at called, the Colorado Springs School. I'm actually a computer science transplant. I started teaching French in 2014. I taught French for four years and then moved into computer science, started looking for a teaching job right as COVID hit, and somehow ended up moving to Colorado Springs. Basically, I won't go into the full detail of it, but a friend of mine dared me to move there after complaining that I couldn't find a job here. And I took them up on their dare. And I spent three years up there. Full disclosure, I am actually taking a sabbatical from teaching for a few years. For a lot of different reasons, I need a more flexible schedule than teaching offers right now. But I intend to go back to it at some point in the near future. But these are some of the things-- so I've taught seven classes in two divisions in the middle school and the high school. I also worked briefly in the elementary school teaching fourth and fifth. I advised the curriculum in kindergarten through third grade. And a lot of the school-- what the school does is from programs that I've built-- and almost every single one of them used CS50 at some level, including the fourth grade classroom, which I was very proud of because kids love the scratch curriculum. So for this session, this is what you're going to need. You're going to need your GitHub username. If you're in the room and you want to learn this, you're probably going to want to be on your computers for this as well. So you're going to need your GitHub username and a Google account to view my Google Classroom. If you don't have a Google account, I unfortunately don't really have a workaround for it. So I'm sorry. But you'll have to follow along with what's happening on the screen. And this is what we'll do. So part 1 is, again, that really handhold, step by step by step by step of how do I make a Google Classroom? How do I get into submit50? How do I do this, that, and the other thing? So we're going to set up an example CS50, classroom and submit50, link and assignment in there to Google Classroom, create an example student, have them join the classroom. And in this case, a lot of you guys are going to be the example students too. I find it really helpful or I found it really helpful to do the class as a student, see how the kids are seeing it and experiencing it before I did it myself. View grade and return the assignment, and then a Q&A from that first part. And as I said, we're going to have a lot of stops. We're going to have a lot of questions. And we're not just going to be in the slideshow. So these are some links you're going to need to get started. Again, all of these are in the slideshow online. If you go on to the Notion page, you can click right here. The one that matters right now, though, is going to be this one, which is my example Google Classroom. So for me, it will take me in here. If you click there, it should pop in and say, hey, I'm looking to join your classroom. It should automatically join you as you click on it. So that's this one right here. In hindsight, I should have gotten a URL shortener. Very sorry about that. Where was it? It's here. Someone let me know if that's actually working. Is it working or is it just blocking you guys out? Let's put it in here. AUDIENCE: [INAUDIBLE] PETER WADE: It's very slow. OK, good. I can't go in on that one. There we go. OK, perfect. It seems to be working. AUDIENCE: So I think I was trying to get into your account. Was told the wrong account for Google Classroom. PETER WADE: OK. AUDIENCE: So I tried to go through the link on your slide. PETER WADE: Let me try this. Let's do that again. If there's anything I've learned from my time teaching, it's that teaching computer science, it's that nothing works the first time. And you just tell the students, just roll with what we got for a second. We'll get there. It's still telling you wrong account. OK. AUDIENCE: It could be a me problem. PETER WADE: Possibly. Let's see. OK, well, we'll continue for the moment. I think it's important to understand what each one of these programs is doing, right? So you've got three separate pieces that allow you to have your assignment, give the instructions, submit it, and get it-- and then grade it. So the CS50 website, which is for-- this is for Python, whatever CS50 module or expansion pack you're using, starts with the website, which includes all of the instructions, the videos, everything that you might need. And if you're like me, you're probably just going to link directly to the assignment or to whatever they're asking about. Then you've got Submit50. And Submit50 is how the kids, when they're working in the development environment, get their work to you so that you can see it, comment, and grade on it. And then you've got your LMS. And your LMS, which is Learning Management System could be anything. I think the most popular ones that I know of are Canvas and Google Classroom. And I just heard of another one. And Blackbot-- I think? Blackboard. So there's a lot of different ones, right? Each one of these works in their own individual space. So I like to think of this, as well-- and all of these systems work the same. Now, I call them the expansion packs. And I have our-- go to all of the different CS50 modules in there are each their own expansion packs. Some of them technically are base games. Like the Scratch and the Python units can stand on their own. But a lot of them require some level of completing a CS50 class itself. But they're very good for when you're trying to expand beyond a single class or when you're trying to expand your offerings without having to build your own class every single time. But that's my discussion for tomorrow if you come back and see me tomorrow. So let's start with the most important part here, which is the assignments. And the assignments is really where-- this is how the kids learn what they're doing. And so to do that-- let me just make sure. Yep, so for this one, we're going to-- yeah, so the kids will complete the assignment-- excuse me-- the kids will complete-- or your students will complete the assignment in the CS50 dev. But the assignment page, which is under the curriculum and the unit for each class is always on the website. And each-- well, almost each unit, but in the AP class, Check50 and Submit50 are there for every single assignment. Check50 is how the students check their work. Anything that they submit to Check50, you can't see. You can see the results if you go to their computer. But you don't have-- that is not how they submit the assignment to you. Submit50 is how they actually submit that assignment. So that you can view it, comment, and all the other things you might need for it. There's also Style50. This was written before I had seen the major updates to Style50, which is really cool, makes it-- which is much nicer than the terminal command window. So I'm really excited for that. So let's talk about how this all links together. And to do that, we're going to get started by talking about the dev. And this was supposed to be-- whoopsie, you can't see it because the colors are all wrong. But the cs50-- the cs5dev is the development environment. And that looks like this. You need to have your GitHub account. Try and log in. Start one up yourself. Show that you got-- let's just make sure that this part works. First thing in the slideshow that works because the first thing you don't you have to do that doesn't involve me. So this is your development environment, which is separated by three separate parts. This one has a whole bunch of files and folders because this is-- I've been using this for a couple of years now. So it's got all my different classes and the school years. But at its core, it's still a-- I think it's a Linux based-- it's a-- I know it's a Unix based environment. And to navigate it, the terminal window, they are going to have to-- the students are going to have to learn how to navigate things in the terminal window. And that usually takes a little while. So if there's anything I can tell you, and let me just put this in a text that actually you can see. There we go, nope. Sure, why not. OK, there's a bunch of Unix commands that you should memorize for day one. So that you don't have to go looking up as the kids as their students are struggling with this, which is cd, change direc-- if you've never used a Linux environment before, cd, mkdir, code, and rm. These are the four commands you're going to need to get started. Memorize them. Put them right there. Because you're going to use them a lot. And the kids are going to-- and the students are going to need to memorize them as well. And half of what you're going to do for unit-- for unit 1 is just reminding kids, no, you've got to make a new directory. No, you're in the wrong directory. You see you're in unit-- you're in unit 0. You need to be in unit 1. No, you can't-- you have to create the file before you can submit it, Ryan. Very simple conversations. But this is a big part of unit 1 is getting the commands correct. To my knowledge, the CS50 development environment does not work on iPads. But I don't know that. It does? How did it work? AUDIENCE: I don't think it worked as well. But he was able to do any assignment I needed him to do on it. PETER WADE: All right, so that's probably because of the update to using VS Code instead of that. But that is-- so if you have students on iPads, they can use it. But you should probably encourage them to use a PC, a PC or a Mac. Because it's a cloud environment, everything you do, online. You don't have to think about it. They go, oh no, the internet went down. Well, their stuff is online. Oh, I lost my file. No you didn't. You didn't do the homework. Pretty simple. One thing that's cool is that they can share the development environment with one another. So if they're working remotely, they can actually share the files and folders with one another and get live updates on it. All right, so Submit50, this is the one that took me a little while when I first did it. So we're going to do this one together. So to do this, we're going to go into submit.cs50.io. And I know it's really small for those of you online. I'm really sorry. So this is what you'll see when you first log in. You hit-- when you get to submit.cs50, it just auto logged me in. But it'll ask you to authorize it with your account. So you authorize it with your account. And it takes you to here. These are-- what you're looking at right here is that I've submitted assignments with this account. That's what you're seeing are submissions I've made. So for your students, they can also log in to Submit50 and see what they've submitted. They can click on it. They can click on Check50. But this doesn't really help us as the teacher. So what we're going to do is we go to My Courses, which is on the right. And this is where all of your courses will be listed. And you'll see this that it includes the submissions with unique slugs. So if we go into this, we go into-- we'll do this one, AP CSP school year 2023. 43 submissions, so we can see my students and their colorful user pictures. And this is where you'll see the results. So if we take a look at-- let's see, we'll do Aidan Yarros. Aiden Yarros, he submitted the program password. And we can see all of the results that are premade by the CS50 staff. If we hit Style50. It brings up the code, shows any style errors that they may have made. And then comments, because comments are important. You can look at the code and make comments on the code. And they can directly access that and see that. That's all through the GitHub system. You don't have to do any of that. But to do this, we have to make a class. So what we're going to do is we're-- is that to make a new class, you have to go to a specific URL. There's not a button in here. I think Rongxin had to email me three or four times to tell me there's no button in there, but where is it? No, it's not in there. You got to do it yourself. So the link to start a new Classroom is courses/new. And that's how you get to create a new course. And then for this purpose, we're going to call this our test example. OK, and then just like Rongxin demonstrated earlier, it will create a new CS50 class, a new Submit50 class that your students can submit to. First deal you have to get the link for them, which is right here. And what I have always done, if you take a look, this is my fake Google Classroom here. I have always, at the very top, made it a material, just to have a unit at the top, which includes Scratch, and syllabus, and then websites, and passwords, and other stuff that they're definitely going to need. At the top, you can make-- I made an assignment typically, just included the link right there. And then I posted it. And now as a student, which is on the right, this is my fake student account. I can go down here to the Submit50 assignment and click on it. And it will now say, hey, authorize CS50 Submit. So I hit authorize. And then I type the password, which is going to be a problem because I can't remember what the password is. Oh wait, it's-- oh, there it is, good. So they click I understand and will grant teachers this course-- yada, yada, yada. So now from their end, this is all that they've got because they haven't submitted anything obviously, right? And from our end, when I reload this page, we can see that I have a single student in this class, CBogus02131. I'm sure that there'll be a very pop-- I'm sure that there'll be a great programmer. So now let's do an assignment. Hold on, I think I'm jumping ahead of myself, excuse me. Create a new class. So the other thing that we need to do, and this was another part that took me a little while is that for each student to-- their work to appear in your Submit50 Classroom, you have to include the slug to make the Submit and Check50 slug. So at the bottom of the page here, you'll find the Check50 or the Submit50 slug. And you copy everything from down here and paste it directly into the assignment. So you click-- whoops, yep, here we are. Oh, you need to hit Settings. That's why. So we go to Settings and then at the bottom here, you'll see slugs. Right now, it's empty. You paste that in there. And now, anytime a student submits that assignment, it will submit their work to your Google Classroom-- or to excuse me, to your Submit50 Classroom. And so in this example I have here, the first assignment, which is Hello. So if we look here, here is the assignment page for Hello. It's got all the steps. Hello is a great starting point because it's-- it's a step by step by step. It's more of checking that they understand how to submit work. So they've got all of the instructions and all this, and yada, yada, yada, yada. And then all we have to do is we can run-- is that as a student, we can just run Check50. So we-- but when I click paste it in and you'll see this very, very, very, very often, where students will paste in Check50 and they'll get this complaint. You seem to be missing the required files. It's because you're not in the right directory. You will have that discussion at least 10 times per assignment. So we type in LS, it shows us that we're in the right directory. OK, now we paste in Check50. And we don't have to do the whole backend linking that we were doing last year, which is another great improvement since last year. All right, so we can see now, this is what the students will see. Is that they'll see hello.c exists. And I'll expand this up a little bit. We'll see hello.c exists. And we'll see hello.c compiles. The students will often just type this in and hit this again, and again, and again. Always remind them, click on the link at the bottom. So they can actually see what's happening and what the computer is expecting, what's popping back. So we can see this. Now, for this purpose, we're just going to submit this. So we take the same slug, let me change Check50 to Submit50, Submit50. And then we see the-- keeping in mind the courses, that was really fast. So we see here now in our Submit50 Classroom that there is a single submission from one student, CBogus, who got a 2 out of 4 on their Check50 assignment, who got a 1.00 on their Style50, and who has-- and that has zero comments in there. Now at the moment, there is not a way to-- you have to-- then to give the grade back to the student, hold on, let me just make sure I'm not jumping ahead of anything. So that's the key point to understand what Submit50 is doing. You create a new class. It validates each student, add themselves correctly. And then add slugs you intend to use the slug list. I guess you can also leave the slug list open with not the root directory, with the lower directory. I've always just manually put each one in. So it'll work in either way. Nice thing with this, even if you have forgotten to add a specific slug, a student can still submit the assignment. You can still capture it after adding the slug. The student doesn't have to submit the assignment again if you have not put the slug in. Very, very useful. And then you add the relevant material from the assignment page to your LMS. So in my case, the way I typically ran it was I had each assignment as a Google Classroom assignment. My students will look anywhere on the internet for their homework instead of on the website I tell them to go to. They'll look in Google Classroom. They'll put it into Google. But they will not go to a separate website. So I always found it easier to give a link to the assignment directly, which here is Hello, as well as a video with our good old friend Brian Yu. My students really liked Brian Yu this year. Really excited every time he came on the screen. And then I also included the Check50 and-- oops, excuse me. And then I also included the Check50 and the Submit50 slug. So that they could just copy paste them in to the terminal window, really quick, test their code, submit their code, reduce complaints and improved their performance. Now, I want to get you Open, Edit, there we go. And again, there's no link between Google Classroom and Submit50. It's an independent system. At the moment, to my knowledge, there isn't anything that links the Submit system to any LMS system. So the students can't get graded through Submit50. It only checks what they've done. OK, we're going to try that in a second. So I'm going to stop here because I've gone through a lot. And I'm curious what questions there are in here as well as online. In this Classroom, are there any questions that have appeared as we've gone through this? Yes. AUDIENCE: Can you [INAUDIBLE] the link to create courses? You said courses-- PETER WADE: So the question was, what is the link to create a new course? The way to do that, again, is you go into the Submit50 system. You go into submit50.cs50.io-- and hold on, and see if I can get a notes-- there's a way to somehow. So I'm just going to make this a nice big document for everyone, so you can see. OK, so you've got your general link here. And the way you add a new course is by adding on to that URL N-E-W, new. And that's the URL to make a new class in Submit50. So the question? That took me about three months to figure out. Any questions from online? AUDIENCE: Yeah, we have a quite a few. You want me to go through them? PETER WADE: Yeah, would you mind throw one or two or three? AUDIENCE: So from Hilda, we have what is the setup process for students? Do they need to create a GitHub account in advance? And can you batch create for the students in advance so they don't have to spend as much time? PETER WADE: To my knowledge, you can't create accounts for students because it needs to-- GitHub has two factor. And the two factor defaults to their email address. So each one of them needs it. I'm going to talk about this later because I've got a layout to class. But in the same way that this presentation is called day one, year one, day one. I have what I call year one, day two. And day two, you just acknowledge you're going to lose the entire day to getting the kids set up with the tools. Because the kids are going to run into problems. One of them, their GitHub account isn't going to validate. And you're going to have to spend half an hour working with them, trying to figure it out. If there's any recommendation I can have, any class that you are primarily using GitHub, and it's going to be much better now that we don't have to do the-- there used to be this backend thing that you needed to link the dev environment to with GitHub. And that alone would take about 20 minutes for each student. That's gone. Much better now. But yeah, you're definitely going to have to take at least one day, possibly two days. It's OK. You'll get through it. I promise. But just tell the kids this is going to take a day, please be patient. We need to set each of them up with a GitHub account. You're going to need to set each of them up with a Scratch account if you're doing the AP class. I truly do recommend doing the Scratch unit zero. You can skip it if you want. I think it's a great way to set them up for the concept of doing a big project at the end of each unit. OK, excellent question. Another question from online. AUDIENCE: Sure a couple of questions couple of the questions here have been focused on how are you supposed to grade the students, if not on Submit50? PETER WADE: The way that I did it is I created-- excuse me-- I created a set of-- excuse me-- I created a set of rubrics. So that I could really quickly go through. So I had a lab rubric. I had a assignment rubric. I had bigger complex rubrics. So that as they were going through, I could really quickly just go, OK, this program includes everything. In my case, I put it down to the following. This is a lab assignment. Labs are shorter. They're 10-- they're 10 points each. Does the program include comments? Does it meet style expectations? Is it functional? Does it meet edge cases when I throw edge cases in? And is the program efficient? Those were the core concepts that I focused on labs. Projects, obviously, were bigger, more complicated. And they had more points added on. I always graded-- I told the students that they would get their grades through our SMS, which was Renweb, which is a terrible SMS, for the record. But you can find your grades there. Then they can find their grades there. I would grade them in Google Classroom. But at the time, CS50 did not have any-- the Submit50 system did not have any grading capability other than adding comments to their work and showing off what they missed from the checks that were written. And it can be important. Sometimes the kids-- had this happen once where kids will-- you have to be really careful when they submit. Because sometimes they won't-- they will just work to get the questions right. So they'll get all green faces. But they won't actually think about what the problem is. They won't actually think, oh, how do I make it say someone's name, instead of just, OK, I'll make it say this. If the name is this. That was one-- that was actually one that one of the first assignments that I found was that the kid made it so that if the username was equal to this, and they went in-- I was impressed with their level of work for this one. They went into the C library, found out how they compared strings correctly, which if you know C, you can't compare strings directly to each other. But they looked at that, checked what the input was, and then output something specifically. They didn't output the variable. They just output a string specific to each one, which I was very impressed by. But he still got a 0-- or he still got a 5 on the assignment. One more, I think. One more from online if there is? AUDIENCE: Yeah sure, there's been a couple of questions just regarding-- you've been mentioning Google Classroom here for the last few slides. Do you have any other LMS systems that you would recommend that are compatible with Submit50? PETER WADE: I mean, every system is compatible with Submit50 because it's not connected to it. Submit50 does not link to any LMS that I know of. And I would look at the-- Rongxin is that true? Does it-- does it connect-- does Submit50 connect to like Canvas, or Google Classroom, or anything? Or is that an idea in the future? RONGXIN: It is not out of the box possible. But we do offer API. If you have the technical savvy, you can build that connection to Canvas. Canvas also provide API. PETER WADE: So there is a way-- you can build a software that will connect it directly. But by default, Submit50 runs in its own box. I go back to this. Each one of these runs in their own little box online. The AP website, Submit50, the dev environment, and your LMS, each one of them is sequestered in their own little circle. And other than Submit50 and the dev environment, they don't really talk to each other. All right, now to those of you in here, if it's-- probably just going through stuff that we've all done. So I'm going to keep moving. A couple of pointers for those of you who are-- sorry, I should stop clapping right in front of the microphone. One of the trouble-- one of the ways that I have taught has been to teach mostly flipped. So the students will come-- will watch the video through Edpuzzle, come into the classroom. And they'll get a shorter lecture. They'll still get a lecture of some level. But they'll get a shorter lecture about how to do the assignment. Maybe I'll give them a couple lines of code to get them started with what they're doing. But you have to keep the time in class varied. Because otherwise, they'll just feel like they go in every day to do the same projects. And if they're not-- they really-- and if they feel like they're not making progress, it becomes a real chore for them to be in class. And I had a student tell me that. That was one of my-- my first teaching year, I made that mistake. So that's my recommendation. They also can really get to a point, you have to manage it-- and it takes a while to learn this, you have to manage the class in a way-- if you're having them work in class, you have to manage it in a way where they do not just rely on one student to do all the work and then all just copy and change it slightly. AI is another whole thing. But I think the best thing suggestion I have is the labs, when I did my classes, I would do the video lecture. And then I'd give some specific lectures about whatever I'm trying to do, maybe go into more detail on a specific topic, memory addresses were a big one because it took them a little while to understand a string starts at a memory address. My biggest suggestion is-- the way I did it was that the labs, which are back, and I'm so glad that they're back, because they're so useful. The labs would do-- would be their own thing. I would usually walk them through the steps to complete it. And then they would get to the assignments. And they would be more on their own. They're allowed to work together. They're allowed to talk to each other because let's be honest, that's what professional programmers do. But it's still up to each of them to do the work themselves. Make sure students know where the hint section is. As I said, kids will look anywhere on the internet for an answer except where you tell them to go. They won't read-- they really don't want to read. They'll just start jumping into the program without thinking. So reading through the assignment expectations, really easy way to remove that problem. I have, generally, I didn't send kids home with homework. But sometimes I would. I had what I called the 15-minute rule. Where a kid, when they were a student, when they were home, had to spend 15 minutes on a problem themselves before they tried-- before they gave up and went to the internet or emailed me. They never did that. They always went to the internet. And then in later in the year, they went to chatGPT. But that was a tool that I thought was really good. AI, this has been a whole discussion. I'm sure every single teacher in this room has had to deal with AI. A lot of schools probably did the exact same thing that we did where we said no AI, don't touch it. We blocked it from the school Wi-Fi. This AI tool that I just saw, I haven't tested it yet, but it seems great in that it gives that-- leads them to the answer without giving it to them the same way that chatGPT says. I always put it like this, though, if you're doing the AP class, the answer to every assignment is on the internet. Every single assignment has been completed probably 1,000 times by 1,000 different people who have 1,000 different solutions. And I always told the students, it's unlikely I'm going to catch you if you submit someone else's assignment every single time. I probably will because all of a sudden, I'll ask you to do a program assignment without the internet. And then you can't seem to do it. But just tell them, if you just copy paste from the internet, you're not actually learning. And you're saving yourself in the short term, but the moment you take the test, you're going to just crash and burn because you're not going to understand what the programs are doing. Couple suggestions from my first year that I wish I had known. This is an example of a semester progression. This is with US years and breaks. The school I worked at had an experiential ed program. So we essentially had-- we took our students out of what they were normally doing for the entire month of March. They did three weeks of an experience program and then a week of vacation. So they would come back in April and have forgotten absolutely everything, which caused its own problems. But that was-- so that's why this is adjusted this way. This, again, is a class designed for the AP board. If you're doing AP principles, obviously, adapt it to your own. So like I said, day two, setting up GitHub. Get them onto the AP testing if you're doing the AP testing. Scratch and the technical stuff. It's going to take a day, possibly two days. You're just going to live with it. Week one, last week of August, we usually start at around August 20. So usually Scratch can be done in a week. They love Scratch. It lures them in. I always tell them it lures them into this false sense of security that oh, this isn't going to be too hard. I don't think Mr. Wade is the hardest teacher. And then I just take him to unit 1. And I always tell them that I'm leading them up to the cliff. And then they're looking down. And I give them a little kick. So that they fall in. But I also jump down with them. So unit 2-- unit 1 usually takes about two weeks. Unit 2 depends on your students. Obviously, this is a rough estimate. October, about unit 2 is three weeks. Unit 3 is two to three weeks. And unit 4 is three weeks, would be another three weeks. So I would say plan about three weeks per unit for high schoolers. Again, your high schoolers may be completely different from mine. My high school students, in addition to taking my class and four other APs, they would also have basketball practice, and ice skating practice, and then they would go home and have to tutor a kid because they're-- our parents are really want their kids to do everything. Yes? AUDIENCE: Did your students do the work outside the class? PETER WADE: So the question was did my students do the work outside of the class. Because it was flipped, they really focused more on videos and quizzes outside of class. In class, they did the programming. Out of class, they didn't have homework assignments in that I rarely sent them home with a programming assignment, if that makes sense. And that's how this work-- this is assuming 2.5 hours a day-- 2.5 hours a week of class. If you're planning for the AP test, I think I go into this later, you can kind of skip 5 if you're running out of time, which I always did. I always wanted to cover it because it's a great unit. But I never had the time to do it. And then the performance task, which is its own thing. Again, this is for AP teachers. If you're not an AP teacher, I'm very sorry. But the performance task is a major thing for everyone. And then for my-- again, for the AP, I would stop sort of intensive programming and teach the other units for the test because it matters that for-- it matters for kids and for their parents that their kids pass the test. It's an expensive test now. And then in May, after they have submitted the performance task and after they've taken the test, I would say what are you interested in? What do you want to learn? And that's sort of a progression for a standard class. And am I about to talk-- no, I'm in good shape on time. So if you're building for success on the performance task, 12 hours of classroom time and you can't help them. The only thing that you can resolve is if the dev environment breaks. If there is a technical issue that they can't solve that is not related to their program, you can't help them in any way. And they need to know that going in. They can use the internet. They can use other tools. But they cannot use their teachers. It is always best to complete this after unit 4. Have at least two or three weeks of programming in their heads before they start the performance task. They can complete it in any language. I was really impressed this year because usually I have one or two students who take-- who do it-- who tap out of C and do it in Scratch. And every single one of my students said, no, I understand C better at this point. So they did it in C. Very impressed with that. I'm not sure that the graders on the College Board are going to be as impressed. Because it's going to be harder to find a C programmer. It is OK to mix an existing idea from their previous work. But their code must be original. I really-- and students need to have an interest in what they're doing. Really tell them that because some of the kids will be like, oh, I'll just copy an idea. I'll just get an idea from online. Not if you're not interested in it. I had-- I think an assignment I was just not very impressed with because the kid looked at it and he said, I'm not interested in this. But I'll do it because I need a performance task. And it really showed. It was the absolute bare minimum. And it was actually below the bare minimum. So he didn't pass the performance task, which I was really upset about because he's a really bright kid. But he didn't pick a topic he was really interested in. By contrast, I had a student really not interested in, really had a hard time with programming. But he picked a chemical picker essentially, so it was a cool idea to go through an array, pick up chemicals by molecule weight, or something like that. I was amazed at the work he did because he was interested and engaged with the idea of what he was doing. So if you're teaching the AP test, make sure that the kid is-- the student is interested in what they're doing. It's OK for them to take an existing idea, build upon it. It's OK for them to remix an existing idea. But it has to be their code. They can't just take the code they previously did, paste it in, and add a line or two and submit it as their own. And you cannot let a kid, a student, submit an assignment you have graded, period. Again, this is College Board stuff. But they cannot submit an assignment that has already been graded. I always took the extremely cautious line of not even accepting-- I would not grade their work. They would get a 20 out of 100-- they would get 20 points for submitting the assignment itself, but not actually-- I never looked at the assignment and gave it a grade. They just got a grade for completing it. Preparing for the test is one where you can take all of the other modules in CS50, or the expansion packs in CS50 and mix them together. Impacts of computing, SQL, and understanding technology, you're going to want to go through all of those because that's all stuff that's going to be important for them. Great book for-- and this is not just for those of you teaching the AP course, this is just a generally good book about the impacts of computing and algorithms, which I think came from the syllabus a long time ago, which is Hello, World. CS50's understanding technology is-- basically, that's the whole thing. It's all in the-- if you look on the AP website, you can see right here. And this is the wrong size. If I go into the curriculum, you've got the CS50T, CS50X, and the AP modules. So everything's right there for you. Because it's all approved by the College Board anyway. And lots of practice tests. You have to do that through the College Board website. And the final thing, I promise this is the end before we have a longer question and answer session, is if you're online, I'm curious how many of you and in here, for those of you in here, how many of you are the only computer science teacher in your school or your district? That's what I was for years. Online, I'm sure a lot more hands are going up. It's hard. And I say this in my second session, it's very challenging to be the only teacher. I know because I did it not only in computer science. I did it in French. I had a whole department of other language teachers. We had German. We had Spanish. I was the only French teacher. So you're working alone. So it's really important, join a community, not just this one. Join an online community. You can join the CS50 lists. Great for when you've got a question, when you've got some sort of problem. You can just post questions in there. But join a CS teachers group. And this is a really goofy one, this is a really goofy one. But ask around. While it's unlike-- it depends on where you are. But if a local high school doesn't have a computer science teacher, the nicest thing about the education community is that we're all together. And I would email the local community college and ask for anyone there if they wanted to talk about it. We ended up going out on Thursdays. And we made a small-- and we made a deal of it in Colorado Springs. Questions from in this classroom? Hopefully I've covered everything. I'm trying to think if there's anything I have missed. And I don't think so. Yes? AUDIENCE: You said you flip your classroom. Do you grade them if they watch or don't watch the videos or-- PETER WADE: So the question was I flipped my classroom. Yes, they did get a grade for completion of a video. So I had a-- I had-- I put it in-- I would put the full video in Edpuzzle. They had to watch the full video in Edpuzzle. And then they would have a quiz. But I told them it was OK to do it over the course of a couple-- over the course of a week or two. So they would watch it while simultaneously learning about what they were doing. Usually, the quiz was due at the end of each unit. So they would do all the work. And then they would put the answers in the quiz. Each time, it's a good-- if you're looking for quiz material, which I always was, put it in the notes. Again, the kids will look-- the students will look for answers anywhere but the one place that it tells them. And you can find some really great question material in here. This is a great-- this is great material. I wish I had known about it when I took CS50 too. But I didn't read it because I was-- wasn't paying attention. So these are-- so that's a suggestion for you. If you want to build-- if you build quizzes for each unit, definitely look through the notes. Great spot for all the different materials. Yes? AUDIENCE: This might be a better question for your second-- your second talk. PETER WADE: That's OK. AUDIENCE: If you see a student who is beginning to fall behind, like you see like they were really in it with the Scratch, and then they like, when they get hit by that-- or they jump off that cliff, to use your metaphor, and then-- and you just see like missing assignment, missing assignment, missing assignment, what's a strategy that you use to bring them back on board? PETER WADE: That's a great question. And the answer is it depends. I had, as an example, I had a student, very sweet-hearted student who just couldn't keep up with the material. Partially because he wasn't there for a portion of it. He had some pretty serious family issues. Goes into the differentiation aspect. I would extend time. I very rarely kept kids to-- I would tell them this is due this day. But if I saw that they were making an honest effort to complete it, and they just were not getting it, I would say it's OK. I think now in terms of differentiation, I think that the AI toolbox that they've provided is going to be a game changer, absolute game changer. So I think that's one point to know is that to say it's OK to use this AI tool. But you can't use any others because it will answer the question. At some point, you're probably going to get a student who just can't do it. And it's really tough when you get that. And the answer is I don't quite know. The way I handled it is that it was a senior who, again, just could not-- he couldn't get the logic underlying the computer science, even when he came to me for help. He was in my office basically every day. And what I ended up doing was I dropped him out of the AP class, put him in topics in computer science and had him take the Scratch curriculum because he responded really well to the scratch. He was dyslexic as well, which if you're programming in C is almost impossible to handle. But that was how I handled that situation. And it worked. He did it. He did really well in it. Created a really cool project that I'll show you later. Any questions from in the room? Other questions from in the room? Any questions from the internet? A lot? AUDIENCE: We have a few questions. One about the slides from earlier, with your example curriculum structure for the AP course specifically. You talk about units. How do you structure each unit? What content goes into each unit? PETER WADE: I'm sorry, what contact goes with what? AUDIENCE: What content goes within each unit? How do you structure by unit? PETER WADE: Oh, I just-- I took exactly what was in each unit in the syllabus. The typical progression was something along the lines of they would start the video, simultaneous to them starting the video, I would talk through the lecture. I would pinpoint a couple of points, so like talking about header files or talking about strings. I would take a class, give a lecture specific to that, then do a lab. And then move on to the next topic, and then do a lab. And then I would-- once I felt that they were comfortable enough with it, I had them do an assignment. And again, I would typically-- I always played the assignment videos in class, because again, it's the only way they're actually going to pay attention to it. I would often have them read the assignment out loud. And I would always tell them, look at the hints. You repeat that. Everyone online, look at the hints, with me. Look at the hints. They need to look there. Because the answer is sitting there. And they can figure it out. They just need to read. So I think that hopefully that answers the question. The shorts are great too. Highly recommend making sure that they watch the shorts when they're stuck on a specific topic. Very useful. Another online question? AUDIENCE: That's pretty much it. Just quite a few about the units, that's all. PETER WADE: So I hope that this has been helpful to those of you who are starting this. Again, this is-- I made this as an example for the AP class because that's what I started teaching. And I think it's still the flagship that I put together. But if you're interested-- those of you who are looking to expand your program or are looking at the other expansion packs, I'm giving another session, I think it's at 11:30 tomorrow. I can't remember the time. But I'm giving another session tomorrow, which is about expanding a program using CS50 without burning yourself out because that's a big part of teaching alone. Is it's so easy-- because it's so easy for the administrators, they come in. And they're like, hey, you taught one computer science class. But what if you taught another one? And you're like, but I'm a math teacher. And they're like, yeah, but you know, you could teach an artificial intelligence class, right? And you're like, yeah, sure, Ron. Whatever you say. One final thing that I actually did forget to mention, which goes back, and I promise then I'll stop talking, which is when I went to the keeping kids interested, which is somewhere in here. And I think it's after this. Keeping students interested, take a break from time to time. They're going to be doing this the whole year. If they're doing it a semester of the year, give them a break. It can be hard for students-- and this is something that I think we, as teachers, don't always think about. Is that computer science is a new subject that's been added. But no one's ever said, OK, we're adding computer science, but we're going to subtract math. Or we're going to subtract English. And absolutely, we shouldn't. But for a kid who's-- for a very high performing student who's taking four or five AP classes, who's taking a bunch of honors classes, who's in some very difficult subjects already, adding another hour of work over the course of three days may not sound like a lot. But when you stack it on everything else that they're doing, it can be really hard for them to put that energy in. And it can really discourage kids from joining-- students from joining your class. So I really do say give them a break. Try and give them some leniency. Programming is a lot of fun when it's not being graded is what I've found, which I say as a teacher having graded plenty of programming work. But it can be very discouraging for kids who've got so much going on that they just can't add another thing. And the other part is that in my AP unit, I added a digit-- you don't have to copy/paste exactly what is on the CS50 website. My AP unit, every one of my intro in AP units had a unit where we did Photoshop because it's a fun way to teach file directories. And it gets them to think, OK, well, computer science isn't just about programming because that's not what it is. If you look at the huge field of computer science, there's a very small-- there's a large number of programmers. But there's a large number of graphic designers, IT professionals. A network engineer may have never programmed in their life. But they're still a very important part of the programming field. But that's a whole topic for my other session. All right, thank you so much. [APPLAUSE]