1 00:00:00,000 --> 00:00:00,810 DAVID MALAN: Hello. 2 00:00:00,810 --> 00:00:03,315 My name is David Malan, and I teach CS50 at Harvard, 3 00:00:03,315 --> 00:00:05,940 which is our introductory course in computer science for majors 4 00:00:05,940 --> 00:00:08,850 and nonmajors taught primarily in C and Python. 5 00:00:08,850 --> 00:00:11,880 Back in spring of 2020, Harvard, like a lot of universities, 6 00:00:11,880 --> 00:00:15,390 sent everyone home midsemester with classes, thereafter, online, 7 00:00:15,390 --> 00:00:19,200 and it soon became clear that fall of 2020 would be online as well. 8 00:00:19,200 --> 00:00:23,220 Now, CS50 itself has long been available online via Harvard extension school 9 00:00:23,220 --> 00:00:25,170 and, more recently, via edX as well. 10 00:00:25,170 --> 00:00:27,780 So we initially considered simply reusing the videos 11 00:00:27,780 --> 00:00:30,480 that we had filmed live in fall of 2019 since I 12 00:00:30,480 --> 00:00:33,750 didn't think I could do nearly as good a job from home via Zoom. 13 00:00:33,750 --> 00:00:36,090 But we realized that there might be a silver lining 14 00:00:36,090 --> 00:00:37,770 of that particular moment in time. 15 00:00:37,770 --> 00:00:41,430 With everyone off campus, there was an unprecedented availability of space 16 00:00:41,430 --> 00:00:44,280 on campus, in particular the university's Drama 17 00:00:44,280 --> 00:00:46,950 Center, home to the American Repertory Theater, was 18 00:00:46,950 --> 00:00:49,560 vacant, its team of artisans idled as well 19 00:00:49,560 --> 00:00:51,698 with no shows scheduled any time soon. 20 00:00:51,698 --> 00:00:53,490 And so we reached out to see if we might be 21 00:00:53,490 --> 00:00:55,770 able to teach the course live on its stage 22 00:00:55,770 --> 00:00:59,280 with students present only via Zoom and with just a few staff 23 00:00:59,280 --> 00:01:01,020 present in person. 24 00:01:01,020 --> 00:01:03,690 Amazingly, after quite a few emails and Zoom meetings, 25 00:01:03,690 --> 00:01:07,290 the answer came back as a yes, albeit subject to rigorous protocols. 26 00:01:07,290 --> 00:01:10,710 Only one person while teaching on camera could be unmasked at a time 27 00:01:10,710 --> 00:01:13,830 with everyone else wearing face masks and face shields 28 00:01:13,830 --> 00:01:16,830 separated from each other by 15 or more feet. 29 00:01:16,830 --> 00:01:19,400 Now, I should mention that, in healthier times, 30 00:01:19,400 --> 00:01:22,170 CS50 is already taught in a theater, a beautiful one at that, 31 00:01:22,170 --> 00:01:26,640 but what that theater doesn't have is a wide-open schedule, an entire prop shop 32 00:01:26,640 --> 00:01:29,580 in back, and experts in lighting and set design. 33 00:01:29,580 --> 00:01:32,400 All things considered, then, fall of 2020 34 00:01:32,400 --> 00:01:35,430 offered an amazing opportunity for our computer science class 35 00:01:35,430 --> 00:01:37,530 to collaborate with a whole team of artisans 36 00:01:37,530 --> 00:01:41,580 to bring computer science to life with all the more theatricality 37 00:01:41,580 --> 00:01:43,530 than is ordinarily possible. 38 00:01:43,530 --> 00:01:47,430 Our pedagogical goal, ultimately, was to create all the more memorable moments 39 00:01:47,430 --> 00:01:51,810 for students particularly in those earliest days of COVID-19 with everyone 40 00:01:51,810 --> 00:01:56,790 online in front of a computer all day to help students visualize, understand, 41 00:01:56,790 --> 00:02:01,530 and remember concepts more than a lecturer's words alone might allow. 42 00:02:01,530 --> 00:02:03,870 That said, nearly all of the demonstrations 43 00:02:03,870 --> 00:02:06,000 that we did that semester on stage were really 44 00:02:06,000 --> 00:02:08,460 just higher-end equivalents of ones that we have long 45 00:02:08,460 --> 00:02:11,730 done more modestly in person in healthier times in classrooms 46 00:02:11,730 --> 00:02:12,840 large and small. 47 00:02:12,840 --> 00:02:15,090 Indeed, most everything you're about to see 48 00:02:15,090 --> 00:02:18,570 can also be done with some chalk paper and tape alone, 49 00:02:18,570 --> 00:02:21,000 but we thought we'd share with this talk just some 50 00:02:21,000 --> 00:02:23,070 of what we did that particular term and why 51 00:02:23,070 --> 00:02:26,490 we did it with even more in the paper. 52 00:02:26,490 --> 00:02:32,100 All of these slides can be found at cs50.ly/sigcse23. 53 00:02:32,100 --> 00:02:34,620 And allow me to emphasize that we only claim to have 54 00:02:34,620 --> 00:02:36,300 enacted these particular moments. 55 00:02:36,300 --> 00:02:39,720 Each was undoubtedly originated or inspired by my own teachers 56 00:02:39,720 --> 00:02:42,900 professors and colleagues over time. 57 00:02:42,900 --> 00:02:46,230 Here, then, is the theater in question. 58 00:02:46,230 --> 00:02:49,170 Here are those same seats filled virtually via Zoom 59 00:02:49,170 --> 00:02:55,120 with as many as 300 students at once visible across six very large screens. 60 00:02:55,120 --> 00:03:00,780 And here, closer up, is what I would see when interacting with students. 61 00:03:00,780 --> 00:03:03,690 What students saw, meanwhile, looked a little something like this, 62 00:03:03,690 --> 00:03:06,990 and it was on this stage that we brought one of our first demonstrations 63 00:03:06,990 --> 00:03:07,920 to life. 64 00:03:07,920 --> 00:03:09,810 Funny enough, the demonstration that students 65 00:03:09,810 --> 00:03:13,050 anecdotally mentioned as the most memorable over the years 66 00:03:13,050 --> 00:03:14,970 doesn't require a stage at all just a phone 67 00:03:14,970 --> 00:03:18,120 book, which, admittedly, is perhaps just as hard to come by these days. 68 00:03:18,120 --> 00:03:21,330 But it's a physical analog of the context that students of course 69 00:03:21,330 --> 00:03:24,480 now have in their phones, so the idea of searching for someone 70 00:03:24,480 --> 00:03:26,010 is no less familiar. 71 00:03:26,010 --> 00:03:29,430 Indeed, we use this prop to introduce students to algorithms. 72 00:03:29,430 --> 00:03:31,500 We start by asking how we might find someone, 73 00:03:31,500 --> 00:03:34,530 say, David in this here phonebook if it's sorted alphabetically 74 00:03:34,530 --> 00:03:35,460 by first name. 75 00:03:35,460 --> 00:03:39,240 And I propose to start looking from the beginning, one page at a time. 76 00:03:39,240 --> 00:03:41,550 After a few such page turns, I ask students 77 00:03:41,550 --> 00:03:43,410 whether the algorithm is correct. 78 00:03:43,410 --> 00:03:45,990 Invariably, a few students say yes, but a few also 79 00:03:45,990 --> 00:03:49,050 say no, conflating correctness with efficiency. 80 00:03:49,050 --> 00:03:52,530 So I then define both and then propose that we try to do better. 81 00:03:52,530 --> 00:03:55,896 I then start to flip two pages at a time, 2, 4, 6, 82 00:03:55,896 --> 00:04:00,960 8, noting that it surely sounds and is faster, but is it correct? 83 00:04:00,960 --> 00:04:04,590 A student usually recognizes that I might accidentally skip over the person 84 00:04:04,590 --> 00:04:08,280 that I'm looking for, so I acknowledge that I might need to double back a bit 85 00:04:08,280 --> 00:04:09,420 if I've gone too far. 86 00:04:09,420 --> 00:04:13,830 It's still twice as fast, give or take a page, but can we do even better? 87 00:04:13,830 --> 00:04:15,870 I then propose to start in the middle. 88 00:04:15,870 --> 00:04:20,100 Looking down, I notice that I'm in the M section, so what do I do now? 89 00:04:20,100 --> 00:04:23,070 Well, David, which starts with a D, is surely to the left, 90 00:04:23,070 --> 00:04:27,990 so I can now figuratively and literally tear the problem in half, theatrically 91 00:04:27,990 --> 00:04:30,960 so, throwing half of the problem away. 92 00:04:30,960 --> 00:04:34,590 And I can repeat, repeat, repeat until I'm left with just one page. 93 00:04:34,590 --> 00:04:36,930 And to be fair, no more phone book, but we then 94 00:04:36,930 --> 00:04:39,840 talk about how we might analyze the algorithms, the first two 95 00:04:39,840 --> 00:04:42,720 linear and the third logarithmic in running time. 96 00:04:42,720 --> 00:04:45,300 And we then translate the demo to pseudocode, at which point 97 00:04:45,300 --> 00:04:48,030 we introduce vocabulary, like functions, conditionals, 98 00:04:48,030 --> 00:04:51,030 boolean expressions, loops, and more. 99 00:04:51,030 --> 00:04:53,700 A few weeks later, we revisit algorithms but in the context 100 00:04:53,700 --> 00:04:54,990 of arrays specifically. 101 00:04:54,990 --> 00:04:58,290 For this moment in time, I've long used sheets of paper taped to the board 102 00:04:58,290 --> 00:05:01,740 with numbers written in chalk behind each to represent some arrays, 103 00:05:01,740 --> 00:05:04,110 that the sheets are covering the numbers is deliberate. 104 00:05:04,110 --> 00:05:06,990 Neither we nor a computer can see all of the numbers at once. 105 00:05:06,990 --> 00:05:09,870 We must index into it to see one at a time. 106 00:05:09,870 --> 00:05:12,360 Sometimes we've used small gym lockers instead 107 00:05:12,360 --> 00:05:15,810 to make even clear that the numbers are effectively behind closed doors. 108 00:05:15,810 --> 00:05:18,810 But in fall of 2020, the theater had a whole warehouse 109 00:05:18,810 --> 00:05:22,890 of props used in past shows, and so we brought those doors to life size 110 00:05:22,890 --> 00:05:26,070 with an eclectic array of seven actual doors on stage. 111 00:05:26,070 --> 00:05:29,640 Behind each was a number, brought to life by the theater's prop shop, some 112 00:05:29,640 --> 00:05:31,800 with fur, some even with googly eyes. 113 00:05:31,800 --> 00:05:34,680 I then used these doors to search for a particular number, 114 00:05:34,680 --> 00:05:36,960 once with the numbers unordered and, again, 115 00:05:36,960 --> 00:05:40,290 with the numbers then ordered after which we named my two approaches-- 116 00:05:40,290 --> 00:05:42,630 linear and binary search respectively. 117 00:05:42,630 --> 00:05:45,210 We then transitioned to a discussion of asymptotic running 118 00:05:45,210 --> 00:05:47,760 time, including big O and omega. 119 00:05:47,760 --> 00:05:50,520 Now, in healthier times, we would have two students volunteer 120 00:05:50,520 --> 00:05:52,500 to do the searches instead, though we've found 121 00:05:52,500 --> 00:05:55,290 that it helps our own pedagogical narrative to guide 122 00:05:55,290 --> 00:05:57,600 the students toward one algorithm than the other 123 00:05:57,600 --> 00:06:01,260 rather than simply invite them to find some number without any guidance. 124 00:06:01,260 --> 00:06:03,630 Otherwise, the first student invariably hesitates, 125 00:06:03,630 --> 00:06:07,080 thinking there's some trick to finding the number when there isn't, and then 126 00:06:07,080 --> 00:06:10,560 they start opening doors randomly, much like a game show, rather than linearly. 127 00:06:10,560 --> 00:06:13,110 And worse, they sometimes find the number in question 128 00:06:13,110 --> 00:06:17,250 behind their very first choice of doors, which, of course, is hilarious and met 129 00:06:17,250 --> 00:06:18,750 with applause from their classmates. 130 00:06:18,750 --> 00:06:22,260 But it's not exactly ideal for a discussion of upper bounds, 131 00:06:22,260 --> 00:06:23,310 though great for lower. 132 00:06:23,310 --> 00:06:25,470 So the specific narrative for this moment 133 00:06:25,470 --> 00:06:29,550 rather depends on just how much the instructor leaves to chance. 134 00:06:29,550 --> 00:06:31,530 The next week we focus for some time on how 135 00:06:31,530 --> 00:06:34,260 to swap two values in memory as might be necessary 136 00:06:34,260 --> 00:06:36,540 when sorting the last week's array so that you 137 00:06:36,540 --> 00:06:38,610 can, in fact, use binary search. 138 00:06:38,610 --> 00:06:41,460 We take out two glasses of water, each a different color 139 00:06:41,460 --> 00:06:45,090 thanks to some food coloring, and we ask a volunteer-- or, in fall of 2020, 140 00:06:45,090 --> 00:06:49,260 a colleague in another room via video conference-- to swap the two values. 141 00:06:49,260 --> 00:06:51,990 Invariably, the volunteer hesitates, at which point 142 00:06:51,990 --> 00:06:56,670 I dramatically offer up a temporary variable in the form of a third glass, 143 00:06:56,670 --> 00:07:00,120 although one year, students simply swapped the positions of the two 144 00:07:00,120 --> 00:07:01,680 glasses and thought we were done. 145 00:07:01,680 --> 00:07:05,820 And then we enact swapping the two liquids using the third variable. 146 00:07:05,820 --> 00:07:08,610 We then transitioned to issues of scope and the implications 147 00:07:08,610 --> 00:07:10,530 of passing by value or reference. 148 00:07:10,530 --> 00:07:13,620 We consider code, like this here, which, similarly, swaps 149 00:07:13,620 --> 00:07:16,440 two values A and B perfectly fine but fails 150 00:07:16,440 --> 00:07:19,080 to swap the callers, copies thereof. 151 00:07:19,080 --> 00:07:21,840 So at that point, we introduce pointers. 152 00:07:21,840 --> 00:07:23,760 Now, I should mention that, a few years ago, I 153 00:07:23,760 --> 00:07:26,850 thought it'd be clever to demonstrate XOR swapping as well whereby 154 00:07:26,850 --> 00:07:30,150 you can swap two values using bitwise XOR operations 155 00:07:30,150 --> 00:07:31,890 without a temporary variable. 156 00:07:31,890 --> 00:07:34,170 And so I used water and oil for that demo, 157 00:07:34,170 --> 00:07:36,120 thinking cleverly that the two wouldn't mix 158 00:07:36,120 --> 00:07:38,670 and so I could get away with just two glasses. 159 00:07:38,670 --> 00:07:41,190 It turns out that's easier said than done in practice 160 00:07:41,190 --> 00:07:45,150 and yielded a memorable moment that just didn't work very well. 161 00:07:45,150 --> 00:07:47,880 We continue our discussion of memory, though, that same week, 162 00:07:47,880 --> 00:07:51,030 representing pointers metaphorically as mailboxes. 163 00:07:51,030 --> 00:07:54,180 And one mailbox is an address, like 0x123, 164 00:07:54,180 --> 00:07:56,880 and at that address is 50, an int. 165 00:07:56,880 --> 00:07:59,055 At this point, I tend to put on an oversized foam 166 00:07:59,055 --> 00:08:01,680 finger akin to what you'd see in stadium to make clear that one 167 00:08:01,680 --> 00:08:04,230 value effectively points to the other. 168 00:08:04,230 --> 00:08:06,570 Admittedly better than standalone mailboxes 169 00:08:06,570 --> 00:08:09,510 might be a whole wall of apartment mailboxes akin to an array, 170 00:08:09,510 --> 00:08:12,930 but the standalone mailboxes are much easier to transport and use 171 00:08:12,930 --> 00:08:15,810 in traditional classrooms as well. 172 00:08:15,810 --> 00:08:19,590 Toward the end of our semester, we also introduce students to a bit of SQL 173 00:08:19,590 --> 00:08:21,720 and, eventually, concepts like race conditions. 174 00:08:21,720 --> 00:08:24,630 We suppose that there are some popular posts on a social media 175 00:08:24,630 --> 00:08:27,150 site that lots of users are liking at once, 176 00:08:27,150 --> 00:08:29,850 and we suppose that the site is using two SQL statements 177 00:08:29,850 --> 00:08:33,480 to keep track of those likes, one to select the current number of likes 178 00:08:33,480 --> 00:08:35,820 and one to update that number by one. 179 00:08:35,820 --> 00:08:39,360 We ask students what might happen if those two statements aren't executed 180 00:08:39,360 --> 00:08:43,169 atomically for each user's like, together at once without interruption, 181 00:08:43,169 --> 00:08:45,090 by some other user's like. 182 00:08:45,090 --> 00:08:48,630 We answer that we might miscount the likes, but why? 183 00:08:48,630 --> 00:08:51,720 Well, we walk over to an actual refrigerator on stage, 184 00:08:51,720 --> 00:08:53,340 or a plastic miniature thereof. 185 00:08:53,340 --> 00:08:56,580 And we suppose that two roommates have the same in their dorm 186 00:08:56,580 --> 00:08:59,010 room, and both of them really like milk. 187 00:08:59,010 --> 00:09:01,170 One roommate comes home one day, opens the fridge, 188 00:09:01,170 --> 00:09:02,790 and they discover they're out of milk. 189 00:09:02,790 --> 00:09:04,170 So they head to the store. 190 00:09:04,170 --> 00:09:06,780 Meanwhile, the other roommate comes home, opens the fridge, 191 00:09:06,780 --> 00:09:09,120 discovers the same, and heads to another store 192 00:09:09,120 --> 00:09:11,400 without crossing paths with the other. 193 00:09:11,400 --> 00:09:14,820 Eventually, both of them return home only to realize that both of them 194 00:09:14,820 --> 00:09:15,720 have bought milk. 195 00:09:15,720 --> 00:09:18,300 But they don't really like milk that much, so some of it 196 00:09:18,300 --> 00:09:19,500 will now go to waste. 197 00:09:19,500 --> 00:09:22,350 So how do we avoid that problem? 198 00:09:22,350 --> 00:09:24,630 Now, at least one student usually suggests 199 00:09:24,630 --> 00:09:27,720 that we leave a note on the fridge, which would, indeed, suffice, 200 00:09:27,720 --> 00:09:29,910 but we take the opportunity more dramatically 201 00:09:29,910 --> 00:09:32,220 to lock the fridge all together. 202 00:09:32,220 --> 00:09:35,250 We explain that the solution for likes in a database 203 00:09:35,250 --> 00:09:38,460 is also a lock or lower-level transaction, 204 00:09:38,460 --> 00:09:40,830 and we emphasize that both problems arose 205 00:09:40,830 --> 00:09:43,260 because we inspected the state of some variable 206 00:09:43,260 --> 00:09:48,180 while it was being updated and made a decision based on that state. 207 00:09:48,180 --> 00:09:51,240 Those then are just a few of the memorable moments 208 00:09:51,240 --> 00:09:52,740 that we present in the paper. 209 00:09:52,740 --> 00:09:54,360 We discuss others as well. 210 00:09:54,360 --> 00:09:58,740 We use a black box to explain functions with inputs and outputs. 211 00:09:58,740 --> 00:10:01,290 We rearrange plastic numbers to explain sorting, 212 00:10:01,290 --> 00:10:05,040 using one shelf for selection sort and bubble sort but multiple shelves 213 00:10:05,040 --> 00:10:07,140 and, thus, more space for merge sort. 214 00:10:07,140 --> 00:10:10,380 We create a pyramid of cardboard bricks to explain recursion 215 00:10:10,380 --> 00:10:13,920 whereby a pyramid of height n is but a pyramid of height n minus 1 216 00:10:13,920 --> 00:10:16,290 plus an additional layer of bricks. 217 00:10:16,290 --> 00:10:19,230 We draw on a grid of tiles to explain memory, 218 00:10:19,230 --> 00:10:21,600 each representing some number of bytes. 219 00:10:21,600 --> 00:10:25,650 We allocate wooden blocks to build a linked list of nodes, 220 00:10:25,650 --> 00:10:28,200 though I should mention that of all the demonstrations 221 00:10:28,200 --> 00:10:30,750 we did that term, this one I actually regret. 222 00:10:30,750 --> 00:10:33,690 When the prop shop asked, how large I'd like the blocks to be? 223 00:10:33,690 --> 00:10:35,760 I proposed three feet. 224 00:10:35,760 --> 00:10:40,170 Well, it turns out that three foot nodes made out of wood are much, much, 225 00:10:40,170 --> 00:10:43,200 much heavier than I thought, a testament perhaps 226 00:10:43,200 --> 00:10:45,960 to how difficult it is to manage memory. 227 00:10:45,960 --> 00:10:48,690 We hash oversized playing cards into actual buckets 228 00:10:48,690 --> 00:10:50,790 to explain hashing and hash tables. 229 00:10:50,790 --> 00:10:54,510 We enact callback functions by phone whereby I ask a colleague a question, 230 00:10:54,510 --> 00:10:56,700 and he calls me back with the answer. 231 00:10:56,700 --> 00:10:58,860 And we use light bulbs to explain binary, 232 00:10:58,860 --> 00:11:02,010 each week encoding an Easter egg in the theater's own stage lights 233 00:11:02,010 --> 00:11:03,780 using unicode. 234 00:11:03,780 --> 00:11:07,170 Ultimately, our use of so many physical props in fall of 2020 235 00:11:07,170 --> 00:11:10,410 was well received by students with 65% of students 236 00:11:10,410 --> 00:11:14,847 reporting that they loved, use thereof, and 27% reporting that they liked. 237 00:11:14,847 --> 00:11:16,680 We asked students more specifically, though, 238 00:11:16,680 --> 00:11:19,080 just how helpful they found each demonstration, 239 00:11:19,080 --> 00:11:22,050 and atop the list, funny enough, was arguably the simplest of them, 240 00:11:22,050 --> 00:11:24,420 tearing a phonebook to explain binary search. 241 00:11:24,420 --> 00:11:28,050 At the bottom of the list, meanwhile, was the black box to explain functions. 242 00:11:28,050 --> 00:11:30,930 Here along the vertical axis is each demonstration, 243 00:11:30,930 --> 00:11:33,900 and each horizontal bar depicts just how helpful students 244 00:11:33,900 --> 00:11:35,340 found each demonstration. 245 00:11:35,340 --> 00:11:37,830 From left to right, blue is very helpful, 246 00:11:37,830 --> 00:11:41,100 red is somewhat helpful, and then neutral, somewhat unhelpful, 247 00:11:41,100 --> 00:11:43,230 very unhelpful, and unsure. 248 00:11:43,230 --> 00:11:47,460 So a long blue bar means that many students found a demo very helpful, 249 00:11:47,460 --> 00:11:51,300 and a shorter blue bar means that fewer students found a demo very helpful. 250 00:11:51,300 --> 00:11:54,210 We explore in the paper why we think that might be for some demos. 251 00:11:54,210 --> 00:11:56,520 For instance, we suspect we're not spending enough time 252 00:11:56,520 --> 00:11:59,310 using the black box to explain functions and that we're actually 253 00:11:59,310 --> 00:12:03,210 spending more time than is necessary using light bulbs to explain binary, 254 00:12:03,210 --> 00:12:06,990 though future work includes identifying more precisely why some didn't work 255 00:12:06,990 --> 00:12:09,360 as well as others so that we can retool. 256 00:12:09,360 --> 00:12:11,325 From surveys of students, though, we already 257 00:12:11,325 --> 00:12:13,200 know that the course's use of physical props, 258 00:12:13,200 --> 00:12:17,400 help me understand at a different level and help me remember the material 259 00:12:17,400 --> 00:12:19,920 better, which was precisely a name. 260 00:12:19,920 --> 00:12:23,190 They made me comprehend something instead of just recalling it. 261 00:12:23,190 --> 00:12:26,040 For instance, I will never forget about locking transactions. 262 00:12:26,040 --> 00:12:27,630 Think double milk jugs. 263 00:12:27,630 --> 00:12:31,800 Or link lists, think boxes connected by arrows pointers. 264 00:12:31,800 --> 00:12:35,040 It helped to visualize all of the code and ideas 265 00:12:35,040 --> 00:12:38,910 that would otherwise just be letters, symbols, numbers, and indents. 266 00:12:38,910 --> 00:12:41,550 It really helped me stay engaged, especially 267 00:12:41,550 --> 00:12:44,040 in the virtual nature of this semester. 268 00:12:44,040 --> 00:12:46,710 The flip side, though, is that all the theatricality, 269 00:12:46,710 --> 00:12:49,230 even if modestly implemented with just paper and tape, 270 00:12:49,230 --> 00:12:51,810 does come at a cost, namely time. 271 00:12:51,810 --> 00:12:55,260 As one student put it, the demos were often unnecessary, 272 00:12:55,260 --> 00:12:56,790 helpful but unnecessary. 273 00:12:56,790 --> 00:12:59,640 For me, an animated diagram on the slides would have been sufficient 274 00:12:59,640 --> 00:13:03,280 and often felt that these demonstrations took up more time than necessary. 275 00:13:03,280 --> 00:13:07,120 And another student distinguished between engagement and actual learning. 276 00:13:07,120 --> 00:13:09,670 I like them because they were engaging, but I don't think 277 00:13:09,670 --> 00:13:11,590 they helped a lot with my learning. 278 00:13:11,590 --> 00:13:13,960 That said, another acknowledged that I don't really 279 00:13:13,960 --> 00:13:17,500 get value from stuff like that, but I know it helps others. 280 00:13:17,500 --> 00:13:20,213 So that's a balance we ourselves have long struggled with. 281 00:13:20,213 --> 00:13:22,630 Indeed, if there's been one long-standing critique of CS50 282 00:13:22,630 --> 00:13:25,780 it's just that it's too theatrical for some students tastes. 283 00:13:25,780 --> 00:13:29,020 In fact, one of his papers on reviewers couldn't have said it better. 284 00:13:29,020 --> 00:13:31,150 In a teaching environment, there is a balance 285 00:13:31,150 --> 00:13:33,850 that needs to be struck between the inquisitive newcomer, who 286 00:13:33,850 --> 00:13:36,670 we want to inspire, and the more advanced early student 287 00:13:36,670 --> 00:13:37,930 that we want to challenge. 288 00:13:37,930 --> 00:13:42,220 How much theater in the classroom for an individual class is advisable? 289 00:13:42,220 --> 00:13:45,670 Finding that balance, then, is among our own goals ahead or perhaps confirming 290 00:13:45,670 --> 00:13:48,130 that we have found it, even if the global optimum isn't 291 00:13:48,130 --> 00:13:50,170 locally optimal for some learners. 292 00:13:50,170 --> 00:13:52,660 And we don't yet, but it would be nice to track 293 00:13:52,660 --> 00:13:54,730 the impact of these memorable moments on students 294 00:13:54,730 --> 00:13:57,880 beyond the end of our own one course or, better yet, beyond graduation 295 00:13:57,880 --> 00:14:00,490 as via surveys or even assessments to ascertain 296 00:14:00,490 --> 00:14:03,790 if they help students visualize, understand, and remember concepts only 297 00:14:03,790 --> 00:14:07,330 in the short term or in the long term as well. 298 00:14:07,330 --> 00:14:12,550 Videos of all these demonstrations and more can be found at youtube.com/cs50. 299 00:14:12,550 --> 00:14:14,680 Please do reach out via email with any questions, 300 00:14:14,680 --> 00:14:17,710 and thank you to all of my colleagues at Harvard, to all of my teachers 301 00:14:17,710 --> 00:14:21,970 and professors past, and to our friends at the American Repertory Theater. 302 00:14:21,970 --> 00:14:25,180 Theatricality does not require an actual theater, 303 00:14:25,180 --> 00:14:27,400 but in that particular moment in time, we 304 00:14:27,400 --> 00:14:29,770 do think our course was the better for it. 305 00:14:29,770 --> 00:14:34,990 And it seems only appropriate to end this talk now on a theatrical note. 306 00:14:34,990 --> 00:14:38,340 [MUSIC PLAYING] 307 00:14:38,340 --> 00:15:33,000