Gamifying the study of algorithms
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 118 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/44852 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
| |
Keywords |
EuroPython 201919 / 118
2
7
8
15
20
30
33
36
39
40
45
49
51
55
57
58
63
64
66
68
69
71
74
77
78
80
82
96
98
105
107
108
110
113
115
00:00
AlgorithmPoint cloudComa BerenicesGoogolSoftware developerMultiplication signTouchscreenLecture/ConferenceComputer animation
00:26
Linear mapCoroutineLogischer EntwurfStructural loadWebsiteNumbering schemeAlgorithmLogicCoroutineWordService (economics)Point (geometry)Software developerField (computer science)Computer animation
02:16
QuicksortMultiplication signWave packetMereologyWebsitePlanningProgram flowchart
02:40
Context awarenessMathematical analysisGame theoryCombinational logicFocus (optics)TrailPlanningArithmetic progressionCartesian coordinate systemElement (mathematics)Computer animation
03:21
Source codeFitness functionQuicksortPoint (geometry)Game theoryType theoryElement (mathematics)BitVideo gameHacker (term)Wave packetComputer animation
04:21
Level (video gaming)AlgorithmData modelVisualization (computer graphics)CognitionLevel (video gaming)Natural numberIntegrated development environmentStress (mechanics)Information overloadOnline helpTask (computing)InformationVideo gameDependent and independent variablesPosition operatorStudent's t-testInternetworkingResultantAlgorithmComputer scienceGame theoryUniverse (mathematics)Data structureElement (mathematics)Dynamical systemFeedbackFocus (optics)Form (programming)Physical systemVisualization (computer graphics)Source codeOrder (biology)Graph (mathematics)Inheritance (object-oriented programming)TrailSemiconductor memoryNeuroinformatikCombinational logicGoodness of fitReduction of orderComputer animation
09:15
Source codeAlgorithmVisualization (computer graphics)Data modelCognitionFeedbackDisintegrationLevel (video gaming)Binary fileHacker (term)AlgorithmGraph (mathematics)Term (mathematics)MereologyHacker (term)Graph coloringLevel (video gaming)Moment (mathematics)Order (biology)RankingCASE <Informatik>Arithmetic meanMultiplication signPoint (geometry)Sound effectFeedbackCognitionRule of inferenceMobile appClient (computing)Statement (computer science)TowerProcess (computing)Visualization (computer graphics)TrailWebsitePerformance appraisalFormal languageProgram flowchart
12:58
Binary fileRankingSource codeHacker (term)Game theoryCoding theoryLevel (video gaming)Decision theoryHash functionNumerical taxonomyConstraint (mathematics)PressureCodeComputational complexity theoryBitAlgorithmTask (computing)HierarchyOrder (biology)Complex (psychology)Greatest elementGame theoryObservational studyMultiplication signArithmetic progressionStatement (computer science)Computer programmingConstraint (mathematics)Type theory2 (number)PressureUsabilityLevel (video gaming)Point (geometry)CognitionFeedbackBinary codeWebsiteTrailProcess (computing)CASE <Informatik>Loop (music)QuicksortCategory of beingNumerical taxonomyRule of inferenceDivision (mathematics)Computer animation
18:34
Kolmogorov complexityCodeGame theoryLevel (video gaming)Statement (computer science)Physical systemMathematical analysisLocal GroupSoftware testingCASE <Informatik>Multiplication signComplex (psychology)Game theoryBookmark (World Wide Web)Maxima and minimaNP-hardRow (database)Bit rateLevel (video gaming)TrailQuicksortSoftware testingArithmetic progressionAlgorithmStatement (computer science)NumberBinary codePoint (geometry)Different (Kate Ryan album)Forcing (mathematics)MereologyPhysical systemCodeWebsiteBoss CorporationField (computer science)Image resolutionStress (mechanics)Reduction of orderMathematical analysisResultantGraph (mathematics)Student's t-testFluidStrategy gameTerm (mathematics)Right angleXMLComputer animation
25:00
Source codeLocal GroupGame theoryAverageArithmetic meanPoint (geometry)Focus (optics)Insertion lossVideo gameComputer animation
25:55
Game theoryMusical ensemblePresentation of a groupIntegrated development environmentBitDivisorMultiplication signEuler anglesQuicksortUniverse (mathematics)Performance appraisalJSONComputer animationLecture/Conference
28:58
Kolmogorov complexityCodePhysical systemMathematicianStudent's t-testLevel (video gaming)Multiplication signElement (mathematics)BitXMLComputer animationLecture/Conference
Transcript: English(auto-generated)
00:03
Hi, everyone. My name is Julia. I'm a software developer and Python fangirl. That's how I introduce myself every time. And I'm going to talk to you about what's written on that screen. I'm gonna begin by giving you a short intro of this talk. So back in April,
00:27
I attended DjangoCon as a speaker where I talked about algorithms and why I think that it's important that we continue studying them even after we finish university or after
00:41
we get that we pass that interview. And these are some main points which I made. That it's really good as a mental exercise because it keeps your skills sharp. And the
01:01
more studying you put into this, the more knowledge you get out of it. That it breaks routine. That after a while we might get tired of writing pipelines or websites or whatever. And this is like doing that really nice puzzle on the beach. That it helps you
01:21
with the understanding of logic. That you understand how certain things are implemented and how to make them faster and better. And also, it's a social duty that I think that we have as developers. Because algorithms nowadays are the buzz word out there. And
01:43
they have a really bad reputation with the people that are not knowledgeable in this field. They think that it's biased and that, I don't know, algorithms rule the world or that it's going to cost you that health insurance. And I think it's our duty that
02:04
we know them better and we can better explain them to other people. I just think that this is like community service in a way. So I came up with this wobble scheme that I use in my training. It's not perfect. Last time in the April talk, I focused on the
02:24
resources part. I talked about what kind of websites, books and problems and all sorts of resources that I use in my training. And this time I want to focus on the gamification step, the one in the left corner. And I don't know. My plan is that if I ever give another
02:47
talk on the subject, the next one will be on the keep track of your progress and the analysis. So what is this gamification shenanigans anyway? So the gamification is
03:06
the application of game design elements and principles in non-game context. Its main focus is to combine work and play and to make work more interesting. Take a look at
03:21
this picture. This comes from a life hacker article which was very interesting about how to gamify your life and it was also focused a bit on fitness. So it was like calling your mom. Two points. Doing that exercise. Five points. And basically it was introducing
03:44
the game type elements to habits that you're trying to introduce. Like, I don't know, brushing your teeth every night or whatever. The idea is that this should make it a bit more fun to accomplish. Gamification is also highly used in training-like experiences. Like,
04:07
I don't know, when you're, let's say, you're in a volunteering company and you're trying to get each other better and you have all sorts of games and all that kind of stuff to ease you into knowing each other and all that. So why does it work? If you look at the neuroscience
04:28
behind gamification, it all comes down to this little fellow. Dopamine or the feel good hormone. This is rewarded whenever you do something that is that is rewardful in
04:43
a way. Such as eating or sleeping or playing a game. So gamification focuses on giving instantaneous feedback which might not otherwise be available. Because by earning rewards in
05:01
that whole gamification system, you begin to associate learning with a positive experience and positive emotions. And this will make you want to do them more and more and more. Think about the kids that should go to bed at a certain hour. And after the parents turn off
05:25
the light and everything, they just go to the computer and play video games till the morning. And think about the reasons why those children might do, might risk it all. Because if they get caught, they will be punished to play some video games. Dopamine is the primary
05:46
neurotransmitter involved in the brain's reward system. And it's also responsible for motivation, controlled movement, like I couldn't believe this, like just walking straight across the room, dopamine is involved in this. Memory and focus, which are all
06:05
elements that you need in order to learn. Also, serotonin is released whenever you remember past successes or whenever you achieve a challenging mission. And serotonin, together
06:22
with dopamine, help in balancing mood and appetite. If you ever wondered why some people manage to work all those long hours and forget to eat, this is the reason. Also, the thrill and excitement of playing a game is the result of endorphins being released. Endorphins are
06:45
the nature's painkiller. They reduce stress levels and insomnia and anxiety levels and can create a sense of euphoria. Combined with all the other neurotransmitters, this creates
07:00
the perfect environment for learning. Also, gamification helps with cognitive overload. If you ever feel like your brain is going to explode from too much information, this is going to make it seem that much easier. And also, it creates an emotional bond to
07:21
the task. And this is very important because it has been noticed that attention spans are affected by the emotional response that you have to a certain task. So we know how this works now. How was this implemented before? As I said, gamification is a buzzword. There
07:44
are tons of articles on the internet about how to implement gamification in your business. This talk mostly about how to make your employees work more efficiently, but also
08:01
how to make students learn better and all that is a subject of research. You can find articles from universities on how to implement gamification in actually teaching computer science and data structures and algorithms and everything. So it's not unheard of.
08:24
And also, games are fun, let's be honest. So this is a schema from one of the research that I've read when preparing for this talk. It's from the University of Jakarta and I added
08:45
a source there and this is basically saying that all those three elements combined bring to a better learning outcome. First, there is the cognitive support. This comes mostly
09:01
in the form of visualization. Originally, this has been textbooks or explanation, but nowadays, there are better and more dynamic forms of visualization such as graphs that have animation inside them and you can see, for example, an algorithm
09:24
being played step by step. Also, learning instructions are very important. By learning instructions, I mean instructional activities such as the problem statement, what do you need to do, the resources that are put like the visualization or
09:45
I don't know, examples, sorry. And also, the methods of evaluation when teaching something, it's really good to know how you're going to make sure that you're going you're on the right track. And then comes the gamification part, which helps with engagement and making
10:06
everything stick long term. Because the cognitive support tools fail to engage long term. It's very interesting in the moment. It's like, ooh, colors, interesting. But if you ask someone like two weeks from now, do you still remember what you read about?
10:24
That might not be the case. So, here are some gamification features that you can find implemented. In order for an activity to be gamified, you don't need to have all of them at the same time. As I've read in multiple articles, just because you have some gamification
10:47
features implemented, that doesn't mean that it's being implemented with success or that it's having a good effect on the users. But all of these like narrative, for example, it's a known fact
11:05
that it's much easier to remember stories than facts or points or achievements. Challenges are really fun. Feedback to know how you're doing, if you're doing well or not.
11:20
Personalization is the most important one, I think. But I'm going to talk about that later. Rules and so on. So, this is new, as I said. This has been implemented in various places. For example, has anyone used Duolingo from here? It's fun, isn't it? But apart from saying
11:41
that I'm a girl and I like white shirts, I'm not sure if I learned much from there. But everything is set to levels with the topic and points and nice looks. And it doesn't feel like studying language textbook style. Like writing stuff over and over and over again, getting bored at some point. And Khan Academy, for example, is a very, very good example of how
12:07
things are implemented. Or the Nike app, where you can run and surpass your friends and I don't know, do physical exercise while having fun at the same time.
12:21
Doing a Google search will bring you ideas on how to add gamification to your business, for example, and how to make clients more open. When I had my first job ever, the first thing that we had to do on the first day was to build a tower out of marshmallows and spaghetti. It seemed very, very weird at the time. But at the same time, now that I think about it,
12:45
it was fun and it helped us open up more. But since I'm talking about algorithms, I'm going to show you a couple of sites that I use. For example, HackerRank has badges.
13:01
At this point, they don't have a lot of badges. And most of them are like for something simple, like days of Python or days of code or whatever. And they have medals and some other stuff, which I haven't added here. But it's really, really nice and it helps. Also, on
13:22
lead code, you can view your progress quite a lot. They have tracks, for example, like the one with binary search and they have problems that target binary search, which is nice. And you can also see how many of your attempts have been correct versus how many wrong attempts you had. And also
13:43
how fast your solution was compared to all other solution across the website, which brings up the competitive side of people. There's this website, which I haven't tried much, but I've heard of coding game, where each problem actually has a story and you have nice graphics and this
14:04
is like the first level and you have to write something in the loop such that you attack all the ships that come to you. And you have levels. And it really, really feels like a game. And
14:20
in the beginning, I haven't advanced much with it. But it might make you think, how am I going to learn? How am I going to get better at programming or algorithms with these types of games? But these types of games just push you a bit further. Like make you feel like you have a bit of fun instead of, I don't know, dry repetitive tasks. So, can we do better?
14:47
Before we can think about this, we need to read the instruction manual first. I've mentioned some of the features of gamification and also something about learning is this chart,
15:07
the Bloom's taxonomy, and it talks about ordering cognitive skills on a hierarchy that helps the process of learning. So, in order to reach the high top and be able to create,
15:20
in this case, maybe your own algorithms or problem statements or maybe write your own contest, we need to start at the bottom. We've seen before that instruction design is very important. So, when starting this, we need to take into consideration that the first step is understanding the basics. Remember facts and understand basic knowledge, like what is a loop,
15:43
how to do a sort, et cetera. I'd put understanding complexities under this category, but if you're anything like me, computing complexities is sometimes harder than solving a problem. Then you need to apply your knowledge. You need to be able to apply
16:01
this knowledge in new situations, new problems. You need to be able to read a problem statement and know that you're going to have to solve it using binary search, for example. You need to be able to analyze and evaluate. Feedback is very important when applying knowledge. Are you doing it correctly? Are you on the right track?
16:24
And also, there was a TED Talk by Gabe Zicherman that talked about the legs of gamification. Constraints drive creativity. For example, if you have to solve a problem and you know you have to do it in a certain amount of time or the solution needs to run a certain amount of
16:46
seconds or that you cannot use division, for example, then this is going to make you more creative. For example, when using when competing in competitive algorithm contests,
17:02
I use Python all the time because I like Python. But we all know that C is faster, so I need to come up with creative solutions to make it past the time constraints. Otherwise, I'm in trouble. You need to have the ease of failure, which is you need to fail and know that the world is not going to end. Just like in a game, if your hero dies, you can just
17:25
try again or go back to the last saved point. You need to have perseverance. You need to know that doing it once or twice or once every blue moon is not going to cut it, but you're going to need to have fun doing it because we're not sisyphus pushing up the boulder.
17:46
And speed and pressure seem to help. I hate competition, so I hate speed and pressure. But some and most people thrive on this. Also, levels need to be designed carefully. You need to have just the right amount of hard or easy because if you do them too easy,
18:05
then you're going to get bored. Or if you do them too hard, you're going to give up eventually. So, let's make a game algorithm. Now that we have the rules, let's ask ourselves some questions and design the perfect game to study algorithms or anything else for that matter.
18:23
But first, time for a challenge because this is a talk about gamification. Here you have some code and two requests. Whoever is going to find me after this talk and give me the time complexity and find the edge case that I mentioned in the talk,
18:47
it's going to receive this box of chocolate. So, have fun. May the best win. So, back to our topic. Ask yourself, what is your favorite game and why?
19:03
Do you recognize any two of these logos? It's from World of Warcraft. This is my favorite game. So, I try to think about what are some things that I like about World of Warcraft. It's the story, the fact that you can go through the lore and do quests and
19:26
find out all sorts of back stories and characters and blah, blah. Then the achievements. I really, really like those things like get friendly with a certain race or stuff like that. The community
19:41
that you're able to play with other people. The challenges. And by challenges, I mean the dungeons. And the fact that you can level up and create a character that in level one can get killed by a rat to something overpowered. So, let's think about the story.
20:01
If the story is important, when solving algorithms, do we like problem statements with the story? Or do we like a story behind a collection of problems? For example, do we want to solve a track about binary search? Or do we want problems that have a story in the
20:25
statement such as, I don't know, Jane and Mary try to decide how many chocolates each is going to get, yada, yada, yada. Then with achievements, do we like badges? Do we need a progress
20:40
bar? Do we need to see how much we've solved, how many problems this week or how many days in a row or stuff like that? Whatever helps you best, whatever you like the most and is going to help you get more productive. Then the community. Do you like to compete with
21:02
friends or do you like to compete against friends? Do you want to talk to them about solutions and see whoever came with the best solution? Or do you just like to win against them in a contest and ha ha, I did the best rating. Do you like challenges? Should you have a 30 day challenge
21:24
and solve one problem each day? Or do you like solving very hard problems from time to time? Or do you like solving old stuff in new ways? And with the level up, should you level up
21:42
through the number of problems that you solved or should you do it through a rating system? For example, with the number of problems solved might be an easy way of leveling up, but after a point it says nothing about your progress because you could just be solving easy problems. But a rating system is not very good on its own either because
22:02
I'm going to give you an example. So last week I took part in a code forces contest and I dropped more than 100 points for the reason that I was at a jazz concert in the park and I participated from my phone which was not very friendly with the code and because of that
22:24
I made a lot of bad submissions and after a while I just gave up because it would interpret one of my characters in an ASCII code and then I just dropped in a rating. Right now my rating
22:40
is the one of a beginner, but does that say anything about me or does it say something about that particular contest? Also, analysis is a very powerful tool. You need to know where you're at. Right now I don't have many ideas on how to evaluate the progress. You could keep
23:01
a bullet journal and I don't know, keep track of how many problems you solved, how many of those were easy, hard or medium, how if you solved more on this website or that website if you solved more through contests or just on your own.
23:22
I don't know. Little things like this that matter to you, but I'm still thinking on this one, so hang on tight. And now the boss level. What is the point of all of this? The point is to keep up the motivation, to encourage fluid intelligence. Fluid intelligence
23:47
involves being able to think and reason abstractly and solve problems. For example, coming up with problem solving strategies on the spot without reading beforehand in a textbook,
24:04
it's very useful in our field. It's also to reduce stress levels, to reward yourself short term. They keep saying about millennials that they like instant gratification and it's true. The biggest reward of you studying algorithms should be that you'll become better and better at the end,
24:25
but sometimes a little push down the road is really nice and appreciated. Also, remember the research that I mentioned earlier. This is a graph that is showing the results of students taking the test for the first and second time after just reading about
24:45
algorithms in a book and after playing a game. In both cases, when they took the test the second time, they all took straight, tense or A, the maximum rate. But look at the difference between just reading about them or doing them in a fun way. I think that gamification
25:06
helps solve problems that we until now we might have thought that it's somewhat our duty to do it and if it's hard, we should just do it, even if it's hard. But that doesn't mean that it shouldn't be fun. My last point is don't be ashamed if you feel the need to gamify
25:30
something that you love. This doesn't mean that you love it any less. It just means that life can get messy and it's really easy to lose focus of what's important to you. It's one of the
25:42
really bad points of growing up and being an adult. So gamifying something and making it fun doesn't mean that you're not good at it or that this isn't important. And that's it. Game over. Any questions? Thank you very much for your enthusiastic
26:09
presentation. And now it's a good time to raise some questions. Hi, thank you for your talk. When you try to create a gamification environment
26:23
in a corporate team, how can you address the fear to lose from people? Very good question. I think that by making it a really safe environment to fail, like if you
26:48
fail, that doesn't mean anything. Let's joke about it. Let's try it again. Next time I'll show you, next time I'll be better than you. Haha. I think that by just implementing a carefree
27:02
attitude towards this and not treating it like a sort of evaluation towards a raise or a promotion, then this way is going to make people think that it's okay to fail, it's okay to try. It's okay not to feel in the mood to participate once in a while. And take all the
27:22
benefits of this sort of activities. Did I answer your question? Yes, I know that there is not an easy solution, because even if it's something that
27:40
is not tied to promotion, it's just the subject's feeling, respect to the others. Independently to... In my experience, the community is a really big factor in this. If you have friends to do it with, or if you, I don't know, have a really strong community
28:03
behind you, then they're going to motivate you a bit. You're going to feel left out if they compete without you, for example, or they're going to just encourage you, come on, let's try. So I think that the community is a really, really strong factor in this.
28:24
Further questions? Okay. Well, if anyone has the answer, I have the chocolates. So... Yes. Here.
28:43
I actually have a question. Do you maybe know some examples where this kind of gamification is applied in mainstream education, like brick and mortar universities? Unfortunately, no. What I studied, for example, I don't mean that it was like a jail or something,
29:04
but we didn't have this kind of reward system. We did have, like, frequent hackathons, which felt a bit like a contest, which were nice. But I've seen recently at lower levels
29:22
of education, like kindergarten or the first levels of school, they're trying to make things more and more fun in a way that we didn't have it when we were young. Okay. Thanks.
29:41
I just discovered that in France, there is for mathematician teacher, you can submit exercise to the students, and the elements are not the same for every student, so you cannot copy on your coworkers, and you can try as much as you want, and you got the best score out of everything. So if you are the best one, you try once and it's okay,
30:01
but if you are bad, you try 10 times, and then you achieve that, and it's a good way just to make simple exercise and to let the students play for a real exercise, not just for fun. Yeah, that sounds great. Thanks. We've got time for one more question. Okay. Thanks.