Learn Python The Fun Way
Bakradze, Liana
Liana Bakradze - Learn Python The Fun Way Programming is one of the most important 21st-century skills and tons of different online and offline resources can help you to master it. On the other hand, playing games is really effective way for us to learn and it's also the most fun. But is it possible to learn real programming language like Python by playing a game? In this talk I'll show you some projects that allow you to achieve that. I also want to inspire you to help such projects and to suggest ideas how to do that. - Programming is one of the most important 21st-century skills. It doesn't only provide promising career opportunities but teaches how to reason logically, systematically and creatively. Code readability, rich standard library, straightforward syntax and other features make Python a great language for teaching beginners how to program. Python community is very supportive and friendly to newcomers and does awesome work to make Python available to everyone. Tons of different online and offline resources can help you to master Python programming. Problem solving is the classical way of learning how to code. But it can be boring for some people, especially for kids. On the other hand, playing games is really effective way for us to learn and it's also the most fun. You can find different games designed to teach basics of programming, but most of them use special visual environments and don't teach real text based languages. But is it possible to learn programming language like Python by playing a game? In this talk I'll show you a few projects for different age and levels that allow you to achieve that. I'll pay attention on methods that are used to teach programming. I also want to inspire you to help such projects and to suggest ideas how to do that.
 Okay, let's continue. I'm pleased to introduce the engineer, Liana Bagratze, who talks about Learn Python the fun way. Hello, everyone. Thank you all for coming to my talk this evening. Today I'm going to talk about one interesting type of tools that can be used in education. And I guess some of you definitely came here today to find out how to learn Python the fun way. Okay, let me get started then. First of all, a little bit about myself. My name is Liana Bagratze. I am a software developer from a beautiful Russian city called St. Petersburg. I work for JetBrains. And as part of my work, I am involved in development of PyCharm ADU, which is educational edition of PyCharm IDE, specially designed for Python learners and educators. Because of my work in PyCharm ADU project, I am in constant search for interesting tools and ideas for learning and teaching programming languages. And I'd like to say that Python community does awesome job trying to make Python available for anyone and providing resources for those who want to learn it. Please raise your hands. Those who somehow involved in Python in education. So that's you who do this awesome job. But no offense, but going through these resources could be a rather boring process for some people, especially for kids. But what if we could forget that we actually trying to learn something new and just have fun instead? What if we could continue improving our skills while doing something fun? And we could do this. Playing games has been proven to be one of the most effective ways for us to learn. First of all, it decreases the fear of failure. I'm sure that all of you have met people who thought that they were too stupid for programming. But I have never actually met anyone who thought that they were too stupid for Counter-Strike or Pokemon Go. And also, if you fail a test, it might have serious consequences and it might be rather disappointing. But if you fail a level in a game, there is nothing scary about it. You can just start again. In a game, we often get an instant reward. Once you have completed a level, you get an achievement. And it's nice to have a lot of achievements, isn't it? When we play a game, we usually try to win. And competition is the moving force of progress. And at last, games often provide good visualization, which makes it easier for us to master hard concepts. At this point, playing games seems to be a very good way for us to learn something new. And of course, I'm not the first person who had an idea to apply to programming. And today, I'm going to show you three projects that are my personal favorites, just to give you an idea of how it works. And I'm also going to tell you how you can help these projects other than donating. The first project is called Code Combat. In this game, you help a hero to achieve some goals on each level. It is insanely cool for children and people with no little programming experience. They say on their website that if you want to learn programming, you need to write a lot of code. And that's definitely true. But their job is to make sure that you're doing this with a smile on your face. I like these words, but let's take a look how they do that. So this is one of the levels in Code Combat. Our hero is stuck in a room with fireballs, and we need to survive. How can we accomplish it? Well, we have some equipment. It provides comments that our hero can do. For example, simple boots allow us to move to different directions. And later in the game, we will get some sort of advanced boots that will allow us to move to the specific coordinates. We also have a sword, but that's not very good sword, actually, because you need to hit an enemy twice to kill it. When you first see some level, they already provide you with a code sample. And your job is to modify it. Sometimes you need to add some lines, and sometimes you need to modify conditions or something else. You can also run it and see what goes wrong. Let me show how it works. At first we see that our hero dies because he moves only to the right. Then we fix our code and run it again. This time everything is okay. And yay, we get some XP and gems that can be spent to buy better equipment. I also like that they can in some way analyze your code. For example, in this case, I misspelled the name of one of my enemies, and they told me that I made a typo so as I don't get frustrated because I can't find such a stupid mistake in my code. If you are interested in this project, you're very likely, because there are plenty of ways for you to help it. This is by far the best contribution guide I've ever seen. It's a screen showed from code combats, and they represent their contributors as game characters. For example, they call coders arch majors. The project is 100% open source, but it's written in cofiscript, so it's not that easy for Python developers to contribute with code. But you can actually complete all the levels with cofiscript too, so you can learn cofiscript with the code combats help, and then pay back to it by contributing your code. But you can also help in other ways. First of all, you can help with translation. Code combats has translation to many languages, and this fact is pretty impressive because we don't have so many programming games that are translated into languages other than English. This fact, okay? So there is still a lot of work for you to do. A lot of levels hasn't been translated yet. But the best part is that you can actually create new levels yourself. It's not as easy as I'd like it to be. They still have special editor for creating levels, and you can express your creativity and add some bonuses to your karma. The next project is called Coding Game, and it is known for contests that they organize. In these contests, you can compete with other developers in some sort of turn-based games, where you need to write a successful strategy. If you manage to do this, the chance is high that you will get a good price, or even will be invited to a job interview. If anybody is interested, the next contest will be held in September, so you have enough time to prepare and sign up. But let's now take a look into their onboarding puzzle that explains to new players how the whole project works. Each puzzle has a goal. Sometimes they also give you nice synopsis with spaceships or something like that, and we also can see what our code actually does in this visualization window. The editor is prefueled with the code that retrieves all the needed information from the standard input, so you can concentrate on the code that really matters. Once you've done with the code, you can run provided test cases and see if your code works good or not. For these test cases, they show you all the input and the expected output, and you can also see what exactly goes on on visualization. I'd like now to show you how it works, but at first I want to explain what you need to do in this puzzle. You need to retrieve coordinates of your enemies from the standard input, and on each turn you decide what enemy you are going to shoot. But they actually already tell you that you need to select the closest enemy to survive. Okay, I've already rolled the correct solution, and let's run the provided test case. Yeah, it looks like we survived. Let's now spoil our code and let's select the closest enemy instead. Run it again. And we are dead, because the very first spaceship got to us and we died. This project wouldn't be so cool if there were no community around it. It's really nice that you can view other people's solutions and learn from them, but they also have so-called community puzzles that you can find in the community puzzles category, and you can write your own puzzles. Maybe you can come up with the idea how to introduce the algorithm for finding the array maximum for people with some interesting story. Okay, the last project is called Check.io. You can't have that impressive visualization, but it still has the huge content base and the friendly community. The tasks here are divided into islands, and each task actually is called a mission. Each mission has three different states. Once you've done with solution, you can publish your code and see what other people think about it. Maybe you will be even lucky enough to get your code reviewed. Let's now dive into the mission called Medium. Your job here is to write a function called Check.io that returns the median of a list of numbers. Once we realized what we need to do, we can try to solve this task. Why not? And again, we see yet another version of text editor. This time, the editor is rather limited. It has no code completion and instant error highlighting, which would be helpful. They also have little task description to window, but they can provide you nice hints. Check.io provides hints in the form of an actual conversation between two people where you ask questions and more experienced developer answers you. In some tasks, they also have nice visualization feature for you to test your code on the actual data. For example, in this case, you can change the data directly on this picture and they will show you with the orange line what median is and you can see if your code works. Let's now see how this visualization works. First, we will try to check the solution that always returns the first element of a list. Then we magically type the correct solution and try it on different input data. Okay, let's change the data. Yes, it seems like it works. As I've already said, Check.io's text editor is rather limited, but the good news is that there is a plugin for PyCharm that allows you to complete Check.io missions. In addition to the ability to write solutions in PyCharm and post them directly to Check.io without copy pasting it back to the browser, you can view other people's solutions directly in PyCharm, change them and play with them. At first, all the missions available at Check.io were created by the team, but now anyone can create their own missions. In order to do that, you need to clone a GitHub repository, write your mission there and suggest it back to the Check.io team. After review, your mission might become accepted and might become available for anyone. There is also initiative to translate Check.io languages other than English. You can also propose your translation in form of full request. In conclusion, I'd like to say that even though there are a lot of great resources for learning Python, there is one interesting direction in educational tools that can actually change the way we learn. I've seen three great projects that attempt to do that and I encourage you to try them and maybe to contribute to them. But I also want to know that it has been plenty of time since I proposed this talk and no great games have gained my attention since then. It means that there is a lot of space for creativity and for you to invent something cool in this area. For example, I definitely would enjoy playing a game that teaches me Django or Flask or NumPy. That's all. Thank you again for coming. And don't hesitate to find me at PyCharmboost. Thank you. Okay. Someone wants to ask questions. Questions. I don't know. Okay. One moment. Hello. Can you talk a bit more about Python as your idea because I was not aware about it and I don't know exactly what it does. I think you better come to me at PyCharmboost and I can make a demo for you. Okay, great. Thank you. Okay, another. The last. Thank you very much. That's very interesting. Can I ask where you're going next with this? Anything that you haven't told us about that you've got in your plans for the future? You mean according to PyCharmboost, do you end gamification or just... Anything that's in line with your aims that you talked about about making this more fun and more accessible, more easy to learn especially for... I think that I should do what I can do and I should implement these ideas into PyCharm IDEA. And I intend to do that. Okay, thank you, Diana, for two answers and for your interest in this conference. Thank you all again. And thank you very much for coming. Thank you.
 Okay, let's continue. I'm pleased to introduce the engineer, Liana Bagratze, who talks about  Learn Python the fun way.  Hello, everyone. Thank you all for coming to my talk this evening. Today I'm going to talk about one interesting type of tools that can be used in education.  And I guess some of you definitely came here today to find out how to learn Python the fun way.  Okay, let me get started then. First of all, a little bit about myself. My name is Liana Bagratze.  I am a software developer from a beautiful Russian city called St. Petersburg. I work for JetBrains.  And as part of my work, I am involved in development of PyCharm ADU, which is educational edition of PyCharm IDE,  specially designed for Python learners and educators.  Because of my work in PyCharm ADU project, I am in constant search for interesting tools and ideas for learning and teaching programming languages.  And I'd like to say that Python community does awesome job trying to make Python available for anyone and providing resources for those who want to learn it.  Please raise your hands. Those who somehow involved in Python in education.  So that's you who do this awesome job.  But no offense, but going through these resources could be a rather boring process for some people, especially for kids.  But what if we could forget that we actually trying to learn something new and just have fun instead?  What if we could continue improving our skills while doing something fun?  And we could do this. Playing games has been proven to be one of the most effective ways for us to learn.  First of all, it decreases the fear of failure.  I'm sure that all of you have met people who thought that they were too stupid for programming.  But I have never actually met anyone who thought that they were too stupid for Counter-Strike or Pokemon Go.  And also, if you fail a test, it might have serious consequences and it might be rather disappointing.  But if you fail a level in a game, there is nothing scary about it. You can just start again.  In a game, we often get an instant reward.  Once you have completed a level, you get an achievement.  And it's nice to have a lot of achievements, isn't it?  When we play a game, we usually try to win.  And competition is the moving force of progress.  And at last, games often provide good visualization, which makes it easier for us to master hard concepts.  At this point, playing games seems to be a very good way for us to learn something new.  And of course, I'm not the first person who had an idea to apply to programming.  And today, I'm going to show you three projects that are my personal favorites, just to give you an idea of how it works.  And I'm also going to tell you how you can help these projects other than donating.  The first project is called Code Combat.  In this game, you help a hero to achieve some goals on each level.  It is insanely cool for children and people with no little programming experience.  They say on their website that if you want to learn programming, you need to write a lot of code.  And that's definitely true.  But their job is to make sure that you're doing this with a smile on your face.  I like these words, but let's take a look how they do that.  So this is one of the levels in Code Combat.  Our hero is stuck in a room with fireballs, and we need to survive.  How can we accomplish it?  Well, we have some equipment.  It provides comments that our hero can do.  For example, simple boots allow us to move to different directions.  And later in the game, we will get some sort of advanced boots that will allow us to move to the specific coordinates.  We also have a sword, but that's not very good sword, actually, because you need to hit an enemy twice to kill it.  When you first see some level, they already provide you with a code sample.  And your job is to modify it.  Sometimes you need to add some lines, and sometimes you need to modify conditions or something else.  You can also run it and see what goes wrong.  Let me show how it works.  At first we see that our hero dies because he moves only to the right.  Then we fix our code and run it again.  This time everything is okay.  And yay, we get some XP and gems that can be spent to buy better equipment.  I also like that they can in some way analyze your code.  For example, in this case, I misspelled the name of one of my enemies,  and they told me that I made a typo so as I don't get frustrated because I can't find such a stupid mistake in my code.  If you are interested in this project, you're very likely, because there are plenty of ways for you to help it.  This is by far the best contribution guide I've ever seen.  It's a screen showed from code combats, and they represent their contributors as game characters.  For example, they call coders arch majors.  The project is 100% open source, but it's written in cofiscript,  so it's not that easy for Python developers to contribute with code.  But you can actually complete all the levels with cofiscript too,  so you can learn cofiscript with the code combats help,  and then pay back to it by contributing your code.  But you can also help in other ways.  First of all, you can help with translation.  Code combats has translation to many languages,  and this fact is pretty impressive because we don't have so many programming games that are translated into languages other than English.  This fact, okay?  So there is still a lot of work for you to do.  A lot of levels hasn't been translated yet.  But the best part is that you can actually create new levels yourself.  It's not as easy as I'd like it to be.  They still have special editor for creating levels,  and you can express your creativity and add some bonuses to your karma.  The next project is called Coding Game,  and it is known for contests that they organize.  In these contests, you can compete with other developers in some sort of turn-based games,  where you need to write a successful strategy.  If you manage to do this, the chance is high that you will get a good price,  or even will be invited to a job interview.  If anybody is interested, the next contest will be held in September,  so you have enough time to prepare and sign up.  But let's now take a look into their onboarding puzzle  that explains to new players how the whole project works.  Each puzzle has a goal.  Sometimes they also give you nice synopsis with spaceships or something like that,  and we also can see what our code actually does in this visualization window.  The editor is prefueled with the code that retrieves all the needed information  from the standard input, so you can concentrate on the code that really matters.  Once you've done with the code, you can run provided test cases  and see if your code works good or not.  For these test cases, they show you all the input and the expected output,  and you can also see what exactly goes on on visualization.  I'd like now to show you how it works,  but at first I want to explain what you need to do in this puzzle.  You need to retrieve coordinates of your enemies from the standard input,  and on each turn you decide what enemy you are going to shoot.  But they actually already tell you that you need to select the closest enemy to survive.  Okay, I've already rolled the correct solution,  and let's run the provided test case.  Yeah, it looks like we survived.  Let's now spoil our code and let's select the closest enemy instead.  Run it again.  And we are dead, because the very first spaceship got to us and we died.  This project wouldn't be so cool if there were no community around it.  It's really nice that you can view other people's solutions and learn from them,  but they also have so-called community puzzles  that you can find in the community puzzles category,  and you can write your own puzzles.  Maybe you can come up with the idea how to introduce the algorithm  for finding the array maximum for people with some interesting story.  Okay, the last project is called Check.io.  You can't have that impressive visualization,  but it still has the huge content base and the friendly community.  The tasks here are divided into islands,  and each task actually is called a mission.  Each mission has three different states.  Once you've done with solution, you can publish your code  and see what other people think about it.  Maybe you will be even lucky enough to get your code reviewed.  Let's now dive into the mission called Medium.  Your job here is to write a function called Check.io  that returns the median of a list of numbers.  Once we realized what we need to do, we can try to solve this task.  Why not?  And again, we see yet another version of text editor.  This time, the editor is rather limited.  It has no code completion and instant error highlighting,  which would be helpful.  They also have little task description to window,  but they can provide you nice hints.  Check.io provides hints in the form of an actual conversation  between two people where you ask questions  and more experienced developer answers you.  In some tasks, they also have nice visualization feature  for you to test your code on the actual data.  For example, in this case, you can change the data directly  on this picture and they will show you with the orange line  what median is and you can see if your code works.  Let's now see how this visualization works.  First, we will try to check the solution that always returns  the first element of a list.  Then we magically type the correct solution  and try it on different input data.  Okay, let's change the data.  Yes, it seems like it works.  As I've already said, Check.io's text editor  is rather limited, but the good news is that there is a plugin  for PyCharm that allows you to complete Check.io missions.  In addition to the ability to write solutions in PyCharm  and post them directly to Check.io  without copy pasting it back to the browser,  you can view other people's solutions directly in PyCharm,  change them and play with them.  At first, all the missions available at Check.io  were created by the team, but now anyone can create  their own missions.  In order to do that, you need to clone a GitHub repository,  write your mission there and suggest it back to the Check.io team.  After review, your mission might become accepted  and might become available for anyone.  There is also initiative to translate Check.io  languages other than English.  You can also propose your translation in form of full request.  In conclusion, I'd like to say that even though there are a lot  of great resources for learning Python,  there is one interesting direction in educational tools  that can actually change the way we learn.  I've seen three great projects that attempt to do that  and I encourage you to try them and maybe to contribute to them.  But I also want to know that it has been plenty of time  since I proposed this talk and no great games have gained  my attention since then.  It means that there is a lot of space for creativity  and for you to invent something cool in this area.  For example, I definitely would enjoy playing a game  that teaches me Django or Flask or NumPy.  That's all. Thank you again for coming.  And don't hesitate to find me at PyCharmboost.  Thank you.  Okay.  Someone wants to ask questions.  Questions.  I don't know.  Okay.  One moment.  Hello.  Can you talk a bit more about Python as your idea  because I was not aware about it  and I don't know exactly what it does.  I think you better come to me at PyCharmboost  and I can make a demo for you.  Okay, great. Thank you.  Okay, another.  The last.  Thank you very much.  That's very interesting.  Can I ask where you're going next with this?  Anything that you haven't told us about  that you've got in your plans for the future?  You mean according to PyCharmboost,  do you end gamification or just...  Anything that's in line with your aims  that you talked about about making this  more fun and more accessible,  more easy to learn especially for...  I think that I should do what I can do  and I should implement these ideas  into PyCharm IDEA.  And I intend to do that.  Okay, thank you, Diana, for two answers  and for your interest in this conference.  Thank you all again.  And thank you very much for coming.  Thank you.
