 Gwneud cyfnodd. Mae cyfnodd gyfnodd pythonistau. Mae cyfrifol yn fwyf yn ysgrifennu am fwyf yn ysgrifennu'r cyfrifol yw bethau am 300 daith o bobl ffantasolion o 360 ymwneud ymwyf o python a'r cyfnodd. Mae'r ddiwrnod am y cerddwyr cerddwyr wedi bod yn ei ffrifol i wedi eu ffasgol ymdweud o'r amser ac yn cofio'r amser o 306 ymwyf 11-14, ond y llyfr was quite significant in that this institution had no prior history of coding or computer science and it was a blank canvas. So I was determined to build a firm foundation and foster a thriving environment for the growth of these young people and I decided that the young people should begin this journey with the textual program language Python. So in this talk I'm going to share with you the remarkable insights I gained from working with this great cohort of 360 young people and how their teachings, not their teachings, not my teachings, transformed my perspective on coding. So to lay the groundwork we needed to construct the infrastructure required to support their learning journey in Python and we needed a suitable IDE. Now obviously one of the facets of this IDE was that this Python module should support Python, environment rather, should support the core modules of Python. But also I wanted it such that it would support more advanced modules such as Matplot Lib so they could draw graphs and things like web scraping modules also. And there was a second feature that's very important for an educator and that is that you want a system which you can easily deploy and conveniently roll out programming exercises to a large group of people, 360 in this case. And the idea is that you write the programming exercises once, you roll them out simultaneously to everyone and the students then work on the exercises. And also in this system the educator should be easily be able to view and modify the student's code. Now it's going to come as a surprise probably to you and to me that these systems are actually relatively uncommon commercially. In fact it is like finding a needle in a haystack. So after a great deal of painstaking research and googling I discovered a US based company called Coding Rooms which has since been taken over which appeared to provide this functionality. And then I along with some IT colleagues went on webinars, seminars, transatlantic conference schools on how to actually use and set up this software. We were all ready to go after a few weeks. Secondly we needed an effective way, an efficient way of developing and marking termally tests and recording the scores. And with such large numbers of people involved we needed to actually automate this or automate it as much as possible. And for that I discovered Google Classroom with its Google's forms, quizzes and spreadsheets. So we had to spend a considerable amount of time sourcing, setting up, conducting research with regards to creating the infrastructure for a proper learning environment. Now with this stage set we embarked on a meticulously crafted scheme of work that enabled, that blended both a top down and traditional bottom up approach. And the approach ensured that the students could master the fundamental concepts of programming whilst gradually expanding their knowledge and skills. So we began with starter programmes which demonstrated how Coding Rooms system would work, how to create simple working programmes in its editor, how to run these programmes, how to study the output of these programmes and how more importantly not to be disarmed with errors. And for this purpose we wrote programmes which involved addition, subtraction, multiplication of numbers. And we use memorable names such as apples and bananas for variables. And remember we're dealing with people as young as 11 and 12 and these programmes proved quite popular. Next we introduced the concept of modern div with examples of eliciting whether a number was odd or even or if a number was divisible by another number. Now these programmes also proved popular but we began to realise that these students were not used to the idea of remainder as they were always using the calculator which gave decimal points. We then went on to control structures with the selection if and iteration for and while. And as the confidence of these young people grew we delved deeper into coding by teaching the young people about functions and we introduced them to libraries such as random and mapplotlib. Now to my astonishment I discovered that I was learning just as much from my young charges as they were learning from me. Actually I was learning more and their fresh perspectives and their unique insights really opened my eyes to the elegance and power of this Python programming language. So one such enlightening moment came when we explored the for loop. Now as I introduced this concept I couldn't help feel but a mixture of excitement, apprehension, trepidation, how on earth were they going to understand this complex concept or rather complex from my point of view as I discovered later. So we just started with two lines of code that generated consecutive numbers. For Jay in range 1,5 print Jay, what is the output? One, two, three, four a young student answered in an animated fashion. I explained how it was working. The first value of Jay is one, you print one, the second value of Jay is two, you print two, the third value is three, you print three and the fourth value is four and you print four and you don't go up to the five. And then I asked the young children or the young people, do you understand? Now to my surprise all 24 young students in the class nodded in unison and quite happily. Then we changed the number five to ten. So we got four Jay in range 1,10 print Jay. And they gave, what did it give? I asked them one, two, three, four, five, six, seven, eight, nine. They replied happily. And then I changed it to 100. So we got four Jay in range 1,100 print Jay. And what do you get here? The numbers one to 99, they clamoured excitedly in unison. And these students were immediately captivated by the simplicity and power of these lines. And with a sense of wonderment, they noticed and they commented on how just two lines of code could possibly produce tens, thousands, hundreds, millions of lines of output. And one student hithered too unimpressed by all this coding, even whispered under her breath, very interesting. Now it was during this discussion that a student posed a thought provoking question, could we generate an infinite number of lines? Now this query caught me off guard and I had to pause and reflect. Although theoretically possible, I explained, we lacked a symbol to represent infinity. And this interaction revealed to me the true essence and potential of the for loop, a realisation that had previously eluded me. In fact, in this conference, I have come across the generator and I think you can actually manufacture infinite number of lines. So another transformative experience came the explanation of the random module. We began by examining the traditional example of randomly selecting a number from a six-sided dice. Import random, r equals random dot random, one comma six. This generates a random number between one and six. The faces were quite animated. I like random numbers, said more than one young person. We then discussed probability. What is the probability that the number three will be chosen? What is the probability that the number four will be chosen? One out of six, a group of 11 and 12-year-olds clamoured. Now to my surprise, even the youngest students age just 11 displayed a remarkable degree of comfort with the abstract concept of probability. However, it was one student's question that opened a new door of exploration for all of us. They asked, can we generate decimal numbers? Now up to that point, we'd only been dealing with integers, as that was the focus of the curriculum in terms of randomness. Intrigued, I delved into research and discovered that the command x equals random dot random would generate a random number between zero and one. Excited by this newfound knowledge, we delved further generating decimal numbers between one and a hundred. Now interestingly enough, the young students were very excited by all of this, and this experience made me realise the importance of presenting a complete picture of what is possible beyond the confines of the curriculum, and the students showed me that true learning goes beyond prescribed boundaries. Another student's fascination with randomness took our discussions to another level. They questioned the very nature of randomness and asked, are computer generated random numbers truly more random than those generated by machines such as randomly choosing lottery balls for the weekly lottery draws? This then led the student to create a poster on the concept of randomness and discover an intriguing website on the subject of randomness from MIT. And it was that moment that I realised that how much my own understanding had expanded through curiosity and the inquiries of my young learners. As time progressed, the students' hunger for knowledge grew, and they began to seek additional challenges. So responding to their enthusiasm, I introduced them to Matplot Lib, a powerful library for data visualisations. The students were provided with worked coding examples of drawing straight lines, creating bar charts and pie charts. Now, what really amazed me was how quickly they understood the code, as their ability to read code was like someone would sight read a piano piece, and what's a textbook might devote half a page to explaining the interpretation of code. These young minds effortly grasped its meaning, and their natural aptitude for exploring beyond the prescribed materials was evident when they went on to discover an online editor that supported Matplot Lib. They even extended their exploration to creating line graphs depicting book preferences in a library of their favourite subjects. There is the graph and code. And pie charts on farm animals, and the breadth of their imagination and the speed at which they assimilated these new concepts amazed me. Now, to put it into perspective, a student mentioned that their uncle working in the meteorological office, the branch of science forecast in the weather, was only just learning about these things. Of course, to be fair, it is a relatively new area of coding. And it's a testament to the power of exposure and the drive of these young people, how they explore uncharted territories of knowledge. Then I asked them, what is your favourite aspect of coding? Let's explore some of their answers. There were answers related to the endless possibilities of coding. You can make the computer do or show you anything you want, which is fun, said Maria, aged 11. My favourite thing about coding is learning about all the possibilities that comes with coding, said Lola, aged 13, echoing the sentiment. Some students enjoyed fixing errors, getting the results and fixing your errors, Yasmin, aged 12. Now, surprisingly, a number of students found joy in dealing with errors, a concept that I had always thought a necessary pain. And so these comments, they shared a unique perspective. Some young students enjoyed the certainty of outcome. I enjoy the complexity of the codes and the reassurance that there will always be a correct output to the coding programme, said Amelia, aged 13. And we continue. And some young students enjoyed the mathematical aspects, solving equations, said Eleanor, aged 13. Now the mathematical aspects of coding, often feared by some, became a source of fascination for many. My favourite thing about coding is learning how to add on to simple equations to make them more complex and advanced, Cessily, aged 13. Now some enjoyed the learning aspect, being able to try out an experiment with new things that I wouldn't be able to do at home or in my free time, said Lara, aged 14. And others were amazed by the huge power of these coding languages. It is very complicated but interesting. Who knew a few words and numbers could make today's technology, said Hannah, aged 13. And indeed, if you think about it, these programming languages are quite small in terms of their vocabulary with respect to human languages, and it's amazing how much small vocabulary can do. So, general learnings. Throughout this journey, I have learned that often all it takes is an introduction to ignite the spark of curiosity within individuals. And once their minds are open to the possibilities, they are eager to forge their own paths of exploration and discovery. And the benefits of introducing coding at such a young age are manifold. Only do young learners have the freedom to explore and experiment, and remember they don't have an upcoming external examination imminently, so this gives them a lot of freedom to experiment. But they also develop a deep appreciation for the beauty and the versatility of coding. And their experience has reinforced the notion that a few lines of code can create an abundance of possibilities and that satisfaction arises when things fall into place. Now you may be wondering, do we have any concrete data to support the effectiveness of this approach? I present you at table illustrating the percentage of students interested in pursuing computer science as a GCSE subject. This is the external examinations we take in the UK at age 16, and this has a lot of coding within it. And surprisingly, the numbers speak for themselves, highlighting the profound impact this experience had on their aspirations. So, out of the 198 students that have currently responded, 125 said yes, or maybe, so currently registering a 63% interest. And as I conclude this talk, I am reminded of a profound quote by Plato, sixth century famous philosopher, do not train children in learning by force and harshness, but direct them to it by what amuses their minds, so that you may be better able to discover with accuracy the peculiar bent of the genius of each. Thank you very much for your time and attention. Thank you very much, Lillian. This was super insightful. So, if you have any question, kindly move to the microphone and Lillian will answer. First of all, thank you for the talk as well as for teaching the next generation. I was very intrigued by what you said, I think it was about the dye, about always given the full picture, something I seem to struggle on the opposite end by being over comprehensive in my answers when educating people. So, I always find it a bit difficult and would like to profit from your experiences when asked a question, usually especially young people or people just starting their journey. They have a very specific question in mind and ask a very specific topic and I notice I have a tendency to give a very comprehensive answer that may answer their question, but also questions they actually haven't answered because I feel that I would be sort of amiss if I would be too simplistic. So, I find it a bit difficult as what I'm saying to narrow down the level of detail to what the person asking needs. So, when you said always give the full picture and don't stick to the original plan or to what the constraints originally were, that seems to go in the other direction. So, how do you strike the balances? I think my question. Oh, you're saying how do you tackle their questions and what level of detail you give and how broad you give. I mean, I think if you know you should tackle their question and give them the level of detail, answer their question directly and give them that depth of the answer and then I think it's worth actually broadening your answer as well and giving them a broad picture as well so that they have an idea of how the specific thing that they've asked fits in a wider context. Thank you. Thank you for your talk. So, I have a question. What tools are you using when you are teaching the kids? So, for example, you ask them to install the Python interpreter and are you using some IDE for writing code with them? So, what applications are kids are using? Okay, so last year I discovered this IDE called Coden Rooms, which was specially developed for the purpose of teaching actually and it was being used in American universities and some American schools. Now, this piece of this, unfortunately, this software or this rather company has been taken over. So, this Coden Rooms kind of we installed it on, you know, centrally to be honest. We installed it centrally and each desktop kind of got a copy and on this coding room it had lots of editors or you know, you can do lots of programming languages on it including Python and you could, I mean, it's a beautiful piece of software really. So, you know, we set it up so you had 15 classes. So, you know, I set up 15 classes with the students' names on it kind of thing and all I needed to do is to write this, you know, write the programming exercises once, publish in a notebook, publish the notebook and the students would go on to the system and they could see it. It's a beautiful piece of software. I don't know if it's going to be continued or not but ideally like it to be because I don't think there is anything else like it on the market. Only available for the next year, I think. Thank you for your talk. How would you recommend taking children to this journey of learning coding in the non-speaking English area of the world? I mean, my sister can't really understand English. So, if I want to teach her Python, for example, that's a no-go because the idea of for loop or in or even the word apple will mean anything to you. So, what would you recommend about it? I mean, sure. I mean, it's a language, you know, so in the same way that you learn somebody say, I don't know, who's say a native English speaker is learning Spanish and to sort of adopt the same approach as if you're learning a new human language, really. But I feel that there are like two steps. She needs to understand English and coding and maybe it's like taking over the purpose of her learning coding because we are forcing her to learn English on the way. I don't know. Yeah. You're saying you're forcing her to learn English on the way. I don't know if there's a way actually around it, really. Okay. Okay. Thank you. Thanks for your talk. My question comes from a naive standpoint because I haven't done any Python education yet, but increasingly I feel the desire to try and give some kids the opportunities I didn't get at that age of 11 to 14. But my question is, you know, as a professional programmer, I think I would really struggle to know how to pitch it, where to pitch it and in your experience, were you more inclined to overpitch it, i.e. going to too much detail too quickly or did you find you had to speed up because the kids took you by surprise and they understood more quickly than you expected, particularly at 11 to 14? I mean, I didn't, how can I put this? I haven't made any concessions for them just because they're 11 to 14. Does that make sense? Yeah. In the sense that by way of pitching, you know, we started off with adding numbers. Apples equals 10. Bananas equals 12. Total equals apples plus bananas. And I think by ways of pitching, because they're so young, they have the advantage of being doing lots and lots of examples. So it's not so much pitching. It's what we do, but they're doing lots and lots of those examples. So in the same way that you would, they would learn maths, for example, where they have lots of worked examples, I'm giving them lots of worked examples of what we do. Does that make any sense? It's more the time allocated to something rather than the actual material itself. Yeah, maybe pacing is a better word. Did you need to go faster or slower than you first expected? You hit it just right. Faster or slower? Probably faster. They grasp things very, very quickly. Incredibly quickly. It's very surprising. So, you know, through the year we started in September, I didn't know how far we'd actually get with the coding. We've got far further than I actually anticipated. That's great. Yeah, thanks. Thanks very much. I have a question about even younger children trying to teach them things like Python. And when I think about teaching programmes to very young children, I often think about how you might do it in a visual way, like with visual elements rather than textual code. And I was curious with the setup you had and maybe then other functions or something. What's younger age would you have been comfortable with teaching as well? OK. I mean, this is 11 to 14. I did have a 10-year-old student online as well, and he is the best. And I was experimenting with him to see how far I could go, and can I teach him exactly what I'm teaching these people? No problem whatsoever, actually. And I think you can go. I have tried with a couple of eight-year-olds as well. I mean, I only did one lesson with them, and they were adding and subtracting. No problem whatsoever. I think children, they're used to processing text because they read a lot, and they're used to processing text with maths and things. So I don't think, you know, so this is just an extension of what they already do. And I think you can actually introduce it at age eight. I'd like to. Thank you. So another question about platforms. I would like to ask, did you ever consider using something called NBGrader as an extension to Jupyter Notebooks, which you can use in classrooms for teaching and grading? Sorry, what is it called? NBGrader. Oh, NBGrader. I have heard of it. I think I might have considered it at one stage, but I wanted something which you could actually buy in and install just like that. Does that make sense? And which is commercially supported. Yeah. Okay, if there are no more questions, we'll end here. Thank you, Lillian. And thank you all for joining.