1 00:00:00,000 --> 00:00:03,633 2 00:00:03,633 --> 00:00:05,300 DAVID MALAN: All right, hello, everyone. 3 00:00:05,300 --> 00:00:07,630 This is the CS50x educator workshop. 4 00:00:07,630 --> 00:00:08,290 Welcome back. 5 00:00:08,290 --> 00:00:12,490 So nice to see so many familiar faces and names now. 6 00:00:12,490 --> 00:00:14,980 Before we dive into today's session, which 7 00:00:14,980 --> 00:00:18,400 is on writing assessments, quizzes, and other assignments, 8 00:00:18,400 --> 00:00:21,130 led by CS50's own, Margaret Tanzosh, allow 9 00:00:21,130 --> 00:00:23,680 me to see if anyone here in the group would 10 00:00:23,680 --> 00:00:27,070 like to say a hello and a little bit about yourself, 11 00:00:27,070 --> 00:00:29,140 if you haven't yet shared. 12 00:00:29,140 --> 00:00:32,140 Anyone willing to say hello with a blue hand? 13 00:00:32,140 --> 00:00:33,852 Raymond, start with you. 14 00:00:33,852 --> 00:00:34,810 AUDIENCE: Hi, everyone. 15 00:00:34,810 --> 00:00:36,160 This is Raymond, from Brazil. 16 00:00:36,160 --> 00:00:39,370 I have watched the afternoon session from Margaret. 17 00:00:39,370 --> 00:00:44,380 So pay close attention to what she has to say because she 18 00:00:44,380 --> 00:00:46,850 has really good advice for us. 19 00:00:46,850 --> 00:00:47,590 So let's go. 20 00:00:47,590 --> 00:00:48,790 That's it. 21 00:00:48,790 --> 00:00:51,490 DAVID MALAN: Wonderful. thank you for teeing us up. 22 00:00:51,490 --> 00:00:55,910 Any other hellos or greetings from folks? 23 00:00:55,910 --> 00:00:56,870 No? 24 00:00:56,870 --> 00:01:00,920 All right, I think all the more time for Margaret's introduction, then. 25 00:01:00,920 --> 00:01:05,160 So Margaret Tanzosh has been teaching in New York City at high school. 26 00:01:05,160 --> 00:01:09,870 She's also served as a teaching fellow for CS50's extension school version. 27 00:01:09,870 --> 00:01:13,160 She's done an extraordinary job adapting materials and bringing 28 00:01:13,160 --> 00:01:14,390 her own into her classroom. 29 00:01:14,390 --> 00:01:18,260 She's wonderfully invited us a couple of times down for hackathons, of sorts, 30 00:01:18,260 --> 00:01:19,220 with her students. 31 00:01:19,220 --> 00:01:22,070 And we're joined as well by CS50's own, Brian Hume. 32 00:01:22,070 --> 00:01:26,370 But first, Margaret, take it away. 33 00:01:26,370 --> 00:01:29,780 MARGARET TANZOSH: Goodness, thank you so much for such a wonderful introduction. 34 00:01:29,780 --> 00:01:31,520 I'm going to share a couple of slides. 35 00:01:31,520 --> 00:01:34,320 And then we'll take it from there. 36 00:01:34,320 --> 00:01:36,830 All right, so some of you I've already met. 37 00:01:36,830 --> 00:01:39,020 But if I haven't met, you just to give you 38 00:01:39,020 --> 00:01:41,690 a little idea where I'm coming from. 39 00:01:41,690 --> 00:01:44,170 This is the school that I work at in New York City. 40 00:01:44,170 --> 00:01:46,130 It's a public K through 12 school. 41 00:01:46,130 --> 00:01:48,460 It's a gifted and talented school. 42 00:01:48,460 --> 00:01:51,980 So we have a lot of students that are really very much ready to learn. 43 00:01:51,980 --> 00:01:54,480 We also have IEP students and struggling students. 44 00:01:54,480 --> 00:01:56,210 So I have a wide variety. 45 00:01:56,210 --> 00:01:59,240 I teach primarily 11th and 12th graders. 46 00:01:59,240 --> 00:02:01,490 And this was from a hackathon we had last year 47 00:02:01,490 --> 00:02:05,390 that David was kind enough to come and visit and spend the day with us. 48 00:02:05,390 --> 00:02:07,280 We invited middle school and high school. 49 00:02:07,280 --> 00:02:10,699 And they had an amazing time that day, delving into some great programming 50 00:02:10,699 --> 00:02:12,260 problem. 51 00:02:12,260 --> 00:02:14,900 So I've been teaching CS50 at Nest+m. 52 00:02:14,900 --> 00:02:19,040 It stands for new explorations into science technology and math, 53 00:02:19,040 --> 00:02:20,360 for five years. 54 00:02:20,360 --> 00:02:22,070 I have a lot of students, typically. 55 00:02:22,070 --> 00:02:24,890 I generally have about four sections of an intro level 56 00:02:24,890 --> 00:02:29,330 of computer science, one section of AP Computer Science principles. 57 00:02:29,330 --> 00:02:32,560 And because I've been able to so customize and really fit 58 00:02:32,560 --> 00:02:34,760 the CS50 curriculum to what I'm looking to do, 59 00:02:34,760 --> 00:02:38,060 I've been able to make it work for all of my classes. 60 00:02:38,060 --> 00:02:41,300 So one of the things we're going to do when we start out 61 00:02:41,300 --> 00:02:44,290 is that we're going to work with Brian. 62 00:02:44,290 --> 00:02:46,790 We are going to give you a little bit of an overview of what 63 00:02:46,790 --> 00:02:50,990 it looks like to actually have that whole workflow from submitting 64 00:02:50,990 --> 00:02:54,900 at the command line, a program, from my ID. 65 00:02:54,900 --> 00:02:56,930 And you can see on the teacher's side what 66 00:02:56,930 --> 00:03:01,510 it looks like from the teacher's Submit50.IO, as well. 67 00:03:01,510 --> 00:03:03,470 So let's go back. 68 00:03:03,470 --> 00:03:04,930 Sorry. 69 00:03:04,930 --> 00:03:07,540 So I'm going to come into my IDE. 70 00:03:07,540 --> 00:03:10,870 And you could see here I have a version of Cash. 71 00:03:10,870 --> 00:03:13,060 And it looks pretty good. 72 00:03:13,060 --> 00:03:15,470 I'm going to try to submit it and see what happens. 73 00:03:15,470 --> 00:03:18,160 So I've CDed it to the correct directory. 74 00:03:18,160 --> 00:03:20,230 And I'm going to use the correct slug. 75 00:03:20,230 --> 00:03:22,830 Each program has its own slug. 76 00:03:22,830 --> 00:03:26,510 And oh, because I typed it in wrong. 77 00:03:26,510 --> 00:03:30,190 But before I do that, actually, let me actually turn it over to Brian 78 00:03:30,190 --> 00:03:33,580 to show how this is actually going to get to him and then come back to me. 79 00:03:33,580 --> 00:03:34,540 I'll fix my syntax. 80 00:03:34,540 --> 00:03:35,980 And I'll set submit it up on time. 81 00:03:35,980 --> 00:03:38,290 BRIAN YU: All right, thanks very much, Margaret. 82 00:03:38,290 --> 00:03:41,110 So if you were here for the session two days ago, 83 00:03:41,110 --> 00:03:45,010 I showed you submit.cs50.io, which is the web application 84 00:03:45,010 --> 00:03:48,340 that you can use in order to collect student submissions 85 00:03:48,340 --> 00:03:51,700 and also to view the results of Check50 and Style50 86 00:03:51,700 --> 00:03:53,710 that have been run on your students' work. 87 00:03:53,710 --> 00:03:55,570 So Margaret and I today are going to show 88 00:03:55,570 --> 00:03:58,390 you is just a sample of what that workflow actually 89 00:03:58,390 --> 00:04:00,260 looks like in practice. 90 00:04:00,260 --> 00:04:05,950 So I have here a sample course that I've created on submit.cs50.io. 91 00:04:05,950 --> 00:04:09,580 And what you'll notice here is that in my configuration page, 92 00:04:09,580 --> 00:04:11,200 I have an invitation. 93 00:04:11,200 --> 00:04:14,550 This invitation link is something that you can send to your students. 94 00:04:14,550 --> 00:04:17,440 And when your students click on that invitation link, 95 00:04:17,440 --> 00:04:21,640 they'll be prompted to join your course on submit.cs50.io. 96 00:04:21,640 --> 00:04:23,800 And what that means is that you, the teacher, 97 00:04:23,800 --> 00:04:27,158 will get access to your students GitHub repositories. 98 00:04:27,158 --> 00:04:29,950 You have the ability to see their work, see what they've submitted, 99 00:04:29,950 --> 00:04:32,440 see the results of automated correctness tracking, 100 00:04:32,440 --> 00:04:36,130 and also have the ability to provide feedback on your students code, 101 00:04:36,130 --> 00:04:37,620 all via GitHub. 102 00:04:37,620 --> 00:04:41,320 Down beneath that, there's a section for specifying which slugs 103 00:04:41,320 --> 00:04:45,997 or unique identifiers you would like to use as part of the course. 104 00:04:45,997 --> 00:04:47,830 So for example, if you're teaching a course, 105 00:04:47,830 --> 00:04:52,660 it's based on the CS50x 2020 materials, I could include something like 106 00:04:52,660 --> 00:04:59,510 cs50/problem/2020/x inside of the slug section of this configuration page. 107 00:04:59,510 --> 00:05:03,490 And that means that any time that any of my students submit a problem 108 00:05:03,490 --> 00:05:06,220 that begins with this particular prefix, then 109 00:05:06,220 --> 00:05:08,410 I will be able to see that problem. 110 00:05:08,410 --> 00:05:11,560 And I'll be able to take a look at the results there, too. 111 00:05:11,560 --> 00:05:13,512 So I'll now turn it back over to Margaret. 112 00:05:13,512 --> 00:05:15,220 And she's going to show you what it looks 113 00:05:15,220 --> 00:05:16,637 like to actually submit a problem. 114 00:05:16,637 --> 00:05:18,345 And then I'll come back and show you what 115 00:05:18,345 --> 00:05:21,370 it looks like from the teacher's perspective, once a student submits 116 00:05:21,370 --> 00:05:22,470 their work. 117 00:05:22,470 --> 00:05:23,662 Margaret, back to you. 118 00:05:23,662 --> 00:05:25,120 MARGARET TANZOSH: Thank you, Brian. 119 00:05:25,120 --> 00:05:27,400 So I'm going to come back to my IDE. 120 00:05:27,400 --> 00:05:33,610 And what I did before is that I forgot to type it in [INAUDIBLE] So the code 121 00:05:33,610 --> 00:05:38,200 is going to be submit50, and then followed by the slug. 122 00:05:38,200 --> 00:05:42,050 And you notice how the slug has that prefix that Brian was talking about. 123 00:05:42,050 --> 00:05:45,100 So this is going to be viewed by him when I submit it. 124 00:05:45,100 --> 00:05:53,350 And I'm going to be typing in my GitHub username, my GitHub password. 125 00:05:53,350 --> 00:05:56,920 And at this point, I think the code will begin to start to upload. 126 00:05:56,920 --> 00:05:59,560 And it's telling me that the file that's going to be submitted 127 00:05:59,560 --> 00:06:01,600 is my source code, cash.c. 128 00:06:01,600 --> 00:06:03,790 And the file that's not going to be submitted 129 00:06:03,790 --> 00:06:07,420 is my compiled code, my object code, because once I submit it, 130 00:06:07,420 --> 00:06:12,040 the Check50 portion of the Submit50 is actually going to compile my code 131 00:06:12,040 --> 00:06:15,680 and make sure that it's compiled properly and run a series of tests. 132 00:06:15,680 --> 00:06:19,240 So I'm going to say, yes, to the academic policy, academic honesty 133 00:06:19,240 --> 00:06:20,560 policy. 134 00:06:20,560 --> 00:06:22,770 And this is now going to be uploaded. 135 00:06:22,770 --> 00:06:26,000 And if I wanted to see my results, I could click on this. 136 00:06:26,000 --> 00:06:27,580 But I'm a student. 137 00:06:27,580 --> 00:06:29,538 A lot of my students don't really always check. 138 00:06:29,538 --> 00:06:30,997 I'm just going to leave it at that. 139 00:06:30,997 --> 00:06:32,140 I think it looks good. 140 00:06:32,140 --> 00:06:34,480 So I'll just send that back to Brian. 141 00:06:34,480 --> 00:06:37,040 BRIAN YU: All right, so Margaret has now submitted her work. 142 00:06:37,040 --> 00:06:40,360 And now it's time for me, the teacher, to take a look at it and review it. 143 00:06:40,360 --> 00:06:44,050 So if I go back into submit.cs50.io, you'll notice along the top, 144 00:06:44,050 --> 00:06:47,200 there are a couple of different pages associated with each course. 145 00:06:47,200 --> 00:06:49,540 I have so far been showing you the settings page, which 146 00:06:49,540 --> 00:06:52,300 just allows me to configure the invitation link 147 00:06:52,300 --> 00:06:55,370 and configure the submissions logs for the course, for example. 148 00:06:55,370 --> 00:06:57,700 But over on the left hand side, you'll see a link that 149 00:06:57,700 --> 00:06:59,740 takes me to the course's submissions. 150 00:06:59,740 --> 00:07:02,260 And that's the page where I can see all of the work 151 00:07:02,260 --> 00:07:07,210 that my students have submitted to this course on submit.cs50.io. 152 00:07:07,210 --> 00:07:09,670 So if I click on submissions, I'll be taken 153 00:07:09,670 --> 00:07:12,820 to a page that shows me all of the various different problems 154 00:07:12,820 --> 00:07:14,650 to which students have submitted. 155 00:07:14,650 --> 00:07:17,410 But if I'm only interested in Cash, for example, in that problem, 156 00:07:17,410 --> 00:07:18,880 I can just click on that problem. 157 00:07:18,880 --> 00:07:22,000 And now I'm just looking at submissions for the Cash problem. 158 00:07:22,000 --> 00:07:25,150 And I can see here that one student has submitted work 159 00:07:25,150 --> 00:07:27,280 to this particular submission slogan. 160 00:07:27,280 --> 00:07:31,090 And I can now see, all right, here's Margaret's submission. 161 00:07:31,090 --> 00:07:33,190 She submitted one minute ago. 162 00:07:33,190 --> 00:07:35,830 And importantly, immediately beneath that, 163 00:07:35,830 --> 00:07:38,350 I get to see the results of Check50 and Style. 164 00:07:38,350 --> 00:07:41,420 So immediately after Margaret submitted her work, 165 00:07:41,420 --> 00:07:46,150 submit.cs50.io downloaded her code, ran Check50 and Style50 on it. 166 00:07:46,150 --> 00:07:50,020 And now it's automatically given to me the correctness results 167 00:07:50,020 --> 00:07:52,900 and the style results for this particular submission. 168 00:07:52,900 --> 00:07:55,280 So I can see, next to Check50, for example, 169 00:07:55,280 --> 00:07:57,220 that Margaret has passed 10 out of the 11 170 00:07:57,220 --> 00:07:59,880 checks that were run on this problem. 171 00:07:59,880 --> 00:08:03,140 And if I want to see those Check50 results in a little bit more detail, 172 00:08:03,140 --> 00:08:04,850 I can go ahead and just open this up. 173 00:08:04,850 --> 00:08:07,250 I'll open it in a new tab and visit it. 174 00:08:07,250 --> 00:08:10,840 And here now I can see all of the checks that she's passed. 175 00:08:10,840 --> 00:08:13,340 And I can also see the check that she didn't pass. 176 00:08:13,340 --> 00:08:15,980 It looks like she's not quite handling rejecting 177 00:08:15,980 --> 00:08:20,120 a negative input, which is one of the requirements in the problem 178 00:08:20,120 --> 00:08:21,910 specification. 179 00:08:21,910 --> 00:08:24,850 But I can see here all the checks that were passed. 180 00:08:24,850 --> 00:08:26,420 And all of the checks that were not. 181 00:08:26,420 --> 00:08:28,420 So that can help me to provide feedback for her. 182 00:08:28,420 --> 00:08:30,253 And usually, by looking at the checks, I can 183 00:08:30,253 --> 00:08:32,350 get a pretty good sense for what she did right 184 00:08:32,350 --> 00:08:35,140 and where there might be room for improvement. 185 00:08:35,140 --> 00:08:40,110 So going back to the submit.cs50.io page, I also see her Style50 results. 186 00:08:40,110 --> 00:08:45,120 So those are scored on a scale from 0 to 1, where 1 or 100% 187 00:08:45,120 --> 00:08:47,370 means that all of the lines are correctly styled 188 00:08:47,370 --> 00:08:49,340 and 0 meaning none of the lines. 189 00:08:49,340 --> 00:08:51,610 So the 0.94 is pretty good. 190 00:08:51,610 --> 00:08:55,020 But if I open up the Style50 link, much as I can open up the Check50 link 191 00:08:55,020 --> 00:08:58,890 to see details about check50, I can also open up a style50 link 192 00:08:58,890 --> 00:09:00,510 to see the style details. 193 00:09:00,510 --> 00:09:03,300 And it looks like, just based on this green highlight here, 194 00:09:03,300 --> 00:09:06,030 there are some areas within Margaret's code where maybe she 195 00:09:06,030 --> 00:09:08,850 should add a space just for consistency because we 196 00:09:08,850 --> 00:09:11,490 tend to like there to be a space around operators, 197 00:09:11,490 --> 00:09:13,360 like multiplication, for example. 198 00:09:13,360 --> 00:09:15,840 So that might be an example of some style feedback 199 00:09:15,840 --> 00:09:17,980 that style50 is providing. 200 00:09:17,980 --> 00:09:21,450 And I can now see both of those results here. 201 00:09:21,450 --> 00:09:25,160 To the right of both the check50 and the style50 results 202 00:09:25,160 --> 00:09:28,630 is a place where I can now provide comments on Margaret's submission. 203 00:09:28,630 --> 00:09:31,200 So if I click on 0 comments and open that up, 204 00:09:31,200 --> 00:09:33,875 recall that when a student submits via submit50, 205 00:09:33,875 --> 00:09:36,000 they're ultimately submitting their work to GitHub, 206 00:09:36,000 --> 00:09:39,675 which we're using as the host for all of student submitted work. 207 00:09:39,675 --> 00:09:41,550 And because of that, we get to take advantage 208 00:09:41,550 --> 00:09:43,920 of GitHub's great commenting features that allows us 209 00:09:43,920 --> 00:09:47,410 to provide inline feedback on students. 210 00:09:47,410 --> 00:09:51,930 So if, for example, I wanted to provide feedback to Margaret about what style50 211 00:09:51,930 --> 00:09:55,140 had said about adding a space around that multiplication operator, 212 00:09:55,140 --> 00:09:58,890 I could find that line of code, which, in this case, is line 9, right here. 213 00:09:58,890 --> 00:10:01,230 Hovering over the line, I get a little plus symbol. 214 00:10:01,230 --> 00:10:04,620 And clicking on that line opens up a text field, 215 00:10:04,620 --> 00:10:06,990 where I could leave some feedback, like, "remember 216 00:10:06,990 --> 00:10:13,040 to include spaces on both sides of the multiplication operator." 217 00:10:13,040 --> 00:10:14,610 And you can use markdown syntax. 218 00:10:14,610 --> 00:10:17,492 It's familiar with Markdown syntax to make things bold 219 00:10:17,492 --> 00:10:19,950 or make things mono space, if you're trying to include code 220 00:10:19,950 --> 00:10:21,610 into your comment, as well. 221 00:10:21,610 --> 00:10:24,030 And then I can add that comment, if I would like to. 222 00:10:24,030 --> 00:10:26,160 So Margaret then we'll be able to see that comment 223 00:10:26,160 --> 00:10:31,200 if she signs into submit.cs50.io or signs into GitHub, for example. 224 00:10:31,200 --> 00:10:34,170 And if she has GitHub's email notifications, which 225 00:10:34,170 --> 00:10:37,140 are turned on by default, she'll get an email notifying her 226 00:10:37,140 --> 00:10:38,830 that I've left this comment on her code. 227 00:10:38,830 --> 00:10:41,040 And she can then reply to it, allowing us 228 00:10:41,040 --> 00:10:43,800 to facilitate a conversation about the student's work 229 00:10:43,800 --> 00:10:47,340 in order to try to provide that sort of feedback. 230 00:10:47,340 --> 00:10:50,850 So that, then, is what submit.cs50.io looks like. 231 00:10:50,850 --> 00:10:53,610 It's right now showing me Margaret's latest submission. 232 00:10:53,610 --> 00:10:57,773 But submit.cs50.io allows for students to submit multiple times 233 00:10:57,773 --> 00:10:58,440 if they want to. 234 00:10:58,440 --> 00:11:02,070 I happen to know that Margaret submitted this problem a little earlier today, 235 00:11:02,070 --> 00:11:03,000 too. 236 00:11:03,000 --> 00:11:05,640 So up here in the upper right, I'm currently 237 00:11:05,640 --> 00:11:08,970 in the latest mode, which is only going to show me each student's most 238 00:11:08,970 --> 00:11:10,400 recent submission. 239 00:11:10,400 --> 00:11:13,230 But if I toggle that switch, switch to all mode, 240 00:11:13,230 --> 00:11:15,540 instead of just seeing one submission from Margaret, 241 00:11:15,540 --> 00:11:17,190 I'm now seeing both of her submissions. 242 00:11:17,190 --> 00:11:20,310 And I can see that 10 hours ago she submitted as well 243 00:11:20,310 --> 00:11:22,680 and only got eight out of the 11 checks correct. 244 00:11:22,680 --> 00:11:25,680 Now five minutes ago, she got 10 out of the 11 checks correct. 245 00:11:25,680 --> 00:11:28,410 So I can see that she's improving, that she submitted again. 246 00:11:28,410 --> 00:11:29,460 She's made some changes. 247 00:11:29,460 --> 00:11:33,820 And now it looks like a submission is better than it was last time. 248 00:11:33,820 --> 00:11:36,480 So this tool, hopefully, will allow you to more quickly 249 00:11:36,480 --> 00:11:39,780 be able to get access to the results of your student submissions, 250 00:11:39,780 --> 00:11:42,540 to be able to comment on code, to get the results of correctness 251 00:11:42,540 --> 00:11:44,500 checking on students' code and more. 252 00:11:44,500 --> 00:11:46,500 And if you want to export that data, so that you 253 00:11:46,500 --> 00:11:48,330 can use that data in your own grade book, 254 00:11:48,330 --> 00:11:51,150 or you want to process that information in some way. 255 00:11:51,150 --> 00:11:53,910 You can always export all of this submission data here. 256 00:11:53,910 --> 00:11:56,970 It'll be downloaded as a CSB spreadsheet file that you could then 257 00:11:56,970 --> 00:11:59,970 open in a text editor or in a more traditional spreadsheet 258 00:11:59,970 --> 00:12:04,530 program, something like Microsoft Excel or Apple Numbers or Google sheets. 259 00:12:04,530 --> 00:12:07,650 All of those are possible options for viewing that data 260 00:12:07,650 --> 00:12:11,800 and then using that data in whatever way you want. 261 00:12:11,800 --> 00:12:15,610 So that, then, is a look at submit.cs50.io. 262 00:12:15,610 --> 00:12:22,890 And before we move on, any questions for me or Margaret about anything there? 263 00:12:22,890 --> 00:12:26,140 AUDIENCE: OK, so my question is how do you? 264 00:12:26,140 --> 00:12:27,930 And this is for Margaret. 265 00:12:27,930 --> 00:12:32,310 How do you manage the grading of students of submissions 266 00:12:32,310 --> 00:12:34,260 in order to optimize your time? 267 00:12:34,260 --> 00:12:41,740 And what kind of tricks or workflow rules have you developed over Time 268 00:12:41,740 --> 00:12:45,300 MARGARET TANZOSH: So what I do for my 100 or so introductory students, 269 00:12:45,300 --> 00:12:48,270 I assign a grade based on correctness and style. 270 00:12:48,270 --> 00:12:51,000 I give feedback on design, based on what I 271 00:12:51,000 --> 00:12:54,990 see many students submitting something that's maybe not efficiently done. 272 00:12:54,990 --> 00:12:57,990 But I'll assign the grade based on correctness of style. 273 00:12:57,990 --> 00:13:02,310 So what I do is I download the CSV file of all of the submissions of all 274 00:13:02,310 --> 00:13:03,253 of my students. 275 00:13:03,253 --> 00:13:05,670 And then I have a Python script that goes through, selects 276 00:13:05,670 --> 00:13:09,510 the most, the highest score of all the submissions, 277 00:13:09,510 --> 00:13:14,550 and then kind of calculates it based on 75% correctness, 25% of style, 278 00:13:14,550 --> 00:13:15,487 adds together. 279 00:13:15,487 --> 00:13:16,320 They get everything. 280 00:13:16,320 --> 00:13:18,000 They get 100%. 281 00:13:18,000 --> 00:13:21,830 And then I map that in my CSV file to their student ID numbers, 282 00:13:21,830 --> 00:13:24,540 so I could upload it to my school grade book. 283 00:13:24,540 --> 00:13:29,327 So it saves a lot of time being able to handle that type of grading, 284 00:13:29,327 --> 00:13:32,160 without having to individually kind of type things in over and over. 285 00:13:32,160 --> 00:13:34,450 So I find that's been really helpful. 286 00:13:34,450 --> 00:13:36,940 And there are many different ways to do it. 287 00:13:36,940 --> 00:13:39,930 I also find it really terrific that, as Brian was showing, 288 00:13:39,930 --> 00:13:44,220 he was able to put kind of the root of the slugs for like the CS50x course 289 00:13:44,220 --> 00:13:48,030 in his settings panel in that particular class. 290 00:13:48,030 --> 00:13:51,270 And so I'll use many of the CS50 problems. 291 00:13:51,270 --> 00:13:53,070 But I'll also create some of my own. 292 00:13:53,070 --> 00:13:57,370 So I'm able to create my own roots for the slugs that I'm using. 293 00:13:57,370 --> 00:14:00,960 And then any of the problems either the CS50 problems or the problems 294 00:14:00,960 --> 00:14:03,870 I've created, all show up in the submit50 grade book. 295 00:14:03,870 --> 00:14:06,170 So it's just been a great way. 296 00:14:06,170 --> 00:14:08,430 And also, the students are getting immediate feedback 297 00:14:08,430 --> 00:14:10,770 because when they go and they look at that link that's 298 00:14:10,770 --> 00:14:14,550 created, once they do their submission, they can immediately 299 00:14:14,550 --> 00:14:15,600 see what their score is. 300 00:14:15,600 --> 00:14:17,610 And they have the opportunity to resubmit. 301 00:14:17,610 --> 00:14:19,410 I let them submit basically as many times 302 00:14:19,410 --> 00:14:22,830 as they want until the end of the particular unit that we're on, 303 00:14:22,830 --> 00:14:25,500 so that they can continue to make their code better and better 304 00:14:25,500 --> 00:14:26,625 and to improve their grade. 305 00:14:26,625 --> 00:14:29,970 306 00:14:29,970 --> 00:14:31,220 So do we have a good question? 307 00:14:31,220 --> 00:14:32,670 Do I see [INAUDIBLE]? 308 00:14:32,670 --> 00:14:35,120 Did I pronounce that correctly? 309 00:14:35,120 --> 00:14:39,390 AUDIENCE: Hi, I had a question about just what the students can see. 310 00:14:39,390 --> 00:14:42,990 Can they see the detail, like the style report? 311 00:14:42,990 --> 00:14:48,510 So they couldn't just notice that the multiplication [INAUDIBLE] space. 312 00:14:48,510 --> 00:14:51,140 And they just kind of fix it right afterwards. 313 00:14:51,140 --> 00:14:53,650 Or does the teacher have to go and combine them. 314 00:14:53,650 --> 00:14:54,935 [INAUDIBLE] 315 00:14:54,935 --> 00:14:56,560 MARGARET TANZOSH: Sure. let me go back. 316 00:14:56,560 --> 00:14:57,870 Let me go back, and I'll share my screen. 317 00:14:57,870 --> 00:15:00,692 And I'll show you exactly what it looks like on the student side. 318 00:15:00,692 --> 00:15:03,150 So on the student side, there were a couple different tools 319 00:15:03,150 --> 00:15:08,040 that students can use to help them take a look at how their work is 320 00:15:08,040 --> 00:15:09,480 going to be ultimately graded. 321 00:15:09,480 --> 00:15:13,440 So if you can hopefully see on the bottom of my terminal, 322 00:15:13,440 --> 00:15:14,730 instead of just typing it. 323 00:15:14,730 --> 00:15:16,720 And most of the program specs we'll have this. 324 00:15:16,720 --> 00:15:21,120 But like I typed in the Submit50 before, I could also 325 00:15:21,120 --> 00:15:24,400 type in, for many problems, for all CS50 problems, 326 00:15:24,400 --> 00:15:27,480 the check50's not turned on in some of the more advanced products. 327 00:15:27,480 --> 00:15:30,300 I think CS50 team really wants students to be 328 00:15:30,300 --> 00:15:33,990 able to look to test their own code, without having 329 00:15:33,990 --> 00:15:36,210 to depend on a series of tests. 330 00:15:36,210 --> 00:15:39,840 But through some of the introductory problems, that check50 is turned on. 331 00:15:39,840 --> 00:15:42,600 And in the same way as a student was able to get 332 00:15:42,600 --> 00:15:48,630 their results graded with the submit50, they can see all the checks here. 333 00:15:48,630 --> 00:15:50,730 And you could see which ones ran correctly 334 00:15:50,730 --> 00:15:53,440 and which ones did not run correctly. 335 00:15:53,440 --> 00:15:56,520 And so my students love when they see those green happy faces, 336 00:15:56,520 --> 00:15:58,300 makes them very happy. 337 00:15:58,300 --> 00:16:02,100 And so it gives them a clue as to how their score is going to work out. 338 00:16:02,100 --> 00:16:06,060 And then in addition, they can go to the link here, which is very much the same 339 00:16:06,060 --> 00:16:08,160 as the link that we saw before. 340 00:16:08,160 --> 00:16:10,920 And if they click on this, they can actually 341 00:16:10,920 --> 00:16:12,622 see the same report that Brian saw. 342 00:16:12,622 --> 00:16:14,580 So this is going to give them a little bit more 343 00:16:14,580 --> 00:16:17,550 detail to see, oh, exactly what kind of the test 344 00:16:17,550 --> 00:16:20,132 was run when that input was rejected. 345 00:16:20,132 --> 00:16:21,840 So this gives them a little bit of a clue 346 00:16:21,840 --> 00:16:27,630 as well as to what their score is going to look like. 347 00:16:27,630 --> 00:16:29,730 And then there's also style50. 348 00:16:29,730 --> 00:16:34,410 So style50 works with just the source code. 349 00:16:34,410 --> 00:16:37,500 So it's always going to be a style50 and then the source 350 00:16:37,500 --> 00:16:39,750 code, which is going to be cash.c. 351 00:16:39,750 --> 00:16:41,760 And here again, it's very much the same report 352 00:16:41,760 --> 00:16:44,640 that Brian saw, but from a student perspective. 353 00:16:44,640 --> 00:16:47,610 So many my students will check their code. 354 00:16:47,610 --> 00:16:50,220 And before they submit it, they'll run the style50. 355 00:16:50,220 --> 00:16:52,140 They'll fix their indentations. 356 00:16:52,140 --> 00:16:54,300 And so they can pretty much assure that they're 357 00:16:54,300 --> 00:16:57,760 going to get a pretty good style grade before they submit it. 358 00:16:57,760 --> 00:17:00,120 But before running check50, sometimes I find 359 00:17:00,120 --> 00:17:03,360 that students become a little bit too dependent on running check50 360 00:17:03,360 --> 00:17:05,290 and attempted to develop their code. 361 00:17:05,290 --> 00:17:09,300 And before they even run it and test it themselves, start running check50. 362 00:17:09,300 --> 00:17:12,450 And I really try to stress that it's very important to run your own code, 363 00:17:12,450 --> 00:17:15,390 so that you really get a sense of how your program interacts with you. 364 00:17:15,390 --> 00:17:17,265 Because otherwise, you're not actually seeing 365 00:17:17,265 --> 00:17:20,609 those interactions and that little bit of a user interface, right? 366 00:17:20,609 --> 00:17:21,569 Asking for the prompt. 367 00:17:21,569 --> 00:17:22,861 What does the prompt look like? 368 00:17:22,861 --> 00:17:24,670 What does the output actually look like? 369 00:17:24,670 --> 00:17:26,339 So anyway, yes. 370 00:17:26,339 --> 00:17:32,440 So the student can certainly see all these things, as well, as the teacher. 371 00:17:32,440 --> 00:17:36,663 All right do we have any other questions here before I move on? 372 00:17:36,663 --> 00:17:38,580 BRIAN YU: All right, I think [INAUDIBLE] still 373 00:17:38,580 --> 00:17:40,790 has his hand raised, if you'd like to ask a question. 374 00:17:40,790 --> 00:17:44,470 375 00:17:44,470 --> 00:17:45,727 AUDIENCE: Can you hear me? 376 00:17:45,727 --> 00:17:46,810 BRIAN YU: We can hear you. 377 00:17:46,810 --> 00:17:49,640 AUDIENCE: Yeah, just I would like to introduce myself. 378 00:17:49,640 --> 00:17:50,770 My name is [INAUDIBLE]. 379 00:17:50,770 --> 00:17:55,490 I am a lecturer in the King Fahd University from Saudi Arabia. 380 00:17:55,490 --> 00:18:00,460 And I've been following this workshop in a very detailed manner. 381 00:18:00,460 --> 00:18:04,330 And it has been very, very helpful, especially your tips on reflections 382 00:18:04,330 --> 00:18:05,890 yesterday. 383 00:18:05,890 --> 00:18:09,680 My question is, I was just wondering about the overall structure. 384 00:18:09,680 --> 00:18:15,070 So the instructor account, is it a separate account on GitHub? 385 00:18:15,070 --> 00:18:16,180 How do you differentiate? 386 00:18:16,180 --> 00:18:19,780 Would I need to log in as a regular user? 387 00:18:19,780 --> 00:18:21,460 Also, I was wondering about the slug. 388 00:18:21,460 --> 00:18:26,930 So does it correspond to an actual folder structure, or it's just a name. 389 00:18:26,930 --> 00:18:31,810 So I'm just interested in more details about all of this setup that you have. 390 00:18:31,810 --> 00:18:33,000 Thank you very much. 391 00:18:33,000 --> 00:18:33,310 [INTERPOSING VOICES] 392 00:18:33,310 --> 00:18:34,810 BRIAN YU: Sure, I can take that one. 393 00:18:34,810 --> 00:18:40,270 Yeah, so in short, there is no there's no notion of a separate teacher 394 00:18:40,270 --> 00:18:42,550 account on submit.cs50.io. 395 00:18:42,550 --> 00:18:45,100 Every account is just a GitHub account. 396 00:18:45,100 --> 00:18:48,580 But what we do have on submit.cs50.io courses, 397 00:18:48,580 --> 00:18:53,890 and every course can be associated with one or more teachers of that course 398 00:18:53,890 --> 00:18:56,930 and then 0 or more students, for that course. 399 00:18:56,930 --> 00:18:59,980 So when you create a course on submit.cs50.io, 400 00:18:59,980 --> 00:19:03,040 you automatically become a teacher for that course, 401 00:19:03,040 --> 00:19:06,250 which means you get to view all of your students' work for that course. 402 00:19:06,250 --> 00:19:09,130 And you have the ability to add other teachers if, for example, you 403 00:19:09,130 --> 00:19:11,660 have a teaching assistant in your class, for example, 404 00:19:11,660 --> 00:19:14,290 that you also want to grant access to all of that work. 405 00:19:14,290 --> 00:19:16,600 And then when students click on the invitation link, 406 00:19:16,600 --> 00:19:20,420 they become students of that course, as well. 407 00:19:20,420 --> 00:19:24,610 But the account itself doesn't have any notion 408 00:19:24,610 --> 00:19:26,320 of whether it is a student or a teacher. 409 00:19:26,320 --> 00:19:29,950 That's all of course specific, such that Margaret, for example, 410 00:19:29,950 --> 00:19:31,387 was just a student in my course. 411 00:19:31,387 --> 00:19:33,970 But she very well might have been the teacher of other courses 412 00:19:33,970 --> 00:19:35,770 that she teaches on her own. 413 00:19:35,770 --> 00:19:38,630 So she's sort of simultaneously a student in my course, 414 00:19:38,630 --> 00:19:43,240 but also a teacher of other courses that she teaches, for instance. 415 00:19:43,240 --> 00:19:48,310 As for the structure of what the submission slug means, 416 00:19:48,310 --> 00:19:49,450 I mentioned this. 417 00:19:49,450 --> 00:19:56,697 Let me go ahead and show you what that looks like. 418 00:19:56,697 --> 00:19:58,280 Give me one second just to pull it up. 419 00:19:58,280 --> 00:20:02,030 But in short, the submission slug is a combination of a couple of things. 420 00:20:02,030 --> 00:20:06,410 The submission slug is a combination of a GitHub repository, 421 00:20:06,410 --> 00:20:12,140 a branch on that GitHub repository, and then a folder that is on that branch. 422 00:20:12,140 --> 00:20:18,140 So for example, in the case of the submission slug for Cash, 423 00:20:18,140 --> 00:20:27,810 you'll see that so for CS50 problems 2020x Cash, CS50/problems, 424 00:20:27,810 --> 00:20:31,350 that is the name of the GitHub repository, where we have stored all 425 00:20:31,350 --> 00:20:33,010 of the checks for all of our problems. 426 00:20:33,010 --> 00:20:38,850 So if you go to GitHub/CS50/problems, you'll find all of our checks. 427 00:20:38,850 --> 00:20:42,240 Every GitHub repository is divided into branches and we generally. 428 00:20:42,240 --> 00:20:45,870 Use those branches to separate out different versions of the course, 429 00:20:45,870 --> 00:20:50,610 like the 2019 offering of the course as compared to the 2020 version. 430 00:20:50,610 --> 00:20:52,360 So the second part of the submission slug, 431 00:20:52,360 --> 00:20:58,170 2020/x, that is the name of a branch of that GitHub repository. 432 00:20:58,170 --> 00:21:00,330 So that is the branch where you'll find the checks. 433 00:21:00,330 --> 00:21:02,038 And then on that branch are a whole bunch 434 00:21:02,038 --> 00:21:04,730 of folders, one folder for each problem. 435 00:21:04,730 --> 00:21:07,230 And so the last part of the submissions slug Cash 436 00:21:07,230 --> 00:21:10,260 here represents a folder on that branch. 437 00:21:10,260 --> 00:21:14,970 So ultimately, the unique identifier submissions like taken in the whole 438 00:21:14,970 --> 00:21:18,500 first has the repository, then the branch, then 439 00:21:18,500 --> 00:21:21,238 the path that will lead you to the correctness checks. 440 00:21:21,238 --> 00:21:24,030 And for more details about that, you can take a look at the session 441 00:21:24,030 --> 00:21:26,680 from two days ago that I gave on submitting and grading, 442 00:21:26,680 --> 00:21:29,710 which went over this and how to actually write checks of your own. 443 00:21:29,710 --> 00:21:33,690 And a draft recording of that session is already available online, 444 00:21:33,690 --> 00:21:35,575 if you'd like to take a look at. 445 00:21:35,575 --> 00:21:37,200 MARGARET TANZOSH: OK, thank you, Brian. 446 00:21:37,200 --> 00:21:38,680 That was great. 447 00:21:38,680 --> 00:21:40,420 Any other questions before I move on? 448 00:21:40,420 --> 00:21:43,730 449 00:21:43,730 --> 00:21:51,160 OK, all right so I am going to go back and talk a little bit about CS50 labs. 450 00:21:51,160 --> 00:21:54,210 CS50 labs I find to be enormously helpful for helping 451 00:21:54,210 --> 00:21:56,730 to differentiate in my classroom. 452 00:21:56,730 --> 00:22:00,210 So as I mentioned, I have a wide range of students. 453 00:22:00,210 --> 00:22:03,720 I have 100 and something introductory students. 454 00:22:03,720 --> 00:22:07,140 I might have 30 AP students. 455 00:22:07,140 --> 00:22:09,090 And my introductory students kind of range 456 00:22:09,090 --> 00:22:13,830 from students who might be sitting and taking Calculus BC right next 457 00:22:13,830 --> 00:22:16,860 to a student who might have failed algebra and was added to my class 458 00:22:16,860 --> 00:22:20,075 because they really need the math credit and has never programmed before. 459 00:22:20,075 --> 00:22:22,200 In fact, most of the students that come in my class 460 00:22:22,200 --> 00:22:25,230 have done minimal, if any, programming before. 461 00:22:25,230 --> 00:22:29,970 Some take to it immediately and just love it and spend half their night 462 00:22:29,970 --> 00:22:31,680 working ahead on all the programs. 463 00:22:31,680 --> 00:22:35,440 So I like to differentiate and make sure that everybody is working at the level 464 00:22:35,440 --> 00:22:38,560 that they are able to do, able to be engaged. 465 00:22:38,560 --> 00:22:42,870 So the labs are really helpful for the new students, starting out. 466 00:22:42,870 --> 00:22:45,600 I find it really helps reduce the cognitive demand 467 00:22:45,600 --> 00:22:48,120 because it takes away it kind of the need 468 00:22:48,120 --> 00:22:50,430 to manage certain things of the terminal. 469 00:22:50,430 --> 00:22:52,277 So the terminals are still there. 470 00:22:52,277 --> 00:22:53,610 And I know you've seen examples. 471 00:22:53,610 --> 00:22:57,103 And I'll show you examples of some of the labs that I've created, as well. 472 00:22:57,103 --> 00:22:58,020 The terminal is there. 473 00:22:58,020 --> 00:23:02,100 So they still have to have that real world kind of sense 474 00:23:02,100 --> 00:23:04,820 of compiling code and executing code. 475 00:23:04,820 --> 00:23:07,320 But they don't need to, for instance, manage the directories 476 00:23:07,320 --> 00:23:11,600 in their terminal, which I find for new students can be a little cumbersome. 477 00:23:11,600 --> 00:23:14,113 They sometimes forget to change with the right directory. 478 00:23:14,113 --> 00:23:16,530 And if I have, say, 30 students sitting around a classroom 479 00:23:16,530 --> 00:23:19,655 and I'm trying to help someone who's struggling, students on the other side 480 00:23:19,655 --> 00:23:21,313 are, oh, how come I can't run my code? 481 00:23:21,313 --> 00:23:22,980 My code won't compile, blah, blah, blah. 482 00:23:22,980 --> 00:23:25,438 And it's often just because they're in the wrong directory. 483 00:23:25,438 --> 00:23:28,710 So this kind of takes away those issues while they're just getting 484 00:23:28,710 --> 00:23:31,500 used to the whole environment, right? 485 00:23:31,500 --> 00:23:33,210 The whole programming environment. 486 00:23:33,210 --> 00:23:35,490 And the labs can also start with starter code. 487 00:23:35,490 --> 00:23:39,570 So as you'll see, the labs, and some of the CS50 problems 488 00:23:39,570 --> 00:23:43,020 that have been created as labs also will come maybe with the C libraries 489 00:23:43,020 --> 00:23:45,000 already included or the main function is there, 490 00:23:45,000 --> 00:23:46,833 so that they could just kind of really focus 491 00:23:46,833 --> 00:23:48,900 on the logic at the very beginning and not 492 00:23:48,900 --> 00:23:52,140 get caught up with too much of the stuff that's not quite as intellectually 493 00:23:52,140 --> 00:23:54,640 interesting, but stat with really kind of thinking about how 494 00:23:54,640 --> 00:23:56,580 to get started on their problems. 495 00:23:56,580 --> 00:23:59,730 And it also allows me the ability to do a lot of scaffolding. 496 00:23:59,730 --> 00:24:02,460 So the way the labs are created gives us the ability 497 00:24:02,460 --> 00:24:05,950 to have these little hidden hints, where they can click on a button. 498 00:24:05,950 --> 00:24:09,990 And I might actually create pseudocode and give 499 00:24:09,990 --> 00:24:12,970 students who don't know how to start a problem a couple of steps. 500 00:24:12,970 --> 00:24:14,650 This is what you do need to do first. 501 00:24:14,650 --> 00:24:17,520 I'll embed instructional video, sometimes, kind of 502 00:24:17,520 --> 00:24:19,800 hide them under a button, so that students 503 00:24:19,800 --> 00:24:23,247 that are kind of moving at a good pace and don't want to get-- 504 00:24:23,247 --> 00:24:25,080 they don't want to get too much information. 505 00:24:25,080 --> 00:24:26,940 I actually have some students that don't want anybody 506 00:24:26,940 --> 00:24:27,930 to tell them too much how to do. 507 00:24:27,930 --> 00:24:29,670 They want to struggle and figure it out on their own. 508 00:24:29,670 --> 00:24:31,140 They don't want too many hints. 509 00:24:31,140 --> 00:24:33,840 So for them, they don't have to see all these other bits of pieces that 510 00:24:33,840 --> 00:24:35,423 are there, the pseudocode, the videos. 511 00:24:35,423 --> 00:24:38,500 They just delve right into it and figure it out on their own. 512 00:24:38,500 --> 00:24:40,680 So it really gives me the idea, the ability 513 00:24:40,680 --> 00:24:43,290 to really customize it that way. 514 00:24:43,290 --> 00:24:45,040 Also, the way that the labs are presented, 515 00:24:45,040 --> 00:24:48,570 there's not this very long program spec that, for certain students, 516 00:24:48,570 --> 00:24:51,910 could be a little bit overwhelming, when there's so much to read. 517 00:24:51,910 --> 00:24:55,530 A little next button in the labs is extremely helpful 518 00:24:55,530 --> 00:25:00,390 because it allows me just to present a little chunk of information at a time. 519 00:25:00,390 --> 00:25:02,190 And of course, it's totally customizable. 520 00:25:02,190 --> 00:25:07,350 And I use the labs not only for the CS50 problems, as you'll see. 521 00:25:07,350 --> 00:25:13,260 I've converted many of the CS50 problems into the labs for my own students, 522 00:25:13,260 --> 00:25:15,540 using my own students, to introduce them. 523 00:25:15,540 --> 00:25:20,460 So these three students, I used my phone, made a little YouTube video. 524 00:25:20,460 --> 00:25:22,180 They introduce the problem. 525 00:25:22,180 --> 00:25:24,540 And while they may not be as eloquent as Brian 526 00:25:24,540 --> 00:25:27,272 in talking about how the problem is actually going to be created. 527 00:25:27,272 --> 00:25:30,480 It's very engaging the students in my class to see their classmates doing it, 528 00:25:30,480 --> 00:25:30,980 right? 529 00:25:30,980 --> 00:25:32,160 It's like, oh, I know him. 530 00:25:32,160 --> 00:25:34,702 If he can take this class and he can succeeded at this class, 531 00:25:34,702 --> 00:25:36,630 I probably can do it, too. 532 00:25:36,630 --> 00:25:40,080 And so I find that, again, it just helps the students 533 00:25:40,080 --> 00:25:41,520 get a little more connected. 534 00:25:41,520 --> 00:25:46,480 And it just makes it kind of a cool thing to be able to do. 535 00:25:46,480 --> 00:25:48,960 And you could see here, on the lower right. 536 00:25:48,960 --> 00:25:51,300 So once we kind of click on the Next button, 537 00:25:51,300 --> 00:25:53,640 the lab scrolls up a page at a time and. 538 00:25:53,640 --> 00:25:58,050 This little spoiler here give some ideas on what type of start 539 00:25:58,050 --> 00:26:00,660 you might have for degrees Celsius. 540 00:26:00,660 --> 00:26:03,900 Another thing that you could do in the labs is give a text file, 541 00:26:03,900 --> 00:26:07,227 so that students could write some notes or some pseudocode. 542 00:26:07,227 --> 00:26:10,560 And what I'll do is, I'm, sitting around that table with the struggling students 543 00:26:10,560 --> 00:26:13,170 and helping them get started is that will open up a lab 544 00:26:13,170 --> 00:26:17,970 and open up the pseudocode tab and start to write down some steps, step by step. 545 00:26:17,970 --> 00:26:20,820 What exactly you do to get started on this problem. 546 00:26:20,820 --> 00:26:22,810 So there could be a lot of fun. 547 00:26:22,810 --> 00:26:26,070 The labs I pretty much run, for my first semester, at least 548 00:26:26,070 --> 00:26:30,220 for my introductory students, I pretty much convert everything into labs. 549 00:26:30,220 --> 00:26:33,090 There are some existing CS50 labs that have been used. 550 00:26:33,090 --> 00:26:34,050 And I use those. 551 00:26:34,050 --> 00:26:37,590 Sometimes, I tweak them a little bit to add a little more scaffolding 552 00:26:37,590 --> 00:26:40,740 and then also create any of the other problems as labs. 553 00:26:40,740 --> 00:26:43,000 And then also, sometimes, I'll add my own. 554 00:26:43,000 --> 00:26:45,380 I even created a few labs beginning of semester two, 555 00:26:45,380 --> 00:26:49,320 we'll do some HTML and CSS before they get started on the home page project. 556 00:26:49,320 --> 00:26:50,890 And I've even made a few of those. 557 00:26:50,890 --> 00:26:54,330 So students can again have a little bit of a place 558 00:26:54,330 --> 00:26:56,940 where they could sit and really kind of begin 559 00:26:56,940 --> 00:26:59,670 to absorb the material, independently, when I'm not 560 00:26:59,670 --> 00:27:01,690 available to come over and help them. 561 00:27:01,690 --> 00:27:06,950 So that tends to be something that I rely on quite a lot in my class. 562 00:27:06,950 --> 00:27:08,870 And then I've also created quite a number 563 00:27:08,870 --> 00:27:12,500 of labs that are instructional in nature, that teach students 564 00:27:12,500 --> 00:27:15,090 about specific programming constructs. 565 00:27:15,090 --> 00:27:19,160 So here, again, I might have a student, for instance, that's working, 566 00:27:19,160 --> 00:27:22,010 they started one of the unit two programs 567 00:27:22,010 --> 00:27:24,650 and they forget how to use command line arguments. 568 00:27:24,650 --> 00:27:27,395 And so I've created a lab on command line arguments, 569 00:27:27,395 --> 00:27:30,020 why you need to test with the number of command line arguments, 570 00:27:30,020 --> 00:27:31,560 what happens when you don't. 571 00:27:31,560 --> 00:27:34,140 And so I will introduce these again on the-- 572 00:27:34,140 --> 00:27:36,290 I think I mentioned yesterday, I create a website, 573 00:27:36,290 --> 00:27:38,150 where I have links to all the problems. 574 00:27:38,150 --> 00:27:40,210 And I also have links to all the labs. 575 00:27:40,210 --> 00:27:42,710 And in these labs, I will kind of point students 576 00:27:42,710 --> 00:27:46,310 in those directions, when they're stuck and be, OK, take a look at this lab. 577 00:27:46,310 --> 00:27:48,420 See if that can kind of help you with that. 578 00:27:48,420 --> 00:27:51,800 And then in addition to the description of the left, maybe do embedded videos. 579 00:27:51,800 --> 00:27:54,050 Sometimes, I'll embed animated gif files, so 580 00:27:54,050 --> 00:27:58,143 that they can see like an animation, how does Bubble Sort work. 581 00:27:58,143 --> 00:28:00,810 I'll have a little program for them to solve on the right, where 582 00:28:00,810 --> 00:28:02,510 a lot of the code is supplied. 583 00:28:02,510 --> 00:28:05,310 And they're really just completing a couple of lines of code. 584 00:28:05,310 --> 00:28:07,660 So it's not a whole day long exercise. 585 00:28:07,660 --> 00:28:09,470 It's 15 minutes they can come. 586 00:28:09,470 --> 00:28:10,220 They can get some. 587 00:28:10,220 --> 00:28:13,740 Practice and they could kind of master a particular concept. 588 00:28:13,740 --> 00:28:15,770 So I've put the link in the slides. 589 00:28:15,770 --> 00:28:21,420 And I can add this link, as well, to the chat window, if you're interested. 590 00:28:21,420 --> 00:28:25,260 But this is a list of all the labs that I have here, so far. 591 00:28:25,260 --> 00:28:29,060 And could take a look at a couple of these, if you like. 592 00:28:29,060 --> 00:28:33,330 So for instance, I have information about what are different data types. 593 00:28:33,330 --> 00:28:37,100 So again, for some students that are just getting started out, 594 00:28:37,100 --> 00:28:39,740 what do we mean by a data type? 595 00:28:39,740 --> 00:28:43,030 Why do we need to include the CS50 library on top? 596 00:28:43,030 --> 00:28:45,200 Here we have the little Next button and some 597 00:28:45,200 --> 00:28:49,820 of the differences between native data types and some of the eventually, 598 00:28:49,820 --> 00:28:55,070 some of the CS50, examples of them, how do you get inputs for them, 599 00:28:55,070 --> 00:28:58,190 et cetera, et cetera and then some practice. 600 00:28:58,190 --> 00:29:00,260 So then I have a little bit of code here, 601 00:29:00,260 --> 00:29:03,720 on the right side, where most of it is already completed,. 602 00:29:03,720 --> 00:29:07,760 And they're just during a few of these little bits of code under each 603 00:29:07,760 --> 00:29:09,668 of the comments, declaring an end. 604 00:29:09,668 --> 00:29:10,710 What does that look like? 605 00:29:10,710 --> 00:29:14,090 How do we get user input using Get End and so on. 606 00:29:14,090 --> 00:29:16,828 And then, as well, it will lead them to a reference sheet. 607 00:29:16,828 --> 00:29:18,620 We'll take a look at what else I have here. 608 00:29:18,620 --> 00:29:23,420 I'll have, for instance, so different kinds of loops. 609 00:29:23,420 --> 00:29:25,410 What is the point of a for loop. 610 00:29:25,410 --> 00:29:28,430 And again, examples, how, for maybe students 611 00:29:28,430 --> 00:29:30,830 it might have been introduced initially to scratch, 612 00:29:30,830 --> 00:29:34,400 how does that compare to a scratch programming construct. 613 00:29:34,400 --> 00:29:36,530 And then here's the idea of the little hint. 614 00:29:36,530 --> 00:29:38,930 Here's something taking a moment to load. 615 00:29:38,930 --> 00:29:42,010 But it might be a little bit of an idea. 616 00:29:42,010 --> 00:29:44,720 Keep in mind, you could use, I, in calculating 617 00:29:44,720 --> 00:29:46,430 something inside of your loop. 618 00:29:46,430 --> 00:29:50,570 So again, a number of different things to look at. 619 00:29:50,570 --> 00:29:55,010 I have, as well, somebody created little animations for 620 00:29:55,010 --> 00:29:57,140 to take a look at how does linear research work. 621 00:29:57,140 --> 00:29:58,250 And I've created these. 622 00:29:58,250 --> 00:30:02,870 I've used the research and sorting labs from my AP students, 623 00:30:02,870 --> 00:30:06,680 so that they could get a sense, also, of computational complexity, which 624 00:30:06,680 --> 00:30:08,030 are discussed in here. 625 00:30:08,030 --> 00:30:10,850 And just like a little bit of an animation to kind of visually 626 00:30:10,850 --> 00:30:15,200 show what the actual algorithm does, how it works. 627 00:30:15,200 --> 00:30:19,430 And then on the right, I created this little program of a bingo card 628 00:30:19,430 --> 00:30:20,060 with numbers. 629 00:30:20,060 --> 00:30:22,580 And they're looking to see if the number's on the bingo card 630 00:30:22,580 --> 00:30:26,120 by completing the function here to do linear search. 631 00:30:26,120 --> 00:30:29,090 And so, again, they're not having to worry too much yet about even 632 00:30:29,090 --> 00:30:31,070 how to pass an array to a function. 633 00:30:31,070 --> 00:30:34,310 But they get to actually see the code that's done, 634 00:30:34,310 --> 00:30:36,950 which is also instructive in nature, and get 635 00:30:36,950 --> 00:30:40,370 to kind of test out their own skills in seeing if they 636 00:30:40,370 --> 00:30:45,030 could create that particular code. 637 00:30:45,030 --> 00:30:49,560 And then finally, I'll have various different-- 638 00:30:49,560 --> 00:30:50,060 let's see. 639 00:30:50,060 --> 00:30:54,620 What do I have for insertion sort, as well, 640 00:30:54,620 --> 00:30:57,080 where I'm trying to kind of show the difference between how 641 00:30:57,080 --> 00:30:59,960 some of these various sorting algorithms work, 642 00:30:59,960 --> 00:31:06,720 and how we're searching for the 6 was in the right position and et cetera. 643 00:31:06,720 --> 00:31:09,260 We're kind of inserting into the array in the right place. 644 00:31:09,260 --> 00:31:13,250 And then again, they need to develop the insertion sort algorithm here. 645 00:31:13,250 --> 00:31:16,610 And for my students, my AP students, I created my own submit50s. 646 00:31:16,610 --> 00:31:19,513 I didn't add them into the lab, but I put them on the website. 647 00:31:19,513 --> 00:31:22,430 And they actually had to submit these and that went toward their class 648 00:31:22,430 --> 00:31:23,297 were grade, as well. 649 00:31:23,297 --> 00:31:25,130 Because this was part of the practice, but I 650 00:31:25,130 --> 00:31:27,860 required that they do as an AP course. 651 00:31:27,860 --> 00:31:31,540 And then also in here, talking about computational complexity. 652 00:31:31,540 --> 00:31:33,720 And what does that mean, et cetera, et cetera? 653 00:31:33,720 --> 00:31:35,810 And then their little hint over here, where 654 00:31:35,810 --> 00:31:39,600 I give them quite a bit of pseudocode to kind of figure out how to get started. 655 00:31:39,600 --> 00:31:42,800 So I even made one with a file IO. 656 00:31:42,800 --> 00:31:45,470 And I think I went as far as something like unit 4 657 00:31:45,470 --> 00:31:50,180 with images, where it was very inspired by one of Brian's new problem sets, 658 00:31:50,180 --> 00:31:54,710 where he has some image program, where students are making filters. 659 00:31:54,710 --> 00:31:57,770 So this is just, again, all the code is given on the right. 660 00:31:57,770 --> 00:32:02,900 And they're basically going to be changing the little Smiley face here 661 00:32:02,900 --> 00:32:04,460 to a different color. 662 00:32:04,460 --> 00:32:07,180 And just waiting for this to come up. 663 00:32:07,180 --> 00:32:08,090 Just a moment. 664 00:32:08,090 --> 00:32:09,923 And again, the nice thing is that they don't 665 00:32:09,923 --> 00:32:12,670 have to worry about downloading code and unzipping it. 666 00:32:12,670 --> 00:32:15,250 They can just get started right away. 667 00:32:15,250 --> 00:32:16,380 Everything is right here. 668 00:32:16,380 --> 00:32:19,480 They're just completing a function in the helpers file. 669 00:32:19,480 --> 00:32:23,300 And all the other bits and pieces are already existing. 670 00:32:23,300 --> 00:32:27,380 So again, it's just a way for students to get extra practice. 671 00:32:27,380 --> 00:32:32,470 And I've also included a link here to the repository, which if anybody 672 00:32:32,470 --> 00:32:35,780 wants to fork it, I'll be eventually-- 673 00:32:35,780 --> 00:32:38,485 there's that share link that I'll be sharing, as well. 674 00:32:38,485 --> 00:32:40,360 Eventually, sending it to CS50, they're going 675 00:32:40,360 --> 00:32:42,690 to be curating various teacher resources. 676 00:32:42,690 --> 00:32:44,813 But if anybody wanted to take a look at that. 677 00:32:44,813 --> 00:32:47,230 And just to take a look at me creating the labs and stuff. 678 00:32:47,230 --> 00:32:49,120 I know there is going to be changing. 679 00:32:49,120 --> 00:32:52,030 But I'm sure much of the structure will be fairly similar. 680 00:32:52,030 --> 00:32:58,390 And it's really just a read me file in a GitHub markdown. 681 00:32:58,390 --> 00:33:02,830 And then some special codes that allow you to make the Next buttons. 682 00:33:02,830 --> 00:33:06,240 Really easy to embed videos, to embed images. 683 00:33:06,240 --> 00:33:08,825 And then I just include the files that I'm 684 00:33:08,825 --> 00:33:10,950 going to have come up on the right side in the lab, 685 00:33:10,950 --> 00:33:12,700 that they're going to use as starter code. 686 00:33:12,700 --> 00:33:14,650 So here for instance, this would be the code 687 00:33:14,650 --> 00:33:17,710 that is going to be coming up once I open up the lab. 688 00:33:17,710 --> 00:33:19,960 So I really find that by using these, it just 689 00:33:19,960 --> 00:33:24,220 allows me to really kind of customize, for my students, what 690 00:33:24,220 --> 00:33:26,470 I need to do to help them be self-sufficient, 691 00:33:26,470 --> 00:33:28,573 so that they can all succeed. 692 00:33:28,573 --> 00:33:31,240 Even though I may need to spend more time with certain students, 693 00:33:31,240 --> 00:33:33,340 the other students have the resources there 694 00:33:33,340 --> 00:33:36,040 that help, hopefully, explain things, the kind of things 695 00:33:36,040 --> 00:33:38,860 that I've seen that come up over and over again. 696 00:33:38,860 --> 00:33:43,470 So that's, basically, what I've been doing for the labs. 697 00:33:43,470 --> 00:33:48,930 So let me just stop for just a moment and see if anybody has any questions. 698 00:33:48,930 --> 00:33:51,860 699 00:33:51,860 --> 00:33:56,750 AUDIENCE: So the question is, regarding working with the students, 700 00:33:56,750 --> 00:34:00,710 my question is regarding working issues [INAUDIBLE] the labs, 701 00:34:00,710 --> 00:34:03,110 my question is, is there anything you have learned 702 00:34:03,110 --> 00:34:07,548 from producing the labs for students that [INAUDIBLE] apply inside 703 00:34:07,548 --> 00:34:08,090 of the class? 704 00:34:08,090 --> 00:34:10,308 705 00:34:10,308 --> 00:34:12,350 MARGARET TANZOSH: I'm not sure I heard you fully. 706 00:34:12,350 --> 00:34:14,630 You're asking me, is there anything that I've 707 00:34:14,630 --> 00:34:20,679 learned from the creating the labs that help the students learn in class? 708 00:34:20,679 --> 00:34:26,090 AUDIENCE: No, creating the labs with these students. 709 00:34:26,090 --> 00:34:29,090 MARGARET TANZOSH: With the students? 710 00:34:29,090 --> 00:34:31,340 Well, I haven't created, but like the students are not 711 00:34:31,340 --> 00:34:33,747 seeing behind the scenes, like the GitHub code that I've 712 00:34:33,747 --> 00:34:35,330 created, if that's what you're asking. 713 00:34:35,330 --> 00:34:37,219 I created the labs. 714 00:34:37,219 --> 00:34:42,264 And then I've presented them, as you saw them, not through the markdown code. 715 00:34:42,264 --> 00:34:44,389 But basically, the way the lab is presented, right? 716 00:34:44,389 --> 00:34:49,350 With the instructions on the left and the coding environment on the right. 717 00:34:49,350 --> 00:34:50,360 So again, I apologize. 718 00:34:50,360 --> 00:34:52,739 I'm not sure I fully understand your question. 719 00:34:52,739 --> 00:34:54,752 I've tried to come up with topics that I've 720 00:34:54,752 --> 00:34:56,960 seen students struggle with that they might sometimes 721 00:34:56,960 --> 00:34:59,940 feel unclear about how to move forward with and then have 722 00:34:59,940 --> 00:35:01,640 additional explanation in the labs. 723 00:35:01,640 --> 00:35:04,600 So I don't require that they buy books. 724 00:35:04,600 --> 00:35:07,490 And sometimes online references, particularly in C, 725 00:35:07,490 --> 00:35:11,150 can be a little confusing and overwhelming for a new student 726 00:35:11,150 --> 00:35:12,170 to look at. 727 00:35:12,170 --> 00:35:16,250 So I try to kind of take it to the basics and introduce the concepts, 728 00:35:16,250 --> 00:35:19,475 without students having to get overwhelmed with certain things 729 00:35:19,475 --> 00:35:21,350 to see when they look up online on their own. 730 00:35:21,350 --> 00:35:26,090 They'll maybe get caught up with pointers and even input functions, 731 00:35:26,090 --> 00:35:29,270 scanf, et cetera, which could be a little bit much a student 732 00:35:29,270 --> 00:35:33,500 that's new to coding to have to deal with. 733 00:35:33,500 --> 00:35:35,540 So I don't know if I answered your question. 734 00:35:35,540 --> 00:35:36,980 Do you want to add onto that? 735 00:35:36,980 --> 00:35:42,370 736 00:35:42,370 --> 00:35:44,998 AUDIENCE: What I mean is like-- 737 00:35:44,998 --> 00:35:47,540 MARGARET TANZOSH: Oh, the students that appear in the videos? 738 00:35:47,540 --> 00:35:48,460 AUDIENCE: Correctly. 739 00:35:48,460 --> 00:35:54,590 The students-- yeah, I mean, working the students to record the videos, 740 00:35:54,590 --> 00:36:00,100 guiding them through [INAUDIBLE] Is there 741 00:36:00,100 --> 00:36:01,812 anything you have learned from that? 742 00:36:01,812 --> 00:36:04,270 MARGARET TANZOSH: Oh, well, basically, I'll work with them, 743 00:36:04,270 --> 00:36:05,890 and they'll create a little script. 744 00:36:05,890 --> 00:36:10,510 And then I'll take a few takes, just take a little video on my phone. 745 00:36:10,510 --> 00:36:13,930 And then when we're both happy with it, I'll uploaded to YouTube. 746 00:36:13,930 --> 00:36:18,950 And at that point, it's very easy to embed it in the lab. 747 00:36:18,950 --> 00:36:23,120 So sometimes, you're shy. 748 00:36:23,120 --> 00:36:24,500 So it takes a few times. 749 00:36:24,500 --> 00:36:27,490 And I think it's worth it. 750 00:36:27,490 --> 00:36:30,890 And I think that the other students enjoy the opportunity 751 00:36:30,890 --> 00:36:34,380 to see their classmates present the problem, as well. 752 00:36:34,380 --> 00:36:38,390 So all right. 753 00:36:38,390 --> 00:36:41,050 Any other any other questions about what we've seen so far, 754 00:36:41,050 --> 00:36:45,800 the labs, the types of customization you could do with that. 755 00:36:45,800 --> 00:36:51,000 756 00:36:51,000 --> 00:36:53,860 Well, I'll post a link to the GitHub repository. 757 00:36:53,860 --> 00:36:54,560 Sure. 758 00:36:54,560 --> 00:36:58,090 I'll put that actually right now in the-- 759 00:36:58,090 --> 00:37:03,040 I'll post that right now in the chat window for anybody 760 00:37:03,040 --> 00:37:04,000 I'd like to see that. 761 00:37:04,000 --> 00:37:07,940 762 00:37:07,940 --> 00:37:08,440 All right. 763 00:37:08,440 --> 00:37:11,600 764 00:37:11,600 --> 00:37:12,440 Yes, question? 765 00:37:12,440 --> 00:37:17,240 AUDIENCE: Yes, I just was looking at some of your lab examples. 766 00:37:17,240 --> 00:37:18,720 I have two questions. 767 00:37:18,720 --> 00:37:23,280 First, we saw a very nice animation in the insertion sort example. 768 00:37:23,280 --> 00:37:26,000 So it does not require any special software, 769 00:37:26,000 --> 00:37:28,010 or could you share your experience? 770 00:37:28,010 --> 00:37:32,060 And secondly, yesterday, you were talking about some coronavirus related 771 00:37:32,060 --> 00:37:34,050 projects or programs. 772 00:37:34,050 --> 00:37:36,560 So could you share your experience on this? 773 00:37:36,560 --> 00:37:37,790 MARGARET TANZOSH: Sure. 774 00:37:37,790 --> 00:37:42,620 So with the animations, I used After Effects to create those. 775 00:37:42,620 --> 00:37:44,120 I started making them in PowerPoint. 776 00:37:44,120 --> 00:37:46,670 And it was not quite giving me what I wanted. 777 00:37:46,670 --> 00:37:49,850 So I used After Effects, so that I could have a lot of control, 778 00:37:49,850 --> 00:37:52,793 in terms of how the numbers are moving around. 779 00:37:52,793 --> 00:37:53,960 So that was how I did those. 780 00:37:53,960 --> 00:37:55,670 And then I exported them as video. 781 00:37:55,670 --> 00:37:57,890 And I turned it into a gif. 782 00:37:57,890 --> 00:38:01,370 And then when I imported it, using the same exact syntax, 783 00:38:01,370 --> 00:38:08,060 just to import a standard image in the readme file, it automatically animates. 784 00:38:08,060 --> 00:38:13,340 So just as if you put a gif up, put a gif up on the HTML, right? 785 00:38:13,340 --> 00:38:14,870 Up on a web page. 786 00:38:14,870 --> 00:38:17,390 So I did that. 787 00:38:17,390 --> 00:38:22,000 And then I'm sorry, your other question was-- 788 00:38:22,000 --> 00:38:25,285 just remind me the second half of your question again. 789 00:38:25,285 --> 00:38:26,910 AUDIENCE: Yeah, you were talking about? 790 00:38:26,910 --> 00:38:28,700 MARGARET TANZOSH: The Simulation. 791 00:38:28,700 --> 00:38:31,267 Yes, sure. 792 00:38:31,267 --> 00:38:32,600 Well, I can show you what I did. 793 00:38:32,600 --> 00:38:35,060 So I created a-- 794 00:38:35,060 --> 00:38:38,340 I'll go back to share my screen. 795 00:38:38,340 --> 00:38:43,870 I was very inspired, actually, with a virus. 796 00:38:43,870 --> 00:38:46,260 So I was inspired by another teacher at my school, who 797 00:38:46,260 --> 00:38:47,890 teaches middle school computer science. 798 00:38:47,890 --> 00:38:54,210 And he had created an animation of, based on a Washington Post article, 799 00:38:54,210 --> 00:38:57,150 about how people can infect each other, when 800 00:38:57,150 --> 00:38:58,900 they come in contact with each other. 801 00:38:58,900 --> 00:39:02,490 And so I redid it, using-- this was done in JavaScript. 802 00:39:02,490 --> 00:39:04,650 And so I did two different things. 803 00:39:04,650 --> 00:39:08,070 One of the projects was to have students recreate some of this. 804 00:39:08,070 --> 00:39:10,530 And then another part of the project, for students 805 00:39:10,530 --> 00:39:14,780 that maybe didn't feel as able, toward the end of the year, remote learning, 806 00:39:14,780 --> 00:39:19,260 or maybe didn't feel that they were able to do quite as much programming, 807 00:39:19,260 --> 00:39:22,080 I had them actually just use this as a reference 808 00:39:22,080 --> 00:39:26,000 to talk a little about how a computer simulation could happen. 809 00:39:26,000 --> 00:39:30,000 So what I did was that I put in various different things that 810 00:39:30,000 --> 00:39:30,960 could be controlled. 811 00:39:30,960 --> 00:39:33,600 And then I used chart.js to create a chart. 812 00:39:33,600 --> 00:39:39,860 And again, the idea being some ideas on how you could change, 813 00:39:39,860 --> 00:39:47,040 use a model, to get ideas on how to stop a virus from spreading. 814 00:39:47,040 --> 00:39:48,480 So that was what that was about. 815 00:39:48,480 --> 00:39:52,320 And then I just had them do a little essay 816 00:39:52,320 --> 00:39:57,315 on doing additional research on how computer modeling could be used, 817 00:39:57,315 --> 00:39:58,690 computer modeling and simulation. 818 00:39:58,690 --> 00:39:59,190 What is it? 819 00:39:59,190 --> 00:40:01,755 And how could it be used, which, for the AP class, 820 00:40:01,755 --> 00:40:04,920 is actually a topic of the AP class that the AP curriculum explores. 821 00:40:04,920 --> 00:40:07,500 But I think a good one because it also just brings 822 00:40:07,500 --> 00:40:09,630 kind of to the real world application of one 823 00:40:09,630 --> 00:40:12,810 of the ways that we could use these programs that we're creating. 824 00:40:12,810 --> 00:40:17,930 So that was that was, again, trying to keep it relevant. 825 00:40:17,930 --> 00:40:23,300 And something that people are going to be feeling that they can connect with. 826 00:40:23,300 --> 00:40:30,100 So all right, do we have any other questions? 827 00:40:30,100 --> 00:40:32,940 [INAUDIBLE] Yeah, it was fun. 828 00:40:32,940 --> 00:40:35,700 Again, it was so not totally originally. 829 00:40:35,700 --> 00:40:39,360 It originally came from a similar simulation done by the Washington Post. 830 00:40:39,360 --> 00:40:42,997 But again, I think it shows an example that people are concerned about it 831 00:40:42,997 --> 00:40:44,580 and that the students could relate to. 832 00:40:44,580 --> 00:40:47,390 So I'll usually try to come up with a topic. 833 00:40:47,390 --> 00:40:49,090 I'll create writing problems. 834 00:40:49,090 --> 00:40:52,170 I've actually even used the labs for students 835 00:40:52,170 --> 00:40:54,690 to do writing problems there, where rather 836 00:40:54,690 --> 00:40:59,400 than have to have another portal or another submission system for them 837 00:40:59,400 --> 00:41:02,610 to submit their writing assignments, I have used labs, 838 00:41:02,610 --> 00:41:04,680 at times, to have the description of what 839 00:41:04,680 --> 00:41:06,440 they're supposed to write on the left. 840 00:41:06,440 --> 00:41:08,940 And then I'll just have a text file already up. 841 00:41:08,940 --> 00:41:11,610 They just fill in their name, their class period, their date. 842 00:41:11,610 --> 00:41:13,652 And then they could just write in their text file 843 00:41:13,652 --> 00:41:15,940 and then use a Submit50 to submit that, as well. 844 00:41:15,940 --> 00:41:18,180 So I've used them for a lot of different purposes. 845 00:41:18,180 --> 00:41:22,290 Again, just trying to reduce the confusion of students 846 00:41:22,290 --> 00:41:25,230 having to submit one thing here and one thing there, to kind of just 847 00:41:25,230 --> 00:41:28,860 keep it consistent throughout the semester. 848 00:41:28,860 --> 00:41:31,590 So those were some of the things that I did. 849 00:41:31,590 --> 00:41:34,940 850 00:41:34,940 --> 00:41:36,275 Any other questions or comments? 851 00:41:36,275 --> 00:41:40,960 852 00:41:40,960 --> 00:41:43,560 All right, so coming back here. 853 00:41:43,560 --> 00:41:46,070 854 00:41:46,070 --> 00:41:48,260 So again, that was about the labs. 855 00:41:48,260 --> 00:41:54,158 And one of the things to keep in mind is that-- 856 00:41:54,158 --> 00:41:56,200 and you may have heard this earlier in the week-- 857 00:41:56,200 --> 00:42:00,100 that Harvard is giving us this link, this email, 858 00:42:00,100 --> 00:42:05,100 to send off any teacher created problems or labs or activities or assessments, 859 00:42:05,100 --> 00:42:07,652 how they're going to be curated by the 650 team. 860 00:42:07,652 --> 00:42:09,610 And then they'll be posted online, so that they 861 00:42:09,610 --> 00:42:11,910 can be shared, which I'm certainly looking forward 862 00:42:11,910 --> 00:42:16,150 to seeing to get ideas on new activities and new problems, 863 00:42:16,150 --> 00:42:18,760 of different kinds of assessments to use. 864 00:42:18,760 --> 00:42:21,790 Particularly if we start out the year during remote learning, 865 00:42:21,790 --> 00:42:24,380 I'm going to be rethinking myself what types of assessments 866 00:42:24,380 --> 00:42:26,230 I'm going to do, regarding quizzes. 867 00:42:26,230 --> 00:42:27,850 So this is something to keep in mind. 868 00:42:27,850 --> 00:42:30,700 I'll be submitting the labs to this email. 869 00:42:30,700 --> 00:42:33,170 It's been a busy week, but I'll be doing that shortly. 870 00:42:33,170 --> 00:42:37,480 And yeah, so hopefully, that will be another resource for everybody 871 00:42:37,480 --> 00:42:40,370 to be able to have access to. 872 00:42:40,370 --> 00:42:43,910 And then finally, the last topic that I was planning on talking about 873 00:42:43,910 --> 00:42:45,620 is a little bit about assessments. 874 00:42:45,620 --> 00:42:50,400 So CS50's kind of changed the way they do assessments through the years. 875 00:42:50,400 --> 00:42:52,970 This first link is for their quizzes. 876 00:42:52,970 --> 00:42:57,320 And you can see here on their website, they have these quizzes 877 00:42:57,320 --> 00:43:02,350 now that, for every week after the student watches the lecture, 878 00:43:02,350 --> 00:43:05,470 they have a limited amount of time to complete the quiz. 879 00:43:05,470 --> 00:43:08,150 The quizzes in Google Docs, and they're the kinds 880 00:43:08,150 --> 00:43:13,760 of questions that it's not so much about memorizing syntax or even having 881 00:43:13,760 --> 00:43:16,790 something that you're easily going to immediately look up, 882 00:43:16,790 --> 00:43:19,720 but a little bit more conceptual in nature. 883 00:43:19,720 --> 00:43:22,910 Here, about taking a look at maybe something that 884 00:43:22,910 --> 00:43:26,630 might involve integer overflow or integer underflow, 885 00:43:26,630 --> 00:43:30,140 taking a look at various different ways of creating code 886 00:43:30,140 --> 00:43:32,760 and asking why one is more efficient than the other. 887 00:43:32,760 --> 00:43:34,940 So I think these are really interesting ideas. 888 00:43:34,940 --> 00:43:37,430 And they've given us the link here, so that we 889 00:43:37,430 --> 00:43:40,460 can incorporate these quizzes, if we want to, or these ideas, 890 00:43:40,460 --> 00:43:42,710 into our own classes. 891 00:43:42,710 --> 00:43:45,800 Back in the past years, the types of problems 892 00:43:45,800 --> 00:43:48,050 were a little bit more standard, where it 893 00:43:48,050 --> 00:43:50,510 might be complete a function to do something 894 00:43:50,510 --> 00:43:52,850 or something along those lines. 895 00:43:52,850 --> 00:43:56,190 And initially, when I started out my class, as well, 896 00:43:56,190 --> 00:43:59,360 I used more traditional kind of exams like that. 897 00:43:59,360 --> 00:44:03,650 And I have been experimenting with different formats. 898 00:44:03,650 --> 00:44:11,768 So some of the link here basically goes to a folder on my Google Drive, where 899 00:44:11,768 --> 00:44:13,310 I could show you the initial quizzes. 900 00:44:13,310 --> 00:44:15,560 And this idea with the light bulbs, this was actually 901 00:44:15,560 --> 00:44:17,300 stolen from an old CS50 quiz. 902 00:44:17,300 --> 00:44:19,280 I steal as much as I can from them. 903 00:44:19,280 --> 00:44:21,867 I always have because they're so cool. 904 00:44:21,867 --> 00:44:23,450 But I thought that was a fun question. 905 00:44:23,450 --> 00:44:26,533 Students are trying to figure out how to create a binary number by turning 906 00:44:26,533 --> 00:44:28,100 light bulbs on and off. 907 00:44:28,100 --> 00:44:31,090 And I would give these a couple of times a semester 908 00:44:31,090 --> 00:44:34,610 or basically, at the end of each unit, in the classroom, 909 00:44:34,610 --> 00:44:36,500 as a four period quiz. 910 00:44:36,500 --> 00:44:40,430 Now the thing about my class is that my periods got 45 minutes. 911 00:44:40,430 --> 00:44:44,480 And in past years, I've had more students 912 00:44:44,480 --> 00:44:48,680 with disabilities that really require extra time, sometimes even 913 00:44:48,680 --> 00:44:52,790 double time when there's any kind of a full period exam. 914 00:44:52,790 --> 00:44:58,310 So since my class is elective, as this began to be an issue, 915 00:44:58,310 --> 00:45:02,810 I became concerned about having to pull a student out of maybe their math class 916 00:45:02,810 --> 00:45:05,390 or out of their social studies class. 917 00:45:05,390 --> 00:45:07,850 And they need that class to graduate from high school. 918 00:45:07,850 --> 00:45:09,975 And they have to pull that student out of the class 919 00:45:09,975 --> 00:45:11,910 and have them go to a different location. 920 00:45:11,910 --> 00:45:15,070 So instead, what I tried to do in more recent years 921 00:45:15,070 --> 00:45:16,820 was to create a very short multiple choice 922 00:45:16,820 --> 00:45:18,950 quiz that I offer a half a period for. 923 00:45:18,950 --> 00:45:20,630 It's a 20 minute quiz. 924 00:45:20,630 --> 00:45:25,250 And I did that by having still 10 questions. 925 00:45:25,250 --> 00:45:27,440 But it takes a lot less time for a student 926 00:45:27,440 --> 00:45:30,260 to bubble in something on a multiple choice form 927 00:45:30,260 --> 00:45:32,270 than it does to actually write in longhand. 928 00:45:32,270 --> 00:45:36,260 So this quiz, this was actually for like unit two. 929 00:45:36,260 --> 00:45:39,260 A unit one quiz was actually called quiz 0, unit 2 practice. 930 00:45:39,260 --> 00:45:41,760 But I didn't quiz on scratch. 931 00:45:41,760 --> 00:45:46,520 So this was quiz 1, corresponding to things like strings, command line 932 00:45:46,520 --> 00:45:47,480 arguments. 933 00:45:47,480 --> 00:45:50,840 And I would very carefully Proctor around the classroom, 934 00:45:50,840 --> 00:45:53,010 so they were spaced apart from each other. 935 00:45:53,010 --> 00:45:55,578 I'd have multiple versions of the quizzes that I'd give out. 936 00:45:55,578 --> 00:45:57,370 This little zip grade thing is really cool. 937 00:45:57,370 --> 00:46:00,950 It allows you to literally use your phone to scan in the answer sheet. 938 00:46:00,950 --> 00:46:03,650 And it automatically saves it and let you download it 939 00:46:03,650 --> 00:46:05,810 as a CSV file for everybody's grades. 940 00:46:05,810 --> 00:46:08,400 It allows me to give the students an instant grade, as well. 941 00:46:08,400 --> 00:46:10,310 So the advantage was, of the multiple choice, 942 00:46:10,310 --> 00:46:13,080 which I'm not 100% sure I'm going to stick with it. 943 00:46:13,080 --> 00:46:15,920 But the advantage was I would make it a 20 minute quiz, 944 00:46:15,920 --> 00:46:18,260 and then students that need a double time 945 00:46:18,260 --> 00:46:20,910 could just finish it during the period of a class. 946 00:46:20,910 --> 00:46:23,890 In other words, I didn't have to pull them out of the second class. 947 00:46:23,890 --> 00:46:27,920 For my AP students, again, I initially started out 948 00:46:27,920 --> 00:46:32,962 with kind of long form questions, things combined with both some coding problems 949 00:46:32,962 --> 00:46:33,920 that they had to write. 950 00:46:33,920 --> 00:46:38,000 And these generally took, along with some multiple choice questions 951 00:46:38,000 --> 00:46:42,650 that pretty much came up with some of the practice AP exams. 952 00:46:42,650 --> 00:46:45,900 But again, it was sometimes hard for students to finish in 45 minutes. 953 00:46:45,900 --> 00:46:49,070 So I also went to multiple choice last year. 954 00:46:49,070 --> 00:46:52,520 These little diagrams are the kind of format 955 00:46:52,520 --> 00:46:54,390 that they might see on their AP exam. 956 00:46:54,390 --> 00:46:58,260 So I combined CS50 type questions with AP style questions. 957 00:46:58,260 --> 00:47:00,890 But I'm going to certainly be rethinking what I'm going 958 00:47:00,890 --> 00:47:03,920 to do if we do indeed start out remote. 959 00:47:03,920 --> 00:47:10,760 Because it's just too easy for students to just share with each other 960 00:47:10,760 --> 00:47:12,110 the multiple choice response. 961 00:47:12,110 --> 00:47:14,630 I mean, I could jumble up the questions, I guess. 962 00:47:14,630 --> 00:47:16,130 But I'm going to be rethinking that. 963 00:47:16,130 --> 00:47:19,110 So if anybody would like to share assessments they've done, 964 00:47:19,110 --> 00:47:22,310 I'm really looking to get other ideas, as well. 965 00:47:22,310 --> 00:47:26,990 And then CS50 is going to be putting together a number of their old quizzes 966 00:47:26,990 --> 00:47:29,330 and creating a quiz bank, so that we have 967 00:47:29,330 --> 00:47:32,900 one repository to go to get some old quiz questions that we might 968 00:47:32,900 --> 00:47:35,040 incorporate or our classes, as well. 969 00:47:35,040 --> 00:47:37,430 So I've always kind of been snooping around 970 00:47:37,430 --> 00:47:42,805 through some old quizzes available, at CS50.tv, going back before 2017, 971 00:47:42,805 --> 00:47:44,930 where I've stolen some of those old quiz questions. 972 00:47:44,930 --> 00:47:48,780 But in any case, that should make it much easier to find some things 973 00:47:48,780 --> 00:47:55,810 and to hopefully be able to have some new ideas for the future. 974 00:47:55,810 --> 00:47:59,250 So I see Ramon has a question. 975 00:47:59,250 --> 00:48:02,400 976 00:48:02,400 --> 00:48:04,860 AUDIENCE: Yeah, so I would like to ask you 977 00:48:04,860 --> 00:48:11,820 if you could share with us some any success stories of past students, 978 00:48:11,820 --> 00:48:16,740 not in terms of pursuing a career in computer science, 979 00:48:16,740 --> 00:48:21,120 but in terms of like a shy and not very confident 980 00:48:21,120 --> 00:48:27,270 student that ended up becoming very confident in the class 981 00:48:27,270 --> 00:48:29,950 at the end of the course. 982 00:48:29,950 --> 00:48:37,710 And I would like you to tell us which of the customizations 983 00:48:37,710 --> 00:48:42,240 of the course that you have done do you think 984 00:48:42,240 --> 00:48:47,013 has played a key role in those students development? 985 00:48:47,013 --> 00:48:48,930 MARGARET TANZOSH: Yeah, well I've had a number 986 00:48:48,930 --> 00:48:51,690 of students that have started with feeling intimidated 987 00:48:51,690 --> 00:48:54,020 about getting started programming. 988 00:48:54,020 --> 00:48:56,167 As I think I mentioned yesterday, I often 989 00:48:56,167 --> 00:48:58,500 have them do a big reflection at the end of the semester 990 00:48:58,500 --> 00:49:02,400 one, where they write about their development as a computer scientist. 991 00:49:02,400 --> 00:49:04,590 And it's very interesting to me to kind of see 992 00:49:04,590 --> 00:49:07,110 how they see their own growth and development from where 993 00:49:07,110 --> 00:49:10,740 they started on day 0 to where they've come at that point in time. 994 00:49:10,740 --> 00:49:15,810 But I have had students that it's been very exciting to see their growth. 995 00:49:15,810 --> 00:49:18,270 Last year, I had a student, an IEP student, 996 00:49:18,270 --> 00:49:21,570 who was a bit of a struggling student in my introductory class. 997 00:49:21,570 --> 00:49:25,700 He was very determined and went on with my AP classes here. 998 00:49:25,700 --> 00:49:26,700 Actually, more than one. 999 00:49:26,700 --> 00:49:30,000 I had at least two or three students like that that kind of struggled 1000 00:49:30,000 --> 00:49:33,030 at the beginning and were able to get help from peers 1001 00:49:33,030 --> 00:49:34,590 and did fine in the class. 1002 00:49:34,590 --> 00:49:37,020 But it took a lot of support to get them there. 1003 00:49:37,020 --> 00:49:40,710 But by the AP class, they were really quite competent programmers 1004 00:49:40,710 --> 00:49:42,930 at working on the CS50 problems. 1005 00:49:42,930 --> 00:49:46,013 And they're planning on possibly-- 1006 00:49:46,013 --> 00:49:46,680 they're seniors. 1007 00:49:46,680 --> 00:49:47,790 They graduated this year. 1008 00:49:47,790 --> 00:49:50,530 And are possibly looking at even majoring in computer science. 1009 00:49:50,530 --> 00:49:52,110 So we'll see if they stay with it. 1010 00:49:52,110 --> 00:49:54,270 But I've had a number of students. 1011 00:49:54,270 --> 00:49:57,867 And I'm proud to say, also, a number of girls, who came into the class 1012 00:49:57,867 --> 00:49:59,950 and weren't sure if this was something they'd like 1013 00:49:59,950 --> 00:50:02,580 and actually ended up moving on and deciding 1014 00:50:02,580 --> 00:50:04,980 to computer science in college. 1015 00:50:04,980 --> 00:50:08,350 So there's quite a number of interesting stories that way. 1016 00:50:08,350 --> 00:50:11,130 And one of the things that help, I think, 1017 00:50:11,130 --> 00:50:15,750 well, I guess my own philosophy is that I try to just really be 1018 00:50:15,750 --> 00:50:17,370 there to support the students. 1019 00:50:17,370 --> 00:50:21,720 So I try to give them every chance they can to succeed. 1020 00:50:21,720 --> 00:50:27,030 I really stress that it's really about just sticking with it, persistence, 1021 00:50:27,030 --> 00:50:31,170 that everybody gets the stuff at a different time in their life. 1022 00:50:31,170 --> 00:50:33,600 You could take a few months and then you catch 1023 00:50:33,600 --> 00:50:35,710 it and you got it and now all makes sense. 1024 00:50:35,710 --> 00:50:40,170 So I'm just trying to stay really positive, being there for the students, 1025 00:50:40,170 --> 00:50:42,330 being there to support them if they need it. 1026 00:50:42,330 --> 00:50:44,372 If they want to come in for lunch for extra help, 1027 00:50:44,372 --> 00:50:48,470 I'll make that available to them, whatever I can do to help them succeed. 1028 00:50:48,470 --> 00:50:50,220 So I don't know. 1029 00:50:50,220 --> 00:50:53,490 I mean, you know, I think certainly the scaffolding 1030 00:50:53,490 --> 00:50:57,975 has helped in the past few years that I've had more special Ed students. 1031 00:50:57,975 --> 00:51:01,560 It allows me to spend more time working with them 1032 00:51:01,560 --> 00:51:07,055 and allowing students to be more independent, so that I don't have 1033 00:51:07,055 --> 00:51:09,180 to be kind of running around the classroom quite so 1034 00:51:09,180 --> 00:51:10,860 much with the little questions. 1035 00:51:10,860 --> 00:51:13,570 I could focus on some of the bigger issues, 1036 00:51:13,570 --> 00:51:15,953 kind of thinking through algorithms, instead of just, 1037 00:51:15,953 --> 00:51:18,870 why can't I compile my code because I'm in the wrong directory, things 1038 00:51:18,870 --> 00:51:19,810 like that. 1039 00:51:19,810 --> 00:51:21,240 So I don't know. 1040 00:51:21,240 --> 00:51:22,800 I mean, I'm still learning myself. 1041 00:51:22,800 --> 00:51:26,220 I'm always trying to come up with new ideas and always trying to improve. 1042 00:51:26,220 --> 00:51:28,377 But it's been fun. 1043 00:51:28,377 --> 00:51:30,960 It's just been a lot of fun to see all the students developing 1044 00:51:30,960 --> 00:51:35,730 and see how many of them actually want to go on afterwards with the subject. 1045 00:51:35,730 --> 00:51:38,017 So anyway. 1046 00:51:38,017 --> 00:51:40,350 So I don't know if I've answered your question, exactly. 1047 00:51:40,350 --> 00:51:44,640 But that's been kind of my experience with the students. 1048 00:51:44,640 --> 00:51:47,710 All right, so I think we're going to wrap it up, 1049 00:51:47,710 --> 00:51:50,190 if nobody has any other questions. 1050 00:51:50,190 --> 00:51:51,880 It was really fun meeting you. 1051 00:51:51,880 --> 00:51:54,190 You guys had some great questions. 1052 00:51:54,190 --> 00:51:56,190 Thank you so much for hearing what I had to say. 1053 00:51:56,190 --> 00:51:57,550 It was a lot of fun. 1054 00:51:57,550 --> 00:51:59,850 So good luck to you all. 1055 00:51:59,850 --> 00:52:04,110 And let me know if you have any other questions. 1056 00:52:04,110 --> 00:52:05,500 Stay in touch. 1057 00:52:05,500 --> 00:52:06,000