Liana_Bakradze_-_Learn_Python_The_Fun_Way_0_515.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_516_863.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_864_923.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_924_1247.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_1248_1523.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_1524_2483.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_2484_3563.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_3564_3635.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_3636_5939.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_5940_6479.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_6480_9935.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_9936_13427.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_13428_13823.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_13824_14135.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_14136_19679.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_19680_23903.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_23904_25127.png Liana_Bakradze_-_Learn_Python_The_Fun_Way_25128_27100.png
Okay, let's continue. I'm pleased to introduce the engineer, Liana Bagratze, who talks about Learn Python the fun way. Hello, everyone. Thank you all for coming to my talk this evening. Today I'm going to talk about one interesting type of tools that can be used in education. And I guess some of you definitely came here today to find out how to learn Python the fun way. Okay, let me get started then. First of all, a little bit about myself. My name is Liana Bagratze. I am a software developer from a beautiful Russian city called St. Petersburg. I work for JetBrains. And as part of my work, I am involved in development of PyCharm ADU, which is educational edition of PyCharm IDE, specially designed for Python learners and educators. Because of my work in PyCharm ADU project, I am in constant search for interesting tools and ideas for learning and teaching programming languages. And I'd like to say that Python community does awesome job trying to make Python available for anyone and providing resources for those who want to learn it. Please raise your hands. Those who somehow involved in Python in education. So that's you who do this awesome job. But no offense, but going through these resources could be a rather boring process for some people, especially for kids. But what if we could forget that we actually trying to learn something new and just have fun instead? What if we could continue improving our skills while doing something fun? And we could do this. Playing games has been proven to be one of the most effective ways for us to learn. First of all, it decreases the fear of failure. I'm sure that all of you have met people who thought that they were too stupid for programming. But I have never actually met anyone who thought that they were too stupid for Counter-Strike or Pokemon Go. And also, if you fail a test, it might have serious consequences and it might be rather disappointing. But if you fail a level in a game, there is nothing scary about it. You can just start again. In a game, we often get an instant reward. Once you have completed a level, you get an achievement. And it's nice to have a lot of achievements, isn't it? When we play a game, we usually try to win. And competition is the moving force of progress. And at last, games often provide good visualization, which makes it easier for us to master hard concepts. At this point, playing games seems to be a very good way for us to learn something new. And of course, I'm not the first person who had an idea to apply to programming. And today, I'm going to show you three projects that are my personal favorites, just to give you an idea of how it works. And I'm also going to tell you how you can help these projects other than donating. The first project is called Code Combat. In this game, you help a hero to achieve some goals on each level. It is insanely cool for children and people with no little programming experience. They say on their website that if you want to learn programming, you need to write a lot of code. And that's definitely true. But their job is to make sure that you're doing this with a smile on your face. I like these words, but let's take a look how they do that. So this is one of the levels in Code Combat. Our hero is stuck in a room with fireballs, and we need to survive. How can we accomplish it? Well, we have some equipment. It provides comments that our hero can do. For example, simple boots allow us to move to different directions. And later in the game, we will get some sort of advanced boots that will allow us to move to the specific coordinates. We also have a sword, but that's not very good sword, actually, because you need to hit an enemy twice to kill it. When you first see some level, they already provide you with a code sample. And your job is to modify it. Sometimes you need to add some lines, and sometimes you need to modify conditions or something else. You can also run it and see what goes wrong. Let me show how it works. At first we see that our hero dies because he moves only to the right. Then we fix our code and run it again. This time everything is okay. And yay, we get some XP and gems that can be spent to buy better equipment. I also like that they can in some way analyze your code. For example, in this case, I misspelled the name of one of my enemies, and they told me that I made a typo so as I don't get frustrated because I can't find such a stupid mistake in my code. If you are interested in this project, you're very likely, because there are plenty of ways for you to help it. This is by far the best contribution guide I've ever seen. It's a screen showed from code combats, and they represent their contributors as game characters. For example, they call coders arch majors. The project is 100% open source, but it's written in cofiscript, so it's not that easy for Python developers to contribute with code. But you can actually complete all the levels with cofiscript too, so you can learn cofiscript with the code combats help, and then pay back to it by contributing your code. But you can also help in other ways. First of all, you can help with translation. Code combats has translation to many languages, and this fact is pretty impressive because we don't have so many programming games that are translated into languages other than English. This fact, okay? So there is still a lot of work for you to do. A lot of levels hasn't been translated yet. But the best part is that you can actually create new levels yourself. It's not as easy as I'd like it to be. They still have special editor for creating levels, and you can express your creativity and add some bonuses to your karma. The next project is called Coding Game, and it is known for contests that they organize. In these contests, you can compete with other developers in some sort of turn-based games, where you need to write a successful strategy. If you manage to do this, the chance is high that you will get a good price, or even will be invited to a job interview. If anybody is interested, the next contest will be held in September, so you have enough time to prepare and sign up. But let's now take a look into their onboarding puzzle that explains to new players how the whole project works. Each puzzle has a goal. Sometimes they also give you nice synopsis with spaceships or something like that, and we also can see what our code actually does in this visualization window. The editor is prefueled with the code that retrieves all the needed information from the standard input, so you can concentrate on the code that really matters. Once you've done with the code, you can run provided test cases and see if your code works good or not. For these test cases, they show you all the input and the expected output, and you can also see what exactly goes on on visualization. I'd like now to show you how it works, but at first I want to explain what you need to do in this puzzle. You need to retrieve coordinates of your enemies from the standard input, and on each turn you decide what enemy you are going to shoot. But they actually already tell you that you need to select the closest enemy to survive. Okay, I've already rolled the correct solution, and let's run the provided test case. Yeah, it looks like we survived. Let's now spoil our code and let's select the closest enemy instead. Run it again. And we are dead, because the very first spaceship got to us and we died. This project wouldn't be so cool if there were no community around it. It's really nice that you can view other people's solutions and learn from them, but they also have so-called community puzzles that you can find in the community puzzles category, and you can write your own puzzles. Maybe you can come up with the idea how to introduce the algorithm for finding the array maximum for people with some interesting story. Okay, the last project is called Check.io. You can't have that impressive visualization, but it still has the huge content base and the friendly community. The tasks here are divided into islands, and each task actually is called a mission. Each mission has three different states. Once you've done with solution, you can publish your code and see what other people think about it. Maybe you will be even lucky enough to get your code reviewed. Let's now dive into the mission called Medium. Your job here is to write a function called Check.io that returns the median of a list of numbers. Once we realized what we need to do, we can try to solve this task. Why not? And again, we see yet another version of text editor. This time, the editor is rather limited. It has no code completion and instant error highlighting, which would be helpful. They also have little task description to window, but they can provide you nice hints. Check.io provides hints in the form of an actual conversation between two people where you ask questions and more experienced developer answers you. In some tasks, they also have nice visualization feature for you to test your code on the actual data. For example, in this case, you can change the data directly on this picture and they will show you with the orange line what median is and you can see if your code works. Let's now see how this visualization works. First, we will try to check the solution that always returns the first element of a list. Then we magically type the correct solution and try it on different input data. Okay, let's change the data. Yes, it seems like it works. As I've already said, Check.io's text editor is rather limited, but the good news is that there is a plugin for PyCharm that allows you to complete Check.io missions. In addition to the ability to write solutions in PyCharm and post them directly to Check.io without copy pasting it back to the browser, you can view other people's solutions directly in PyCharm, change them and play with them. At first, all the missions available at Check.io were created by the team, but now anyone can create their own missions. In order to do that, you need to clone a GitHub repository, write your mission there and suggest it back to the Check.io team. After review, your mission might become accepted and might become available for anyone. There is also initiative to translate Check.io languages other than English. You can also propose your translation in form of full request. In conclusion, I'd like to say that even though there are a lot of great resources for learning Python, there is one interesting direction in educational tools that can actually change the way we learn. I've seen three great projects that attempt to do that and I encourage you to try them and maybe to contribute to them. But I also want to know that it has been plenty of time since I proposed this talk and no great games have gained my attention since then. It means that there is a lot of space for creativity and for you to invent something cool in this area. For example, I definitely would enjoy playing a game that teaches me Django or Flask or NumPy. That's all. Thank you again for coming. And don't hesitate to find me at PyCharmboost. Thank you. Okay. Someone wants to ask questions. Questions. I don't know. Okay. One moment. Hello. Can you talk a bit more about Python as your idea because I was not aware about it and I don't know exactly what it does. I think you better come to me at PyCharmboost and I can make a demo for you. Okay, great. Thank you. Okay, another. The last. Thank you very much. That's very interesting. Can I ask where you're going next with this? Anything that you haven't told us about that you've got in your plans for the future? You mean according to PyCharmboost, do you end gamification or just... Anything that's in line with your aims that you talked about about making this more fun and more accessible, more easy to learn especially for... I think that I should do what I can do and I should implement these ideas into PyCharm IDEA. And I intend to do that. Okay, thank you, Diana, for two answers and for your interest in this conference. Thank you all again. And thank you very much for coming. Thank you.
Learn Python the fun way. Hello, everyone. Thank tools that can be used in education. And I guess interesting tools and ideas for learning and teaching programming languages. And I'd like to say that Python community does awesome job trying to make Python available for anyone and providing these resources could be a rather boring process for some people, especially for kids. But what if most effective ways for us to learn. First of playing games seems to be a very good way for us three projects that are my personal favorites, is called Code Combat. In this game, you help a hero to achieve some goals on each level. It is website that if you want to learn programming, they do that. So this is one of the levels in the code combats help, and then pay back to it by contributing your code. But you can also help in of work for you to do. A lot of levels hasn't like now to show you how it works, but at first I so-called community puzzles that you can find in base and the friendly community. The tasks here Check.io languages other than English. You can of time since I proposed this talk and no great playing a game that teaches me Django or Flask or