Hi, I'm Steve Oney, I'm the Assistant Professor here in the School of Information at the University of Michigan. So, I did some of the introductory programming classes in the School of Information, and I'm really excited to have you join us because I really think programming is going to increasingly be a fundamentally important literacy, and a way of dealing with the increasing amounts of data that we get and deal with in our everyday lives. In my private life, I play soccer. Like Professor Resnick, I'm an avid biker as well, and you'll be seeing me in courses one, two, and four. Most of my research deals with making programming tools more usable. In other words, making programming tools that are designed around the ways that people think, in the ways that we actually program as well. Hi. I'm Paul Resnick, I'm a Professor and Associate Dean for research at the University of Michigan School of Information. As Associate Dean, I don't get to teach that much, but I really enjoy teaching the material that I'll be teaching you in this specialization. I'm glad to have a chance to share it with you. You'll see me in courses one and two, almost all of course three and a little bit in course four. I'm a fan of nerdy pun humor, also known as dad jokes, and so I'll be sharing a few of those with you at the ends of some of the lessons. In my research, I'm probably best known for, what's now known as Recommender Systems. I first published this back in the early 90s. Things like, at Amazon where it says people who bought this book also bought these other books. More recently, I've been working on online communities, and then on educational technologies. In my personal life, I like to play tennis and ride a bike. I've ridden very slowly. I have a couple of the iconic climbs of the Tour de France, four years ago at Mont Ventoux, and a couple of years ago at the Col du Tourmalet in the Pyrenees. I don't travel nearly as much as Dr. Chuck, but I do look forward to trying to adapt his practice of holding live office hours in places when I do get to travel. So, maybe I'll get a chance to see you. See you in the lessons. Hi. My name is Jackie Cohen, and I'm a lecturer at the University of Michigan School of Information. I teach a lot of programming courses including courses a lot like the ones you'll see here, and I also build and design and support a lot of course resources. All of this means that I've seen a lot of different students, complete a lot of different programming projects, and what I'll be doing here is orienting you to the end of course projects, and giving you some hints and tips about what might be useful and exciting while working on them. I hope you enjoy them because I think they're really fun, and they'll give you a lot of tools for working with programming in your everyday life. Hi. I'm Chris Brooks, I'm faculty here at the University of Michigan. In this specialization, I'll be teaching the last course. In that course, you're going to take image manipulation libraries, and large image sets, and use Python to change it into useful information. My research focuses on educational technology, and I teach a lot of data science courses including some on this platform. I'm very interested in how learners like, you approach technology, interact with technology, and use it to enable your learning. I'm looking forward to seeing you in that last course. Hello. My name is Charles Severance, and you may have seen me before in the Python for Everybody specialization which is some of you took that, and then came to this class. I'm really enjoying what I'm doing in this class, and that I'm not actually, teaching any of the core material, but I'm doing what we call the way the programmer, and that is I get to play a little bit, and not actually teach you anything, but show you something cool, and that gave me a lot of freedom to show things that I consider fun. My research area, as some of you may know, is educational technology. The platform that you're using is something I'm very curious about, how we can improve it, how we can make it better. I have lots of hobbies, but my most recent hobby is racing, racing on road courses. So, if you look you might find a picture of me in a race car. Hi. I'm Lauren Murphy. I took the on-campus version of this course a couple of years ago and ended up working as instructional aide, and to help other students learn the material. I since return to help out with this course, building up the quizzes, and assessments and projects that you'll be doing. I'm very excited that you'll have the opportunity to learn the same material, and I hope that you have a good time. In this specialization for Python Three programming, you'll learn how to become a competent Python programmer, by learning the fundamentals of the language in detail. You'll learn how to navigate complex data structures and accumulate results from them, and you'll learn how to convert data into a format that can be used by other programs. At the end of the specialization, you'll be able to write Python programs of a few 100 lines, you'll be able to use and integrate Python modules into your code, you'll be able to use external tools like APIs by reading their documentation as well. We start from the beginning, and we don't assume any prior knowledge, but we do go deep into the fundamentals of Python to be sure that you understand every aspect of code. So I, you want to say something about what's a Runestone interactive environment? Yeah. So, the Runestone interactive textbook allows you t interleave learning materials with active code assessments that will allow you to actually write code. We find that writing code is really important because even though you can learn how a concept works in theory. So, you might know how some particular feature of Python works. It's really important to actually write code to gain more of a working understanding, and to know how to actually apply those concepts in practice. So, there's also the way of the programmer segments. So, most of the course is about how to use Python and learning about Python features. The way of the programmer segment is more about how programmers can and should work. Programming is a little bit more of an art than a science. There's lots of correct ways to do things, but there are best practices. So, there are things like, how to write programs incrementally. In the way of the programmer segments, you'll also learn about how to write good automated test cases. So, that's going to come in course four. Until then, we are going to write those tests cases for you. Lauren has created a whole lot of assessments where not only can you run the code in the browser, but it will tell you whether you got it right or not, and you get that immediate feedback, and you can try it as many times as you want. In fact, we've set up the assessments, so that you have to get everything right, 100 percent in order to pass the assessment. The reason for that is we really want you to build mastery so that you don't go on to the later stuff until you've got the early material really solid. You'll also notice that in all of the projects that you do, you'll find ways of translating the concepts that you learned in the courses, and throughout the specialization into your real life. For example, different ways of building programs that might be fun in your job or your school or your work or whatever it is that you do. So, one of the things that I really like, as I've watched you all put this together is in Python for Everybody, and you already said this, that in Python for Everybody, are really focus on the program. If you get the program, it's like you win, you get the gold star. We didn't have the time or the luxury to really understand what was going on inside the program, were just like, we've got the program done, and we got to move on to the next thing, but with some of the stuff you have in Runestone, you get to say, what's really going on inside of the program, and how does this really work? That's part of the mastery is, so that if you can't as a programmer, put yourself inside the program and understand how the program is actually functioning, it is difficult to write more sophisticated programs. So, that's where, even though this technically is a beginning course, I think it's really important for people to take more than one beginning course, because you have to go over the same material over and over in a sense of deeper understanding each time you go through it. Yeah, we have this great code lens tool, I think you're referring to, that let's you visualize what's happening in the execution of the program one line at a time. You can go forwards and back, and see what actually was the value of that variable, and when did my list change what its contents were? So, it gives you a way of thinking about it. It's really great for debugging so that you don't have to just do trial and error, let me change something in the code. You can really think through what is a program. So, another thing that the students always asked me at the end of my course is, "What next?" I think that it's cool that you built into this specialization kind of a step into what they're going to do after this, Chris. Yeah. So, one of the things that we've added to this course at the very end is a project course, and that's really to focus people on how to take other APIs that might be out there or packages, and use them, and do something novel with them outside of just learning, and it gets to this repeated practice comment that you made. For that, we're actually doing it within the Jupyter environment. So, just like you need repeated practice with APIs and with Python fundamentals, there's so many different places that you can write Python code, and Runestone is one of them and the tools you use in Python for Everyone or one of those. Jupyter is one that's quite common and we teach that in the data science specialization that students could follow this with, and there's other environments too. So, we're trying to really show case a diversity of learning environments, and production environments for Python. Programming is not one environment. It's not like you have this one thing and type this stuff in, and that's all the programming. When you're out in the real world, each job often has a different kinds of environments. Practice is so important in the context of programming. I think Lauren has written some great examples of practice problems for you to work on throughout the course as well. We have this great practice tool that you'll get to see where it represents to you for review, some questions that you've already seen in the past. It keeps presenting them to you more frequently if you're having trouble, less frequently if you're showing mastery of them, and it's a way to really reinforce what you've got. So, look for that practice tool. It also has this fun fireworks, it'll show when you've done all of your practice problem for the day. So, as you can tell, we're all really excited to share this material with you, and we hope you have a lot of fun, and wish you a lot of luck. Here at the University of Michigan, our school colors are maize and blue. You might think of them as yellow and blue, but we call it maize and blue, and if I travel anywhere, and I have a Michigan logo thing on, someone will come up to me in the airport and say, "Go blue." So, on three, one, two, three, "Go blue."