1 00:00:09,149 --> 00:00:10,110 Hi, I am Steve Oney. 2 00:00:10,110 --> 00:00:12,635 I'm an assistant professor here in the School of Information at 3 00:00:12,635 --> 00:00:14,073 the University of Michigan. 4 00:00:14,073 --> 00:00:17,619 So I teach some of the introductory programming classes in the school of 5 00:00:17,619 --> 00:00:18,394 information. 6 00:00:18,394 --> 00:00:22,561 And I'm really excited to have you join us because I really think programming is 7 00:00:22,561 --> 00:00:25,982 going to increasingly be a fundamentally important literacy and 8 00:00:25,982 --> 00:00:29,402 a way of dealing with the increasing amounts of data that we get and 9 00:00:29,402 --> 00:00:31,967 deal with in our everyday lives. 10 00:00:31,967 --> 00:00:36,626 In my private life, I play soccer, like professor Resnick, 11 00:00:36,626 --> 00:00:43,470 I am an avid biker as well, and you will be seeing me in courses one, two and four. 12 00:00:43,470 --> 00:00:47,040 Most of my research deals with making programming tools more usable. 13 00:00:47,040 --> 00:00:49,980 In other words, making programming tools that are designed around the ways 14 00:00:49,980 --> 00:00:52,880 that people think and the ways that we actually program as well. 15 00:00:54,650 --> 00:00:57,250 >> Hi, I'm Paul Resnick. 16 00:00:57,250 --> 00:00:58,790 I'm a professor and associate dean for 17 00:00:58,790 --> 00:01:02,450 research at the University of Michigan School of Information. 18 00:01:02,450 --> 00:01:06,540 As associate dean, I don't get to teach that much, but I really enjoy teaching 19 00:01:06,540 --> 00:01:10,270 the material that I'll be teaching you in this specialization, and 20 00:01:10,270 --> 00:01:13,510 I'm glad to have a chance to share it with you. 21 00:01:13,510 --> 00:01:18,150 You'll see me in courses one and two, almost all of course three, and 22 00:01:18,150 --> 00:01:19,500 a little bit in course four. 23 00:01:20,920 --> 00:01:25,233 I am a fan of nerdy pun humor, also known as dad jokes, and so 24 00:01:25,233 --> 00:01:30,430 I'll be sharing a few of those with you at the end of some of the lessons. 25 00:01:31,590 --> 00:01:34,272 In my research, I'm probably best known for, 26 00:01:34,272 --> 00:01:37,120 what's now known as recommender systems. 27 00:01:37,120 --> 00:01:41,470 I first published on this back in the early 90s, things like at 28 00:01:41,470 --> 00:01:45,470 Amazon where it says, people who bought this book also bought these other books. 29 00:01:46,950 --> 00:01:50,080 And more recently, I've been working on online communities and 30 00:01:50,080 --> 00:01:52,140 then on educational technologies. 31 00:01:53,270 --> 00:01:58,160 In my personal life, I like to play tennis and ride a bike. 32 00:01:58,160 --> 00:02:03,770 I've ridden very slowly up a couple of the iconic climbs of the Tour de France, 33 00:02:03,770 --> 00:02:06,320 four years ago up Mont Ventoux, and 34 00:02:06,320 --> 00:02:11,160 a couple of years ago up the Col du Tourmalet in the Pyrenees. 35 00:02:11,160 --> 00:02:17,240 I don't travel nearly as much as Dr. Chuck, but I do look forward to trying to 36 00:02:17,240 --> 00:02:21,550 adopt his practice of holding live office hours in places when I do get to travel. 37 00:02:21,550 --> 00:02:23,345 So maybe I'll get a chance to see him. 38 00:02:24,370 --> 00:02:25,279 See you in the lessons. 39 00:02:27,030 --> 00:02:28,570 >> Hi, my name is Jackie Cohen, 40 00:02:28,570 --> 00:02:32,060 and I'm a lecturer at the University of Michigan School of Information. 41 00:02:32,060 --> 00:02:33,732 I teach a lot of programming courses, 42 00:02:33,732 --> 00:02:36,530 including courses a lot like the ones you'll see here. 43 00:02:36,530 --> 00:02:40,270 And I also build, and design, and support a lot of course resources. 44 00:02:40,270 --> 00:02:42,640 All of this means that I've seen a lot of different students, 45 00:02:42,640 --> 00:02:45,010 complete a lot of different programming projects. 46 00:02:45,010 --> 00:02:48,740 And what I'll be doing here is orienting you to the end of course projects, and 47 00:02:48,740 --> 00:02:51,450 giving you some hints and tips about what might be useful and 48 00:02:51,450 --> 00:02:53,320 exciting while working on them. 49 00:02:53,320 --> 00:02:56,920 I hope you enjoy them because I think they're really fun, and they'll give you 50 00:02:56,920 --> 00:02:59,580 a lot of tools for working with programming in your every day life. 51 00:03:00,800 --> 00:03:04,820 >> Hi, I'm Chris Brooks, I'm faculty here at the University of Michigan. 52 00:03:04,820 --> 00:03:07,671 In this specialization, I'll be teaching the last course. 53 00:03:07,671 --> 00:03:12,207 In that course, you're going to take image manipulation libraries, and 54 00:03:12,207 --> 00:03:16,680 large image sets, and use Python to change it into a useful information. 55 00:03:18,310 --> 00:03:21,320 My research focuses on educational technology, and 56 00:03:21,320 --> 00:03:26,020 I teach a lot of data science courses including some on this platform. 57 00:03:26,020 --> 00:03:29,550 And I'm very interested in how learners like you approach technology, 58 00:03:29,550 --> 00:03:33,140 interact with technology, and use it to enable your learning. 59 00:03:33,140 --> 00:03:35,210 I'm looking forward to seeing you in that last course. 60 00:03:36,290 --> 00:03:37,490 >> Hello, my name is Charles Severance. 61 00:03:37,490 --> 00:03:40,830 And you may have seen me before in the Python for Everybody specialization, 62 00:03:40,830 --> 00:03:44,510 which is some of you took that and then came to this class. 63 00:03:44,510 --> 00:03:48,802 I'm really enjoying what I'm doing in this class, and that I'm not actually teaching 64 00:03:48,802 --> 00:03:52,575 any of the core material, but I'm doing what we call the way the programmer. 65 00:03:52,575 --> 00:03:54,944 And that is sort of, I get to play a little bit and 66 00:03:54,944 --> 00:03:58,204 not actually teach you anything but show you something cool, and 67 00:03:58,204 --> 00:04:01,970 that gave me a lot of freedom to show things that I consider fun. 68 00:04:01,970 --> 00:04:05,940 My research area, as some of you may know, is educational technology. 69 00:04:05,940 --> 00:04:09,410 The platform that you're using is something I'm very curious about, 70 00:04:09,410 --> 00:04:11,970 how we can improve it, how we can make it better. 71 00:04:11,970 --> 00:04:15,110 And I have lots of hobbies, but 72 00:04:15,110 --> 00:04:19,900 my most recent hobby is racing, racing on road courses. 73 00:04:19,900 --> 00:04:23,550 So if you look, you might find a picture of me in a race car. 74 00:04:25,160 --> 00:04:26,960 >> Hi, I'm Lauren Murphy. 75 00:04:26,960 --> 00:04:31,070 I took the on-campus version of this course a couple years ago and 76 00:04:31,070 --> 00:04:35,790 ended up working as an instructional aid to help other students learn the material. 77 00:04:35,790 --> 00:04:38,880 I since returned to help out with this course, building up the quizzes and 78 00:04:38,880 --> 00:04:41,150 assessments and projects that you'll be doing. 79 00:04:41,150 --> 00:04:44,580 I'm very excited that you have the opportunity to learn the same material, 80 00:04:44,580 --> 00:04:47,170 and I hope that you have a good time. 81 00:04:47,170 --> 00:04:48,860 >> And in this specialization, for 82 00:04:48,860 --> 00:04:53,250 Python 3 programming, you learn how to become a competent Python programmer 83 00:04:53,250 --> 00:04:55,940 by learning the fundamentals of the language in detail. 84 00:04:55,940 --> 00:04:58,599 You'll learn how to navigate complex data structures and 85 00:04:58,599 --> 00:05:00,070 accumulate results from them. 86 00:05:00,070 --> 00:05:03,262 And you'll learn how to convert data into a format that can be used by 87 00:05:03,262 --> 00:05:04,540 other programs. 88 00:05:04,540 --> 00:05:06,376 At the end of the specialization, 89 00:05:06,376 --> 00:05:09,745 you'll be able to write Python programs of a few 100 lines. 90 00:05:09,745 --> 00:05:13,078 You'll be able to use an integrated Python modules into your code. 91 00:05:13,078 --> 00:05:17,250 You'll be able to use external tools like API's by reading their documentation 92 00:05:17,250 --> 00:05:18,510 as well. 93 00:05:18,510 --> 00:05:22,126 We start from the beginning, and we don't assume any prior knowledge, but 94 00:05:22,126 --> 00:05:25,630 we do go deep into the fundamentals of Python to be sure that you understand 95 00:05:25,630 --> 00:05:27,170 every aspect of code. 96 00:05:27,170 --> 00:05:29,640 >> So you want to say something about what's our 97 00:05:30,890 --> 00:05:33,510 Runestone interactive environment and- >> Yeah, so 98 00:05:33,510 --> 00:05:38,570 the Runestone interactive textbook allows you to interleave learning materials 99 00:05:38,570 --> 00:05:43,120 with ActiveCode assessments that will allow you to actually write code. 100 00:05:43,120 --> 00:05:46,260 And we find that writing code is really important because 101 00:05:46,260 --> 00:05:49,660 even though you can learn how a concept works in theory, so 102 00:05:49,660 --> 00:05:53,720 you might know how some particular feature of Python works. 103 00:05:53,720 --> 00:05:57,380 It's really important to actually write code to gain more of a working 104 00:05:57,380 --> 00:05:58,270 understanding. 105 00:05:58,270 --> 00:06:01,850 And to know how to actually apply those concepts and practice. 106 00:06:01,850 --> 00:06:05,430 So there's also the way of the programmer segments. 107 00:06:05,430 --> 00:06:10,400 So most of the course is about how to use Python and learning about Python features. 108 00:06:10,400 --> 00:06:15,000 The way of the programmer segment is more about how programmers can and should work. 109 00:06:15,000 --> 00:06:18,020 Programming is a little bit more of an art than a science. 110 00:06:18,020 --> 00:06:22,330 There's lots of correct ways to do things, but there are best practices. 111 00:06:22,330 --> 00:06:25,410 So there are things like how to write programs incrementally, 112 00:06:25,410 --> 00:06:28,050 in the way of the programmer segments. 113 00:06:28,050 --> 00:06:31,790 You'll also learn about how to write good automated test cases. 114 00:06:31,790 --> 00:06:34,730 So that's going to come in course four. 115 00:06:34,730 --> 00:06:38,400 Until then, we are going to write those test cases for you. 116 00:06:38,400 --> 00:06:42,040 >> Lauren has created a whole lot of assessments where, not only can you 117 00:06:42,040 --> 00:06:46,570 run the code in the browser, but it will tell you whether you got it right or not. 118 00:06:46,570 --> 00:06:51,218 And you get that immediate feedback, and you can try it as many times as you want. 119 00:06:51,218 --> 00:06:55,310 In fact, we've set up the assessment so that you have to get it right, 120 00:06:56,390 --> 00:07:00,450 you get everything right, 100%, in order to pass the assessment. 121 00:07:00,450 --> 00:07:05,530 And the reason for that is we really want you to build mastery so that you don't 122 00:07:05,530 --> 00:07:11,040 go on to the later stuff until you've got the early material really solid. 123 00:07:11,040 --> 00:07:14,810 >> You'll also notice that in all of the projects that you do, 124 00:07:14,810 --> 00:07:18,920 you'll find ways of translating the concepts that you learn in the courses and 125 00:07:18,920 --> 00:07:21,650 throughout the specialization into your real life. 126 00:07:21,650 --> 00:07:26,640 For example, different ways of building programs that might be fun in your job, or 127 00:07:26,640 --> 00:07:29,330 your school, or your work, or whatever it is that you do. 128 00:07:30,810 --> 00:07:33,062 >> So one of the things that I really like, 129 00:07:33,062 --> 00:07:37,105 as I've watched you all put this together, is Python for Everybody. 130 00:07:37,105 --> 00:07:41,145 And you've kind of already said this, in Python for Everybody, 131 00:07:41,145 --> 00:07:43,060 I really focus on the program. 132 00:07:43,060 --> 00:07:46,290 If you get the program, it's like you win, you get the gold star. 133 00:07:48,000 --> 00:07:49,420 And we didn't have the time or 134 00:07:49,420 --> 00:07:53,170 the luxury to really understand what was going on inside the program, or 135 00:07:53,170 --> 00:07:57,150 just like we got the program done and we going to move on to the next thing. 136 00:07:57,150 --> 00:08:00,710 But with some of the stuff we have in Runestone, you get to say, 137 00:08:00,710 --> 00:08:05,910 what's really going on inside of the program and how does this really work? 138 00:08:05,910 --> 00:08:10,510 And that's part of the mastery, so that if you can, as a programmer, kind of put 139 00:08:10,510 --> 00:08:13,670 yourself inside the program and understand how the program is actually functioning. 140 00:08:13,670 --> 00:08:16,900 It is difficult to write more sophisticated programs. 141 00:08:16,900 --> 00:08:22,240 And so, that's where, even though there's technically as a beginning course, 142 00:08:22,240 --> 00:08:25,520 I think it's really important for people to take more than one beginning course 143 00:08:25,520 --> 00:08:28,670 because you have to go over the same material, over and 144 00:08:28,670 --> 00:08:32,360 over with, in a sense, deeper understanding each time you go through it. 145 00:08:33,700 --> 00:08:37,161 >> Yeah, we have this great codelens tool, I think you're referring to, 146 00:08:37,161 --> 00:08:40,510 it let's you visualize what's happening in the execution of the program 147 00:08:40,510 --> 00:08:42,180 one line at a time. 148 00:08:42,180 --> 00:08:43,478 And, you can go Forward and 149 00:08:43,478 --> 00:08:46,368 Back and see, what actually was the value of that variable? 150 00:08:46,368 --> 00:08:49,540 And when did my list change what its contents were? 151 00:08:49,540 --> 00:08:52,250 And so, it gives you a way of thinking about it. 152 00:08:52,250 --> 00:08:56,210 It's really great for debugging so that you don't have to just do trial and error. 153 00:08:56,210 --> 00:08:56,926 Let me change something in the code. 154 00:08:56,926 --> 00:08:59,847 You can really think through what does the program do. 155 00:08:59,847 --> 00:09:04,020 >> So another thing that students always ask me at the end of my course is, 156 00:09:04,020 --> 00:09:04,740 what next? 157 00:09:04,740 --> 00:09:09,120 And I think that it's kind of cool that you built into this specialization kind 158 00:09:09,120 --> 00:09:13,490 of, or step into what they're going to do after this, Chris. 159 00:09:13,490 --> 00:09:18,181 >> Yeah, so one of the things that we've added to this course at the very end of 160 00:09:18,181 --> 00:09:19,744 the project course, and 161 00:09:19,744 --> 00:09:24,732 that's really to focus people on how to take other APIs that might be out there or 162 00:09:24,732 --> 00:09:29,817 packages and use them and do something novel with them outside of just learning. 163 00:09:29,817 --> 00:09:33,873 And it gets to this repeated practice comment that you made. 164 00:09:33,873 --> 00:09:36,960 And for that, we're actually doing it within the Jupyter environment. 165 00:09:36,960 --> 00:09:42,490 So just like you need repeated practice with APIs and with Python fundamentals, 166 00:09:42,490 --> 00:09:48,650 there's so many different places that you can write a Python code and Runestone's, 167 00:09:48,650 --> 00:09:52,655 one of them and the tools you use in Python for everyone or one of those. 168 00:09:52,655 --> 00:09:55,940 Jupyter is one that's quite common and we teach that in the Data Science 169 00:09:55,940 --> 00:10:00,310 specialization that students can follow this with. 170 00:10:00,310 --> 00:10:04,150 And there's other environments too, and so we're trying to really showcase 171 00:10:04,150 --> 00:10:09,230 a diversity of learning environments and production environments for Python. 172 00:10:09,230 --> 00:10:10,920 >> Programming is not one environment, right? 173 00:10:10,920 --> 00:10:12,950 It's not like you have this one thing, you type the stuff in and 174 00:10:12,950 --> 00:10:13,770 that's all the programming. 175 00:10:13,770 --> 00:10:15,910 When you/'re out in the real world, 176 00:10:15,910 --> 00:10:19,590 each job often has different kinds of environments. 177 00:10:19,590 --> 00:10:23,040 >> Yeah, and practice is so important in the context of programming. 178 00:10:23,040 --> 00:10:27,730 I think Lauren has written some great examples of practice problems for 179 00:10:27,730 --> 00:10:30,160 you to work on throughout the course as well. 180 00:10:30,160 --> 00:10:36,121 >> And we have this great practice tool that you'll get to see where it represents 181 00:10:36,121 --> 00:10:41,557 to you for review some questions that you've already seen in the past. 182 00:10:41,557 --> 00:10:45,809 And it keeps presenting them to you more frequently if you're having trouble, 183 00:10:45,809 --> 00:10:48,990 less frequently if you're showing mastery of them. 184 00:10:48,990 --> 00:10:53,190 And it's a way to really reinforce what you've got, so look for 185 00:10:53,190 --> 00:10:54,038 that practice tool. 186 00:10:54,038 --> 00:10:57,000 It also had this fun fireworks that it'll show when you've 187 00:10:57,000 --> 00:10:59,510 done all of your practice problems for the day. 188 00:10:59,510 --> 00:11:03,310 >> So, as you can tell, we're all really excited to share this material with you. 189 00:11:03,310 --> 00:11:06,103 And we hope you have a lot of fun and wish you a lot of luck. 190 00:11:07,475 --> 00:11:11,265 >> Here at the University of Michigan, our school colors are maize and blue. 191 00:11:11,265 --> 00:11:15,085 You might think of them as yellow and blue, but we call it maize and blue. 192 00:11:15,085 --> 00:11:18,665 And if I travel anywhere and I have a Michigan logo thing on, 193 00:11:18,665 --> 00:11:22,215 someone will come up to me in the airport and say, go blue. 194 00:11:22,215 --> 00:11:23,775 So on three. 195 00:11:23,775 --> 00:11:25,555 One, two, three. 196 00:11:25,555 --> 00:11:27,187 >> Go blue.