 All right, good morning, Dublin. Good morning, rest of the world. My name is Shrivatsa Kanderthi, and I'm excited to be discussing Python's role in revolutionizing education through interdisciplinary computer science coursework. So to tell you a bit about myself, I'm a student researcher from the greater New York City area. My research extends to machine learning applications for physical modeling and ecology. Some of my recent work includes co-authorship of Lyon 5B, which is the world's largest open source image text data set, as well as clip reproduction. I'm also a member of the United States Technology Policy Committee, which is a nonpartisan advocacy group seeking to guide informed technology-related decision making at several levels of government. We also have equivalents in Europe and as well as a global policy council pushing for very similar goals. I'm passionate about community issues, particularly those related to computer science education. So I'm excited to be delivering this talk on what I believe is an overlooked sub-problem within computer science. So a quick agenda here. I'm going to start by giving a general introduction of computer science within education, the current state, as well as the Python aspect. After that, we're going to touch on this idea of interdisciplinary computer science education discussing why it's important and more importantly, discussing what's missing in interdisciplinary computer science coursework right now. After that, we're going to take a look at a Python-based approach that we took for interdisciplinary computer science education and how we're hoping that these steps are going to motivate future advancements in developing more co-curricular coursework with computer science. So the first thing that we're going to touch on is the present state of computer science education. And throughout the talk, we're going to focus on the secondary level, so secondary education. So computer science coursework in school systems has certainly increased significantly in recent years. According to the code.org advocacy coalition, the percentage of high schools in the United States offering computer science courses jumped from 35% in 2018 to 51% in 2021. And we can expect similar growth in similar developed nations. So this is a healthy change, but it's still relatively weak representation for such an in-demand skill. Additionally, the growth of computer science in this field is not always equitable. In this graph, which is from the code.org advocacy coalition, it's clear that in the US, groups that were traditionally isolated for computer science coursework continue to face limitations in their access to computer science. So around the world, opportunities do vary greatly, but there is a steep divide between accessibility in high-income nations and lower-income nations. The graph on the right demonstrates this very clearly, where a significant percentage of the population has at least access to some form of computer science education, or will have access in the near future. And at the other extreme, in the low-income area, in low-income nations, there's no in-school computer science education. So taking a look at the figure on the left, we can get a deeper look at where these areas are. And more of the developed nations, once again, are showing that trend where they have pilot programs or they have mandated programs for computer science education. And we also see a province or state-by-state breakdown in the United States and Canada. But one important point that we need to address is that the graph shows, let's see if I can hear. So some of these areas have this dashed line. So this represents cross-curricular computer science education. This is some areas in Europe, some provinces in Canada, but really not much else of the world. So cross-curricular computer science is the incorporation of computer science into other fields. This is the point of concern that we seek to expand upon and address in much greater detail today, primarily the fact that there is a severe lack in cross-curricular computer science education. But before we touch on that, let's discuss some additional considerations in computer science education. First, various communities, governments, advocacy groups, language communities such as the Python community have reached a consensus that CS educational opportunities must increase. But it's a multifaceted problem. As we seek firmer policy and develop nations for mandating computer science coursework, we also look to increase opportunities in underserved nations and for underserved groups, minority groups. And at the same time, we also need to refine the nature of the educational coursework that we present. Is it high quality? And are we making sure that we're expanding computer science as we would with other core curricula? And to do this, I think that the most important step is discourse and discussion, such as the form that we have here. I think that by having a platform to talk about such issues, we can ultimately drive change. So now let's touch on some exact motivations for increasing computer science education. The three that we identify as relevant are, first of all, the boost in cognitive abilities. Various studies have pointed out increases in cognitive thinking forged by computer science exposure at early stages. Some particular benefits are in problem solving and planning abilities. And you can take a deeper look at the sources and references that we've linked below. Additionally, computer science coursework is also shown to be macroeconomically beneficial. Research demonstrates that nations with greater computer science educational opportunities are boasting higher productivity rates. For individuals, organizations are projecting that the job market for computer science professionals will grow at twice the rate of the rest of the labor market between 2014 and 2024. And this research comes from the US Bureau of Labor Statistics, but similar figures have been witnessed in much of the developed world. A computer science education has also been linked with higher likelihood of employment and better wages. So these factors have prompted the push for greater computer science coursework. But what are the factors that inhibit this expansion? First, the lack of qualified instructors in the field is a global challenge. Many districts are attempting to combat this deficit through increased resources for hiring professionals. So the goal for this is to attract computer science professionals to teaching jobs away from other by offering higher pay. Or school districts are also partnering with universities to sort of take an approach and understand how universities are able to expand computer science education and bring that to the secondary level. And finally, more practically, several school districts with the resources and many school districts don't have these resources. But those that do are utilizing something known as a professional development program where existing teachers are called for sessions to teach computer science skills. So that way, we don't need to hire new resources. Additionally, a current belief in the education realm is that computer science is only for a small sect of highly capable students. For example, 57% of parents think that one needs to be very smart to learn computer science. And these are the same parents who overwhelmingly indicate that they wish for their students to engage in computer science coursework. This mentality is discouraging students to say the least. Students should feel open to be able to explore any field that they feel interested in without having the restriction of feeling inadequate. And we also know that this is a clear misconception. It's been debunked by several research studies. And of course, the experiences of countless professionals applying computational resources to traditionally non-computing industries. My audience out here knows this. So one final factor is that to build a full scale computer science curriculum, schools must invest in communications and technology, ICT infrastructure for both educators and students. This tends to be very restrictive for particularly lower income areas. But there are innovative approaches that are attempting to deal with this. So there are groups that are donating computing resources to schools, whether that be subscriptions to things like code.org platforms or other IDEs. And there's also a power free sort of computer science education that's arising where instead of having computers, students without the access to these resources have board games and a paper resources that teach computational thinking, but full scale implementation definitely requires greater ICT infrastructure. So within the Python community, we largely concur with the industry trend towards expansion of computer science education. Python is the number one language in higher computer science education today. Some factors motivating that include its simpler syntax, which makes it easier to learn primarily for beginners. It's a very active community and it's high relevance that are certainly boosting this usage. We also have Python community members sitting on advocacy groups, such as the code.org advocacy coalition. The association for computing machinery has several policy committees. And these individuals are calling attention to some of these educational problems and attempting to guide policy changes. And I think most importantly, Python advancements are inspiring students to take up a computer science education. To the members of the Python community, the bare minimum that you can do to help out is to keep doing what you're doing. Keep building awesome projects that inspire students. So now I wanted to get into a specific sub problem which is interdisciplinary computer science education. What exactly does that mean? So we're defining interdisciplinary computer science education as the integration of programming, computational thinking, computer science foundations and so on into traditional non-computing courses. You may also see the term come up as cross-curricular coursework as with the report from the Brookings Institution. So interdisciplinary coursework is certainly not a new concept in education. For example, students in an English class and for standardized English exams are expected to understand, produce and even analyze data visualizations. At the same time, math students learn to communicate their work formally in language. At lower levels, that may be simply a word problem, interpreting a word problem or understanding how to explain their thinking for an answer. But as we go further, research is a language that we communicate via, we communicate research via written language generally. That's the primary mode that we come out with new breakthroughs. So math students need to learn how to use English skills. And at the same time, English students are learning math skills. So this is the epitome of interdisciplinary coursework. And this may prompt another question. Do these other fields simply connect more naturally? And it's a complex answer. So in general, it makes more sense to integrate computer science into STEM coursework for obvious reasons such as, you know, greater focus on quantitative tasks. And it also never makes sense to pigeonhole CS into another discipline where it's in fact counterproductive. That's not our goal here. So what we have to conclude is that math and English are well connected. But so are, say, computer science and math or computer science and physics. So as long as we can find that valuable connection, it's a direction that's worth exploring. And we hope that down the road, we can start finding connections as both fields evolve between English and computer science and other humanities subjects in computer science enough so that we can teach it generally in a secondary school setting before students go on to specialize in universities. So now let's evaluate the general need for computer science, interdisciplinary computer science coursework. So first of all, technology is more and more integrated into careers today. And that's beyond STEM careers. So for example, lawyers today may be required to learn more data analysis skills. So that way they can better inform their work. And this is right up the alley of Python and data science and ultimately greater computer science education. Also, we have to stress the stigma, the sustained fall stigma that computer science education is only for higher performing students. This has made it so that many even fail to consider that computer science can be integrated into other coursework. And this stigma is certainly a priority. Ultimately, the conclusion is that the isolation of computer science education from other courses is to the detriment of learners and the fields that they pursue. So now what we want to do is propose a Python-based approach for introducing interdisciplinary coursework. So first, we have to answer the question, why Python? Why does Python make it less intimidating for users? Additionally, libraries and frameworks in a wide range of disciplines such as biology, physics and math, as well as languages as well, allow for deep connections to Python which is a necessity for studying domain specific problems through computing. And once again the awesome Python community as well as support for the language coupled with its growing relevance in job markets and careers to make learning Python a very valuable and future-proof skill. So through a set of case studies we're going to study Python-based interdisciplinary coursework. So we're unveiling those results here at EuroPython. So first, let's set some general rules for future implementations of such courses and some assumptions that we're making in our case study. So first of all we're going to be focusing on STEM coursework for reasons outlined previously. There's simply a greater connection to computing in the traditional sense between math and physics that we can find in between computer science and math and physics for example in comparison to computer science and the arts where it takes a greater level of knowledge and more specificity to this connection. So for now we're going to be focusing on STEM careers but it's always the goal to find more connections from CS to other coursework. And we're also going to continue our focus at the secondary school level at this point and we're making the assumption that when these courses are implemented and during our case studies the instructor is appropriately trained in computer science skills such as a professional development program a university contact or new professors who are capable or hired or at least our hope is that a capable instructor is brought in as needed to cover computer science content. So for example in a biology course perhaps once every unit or twice every unit you have a computer science instructor come in who understands the material and drive a connection between biology and computer science and we're also setting the expectation that students take prerequisite Python fundamentals course to have some CS background. So it's still imperative that other efforts to increase computer science education continue because we believe that finding, forging interdisciplinary coursework at the fullest level really requires a better knowledge of a better knowledge of the domain specific problems. So we're still urging that computer science education efforts continue and we're introducing this interdisciplinary idea in conjunction so that we can start thinking about how to expand accessibility. And in our case studies we're really testing for engagement as well as comprehension and value. We're hoping to expand our studies as well to understand how students respond to being tasked with crafting code on their own. But now we're going to be evaluating how students understand and respond to a Python based lecture. So that's what we did in our two studies. Sorry about that. So here is our approach. First we are during an instructional block going to give students a domain oriented computer science demonstration. For example, in a biology class we give a talk on DNA sequencing and then get into discussion on how we can maybe accomplish that goal through Python. Next and most importantly we're going to gauge reception and feedback with a survey. So what's important to note here is that these studies were conducted on a very small scale and likely embed a high degree of bias. So no statistically significant conclusions should be made from the data. Instead, we're hoping that we can motivate future studies and greater discourse over this issue. So for our survey questions we really attempt to understand how the student is responding to a computer science education. We're also going to ensure that the surveys are anonymous so that way we can boost honest reporting since the quality of this study is really contingent upon students giving truthful responses. So some questions we asked are rather general. So for example do you have prior programming experience? Are students coming in with knowledge necessary to understand some computer science examples at a deeper level? And another question have you learned Python before? Because our course work was based around Python this is a question that we thought was important but during the case studies we tried to take it so that it was less restrictive where we went into much greater detail on some of the implementations. We were also asking if students were able to follow along with the Python demonstration a simple yes or no answer and we're hoping that students reported honestly and we're glad to say that we think that many did. And the next two questions we have students actually expanding upon their answers. So the first one is do you believe the demonstration expanded your understanding of the material? After the students answer a yes or a no they're required to give an explanation. The reason for this is so that we can audit the extent to which the students are actually understanding the lecture. So for example if a student indicated no I don't believe I understood much of the demonstration but in their explanation of their answer they're indicating keywords that are pointing at that maybe they did we can make note of that. And the other way around works as well where a student can indicate that they did understand the lecture but taking a look at their response that is perhaps questionable. These are just things that we can make note of to understand the qualitative response to for students. And the next question would you benefit from greater integration of Python into this course? A simple yes or no answer but we also want to see what exactly we're missing whether our motivations match the student reception. So our first case study was on a problem in orbital mechanics known as a three body problem. So we went into a college level mechanics course and introduced computer science concepts. So the three body problem is a chaotic system of three masses that exert a radial force on each other. I think the GIF is doing a pretty good job showing you that that behavior is chaotic but it's called chaotic because there's a high degree of sensitivity on initial conditions. So that means that if we were to change one of the masses of one of the masses of those three bodies we'd have a drastically different system behavior. And importantly the scenario has no explicit general solution. So we have to simulate its behavior via numerical integration methods. And here's the format for that physics lesson. So first we're giving students a lecture on the three body problem including a derivation. After that we're showing students a Python simulation of the three body case. So we use Rungakuta approximation methods to develop a simulation in Python and we're showcasing that to students and some students indicated that they thought of it as a complex calculator and we're glad that students are able to make connections like that. We then encourage the students to change values in the simulation to indicate behavior. Why is this chaotic? What happens if you change the mass from 50,000 kilograms to 100,000 kilograms students were able to see how that was different. And after that we give them a detailed discussion on the code for the simulation including descriptions of the Rungakuta algorithm and how we implemented that in Python and also some discussion on implementation as well, how we're using libraries and defining some key terms that students who either weren't familiar with computer science or weren't familiar with Python would benefit from. And here are results. So we surveyed 21 students in this physics class. A vast majority of students had prior programming experience. Upon further investigation we found that many had taken a Java based computer science foundations course before. However, only a handful of students had experience with Python. We're actually surprised by the numbers since several indicated that they had done independent work in Python to learn which we're happy about. However, we're glad that most students, regardless of their Python experience and their computer science experience indicated that they were able to follow along with the demonstration, which is certainly a plus. Many also went further to state that they believed that they would benefit from greater integration of Python into this course and we'll look at some rationales later. And overwhelmingly every single student indicated that their comprehension of domain specific material was enhanced by the computing demonstration. Once again, this data is not necessarily statistically significant. For example, we have to take into consideration the fact that these are higher performing advanced placement students and it's very possible that they were predisposed to better understand. But we think that these results are promising and should motivate further study. So the next case that we took a look at is in a calculus course. So this is very similar where instead of a three-body problem, we discussed Runge-Kutta approximation methods which are numerical approximation methods for generally unsolvable differential equations. And we gave examples in ecology and physics. So the plot on the left is a plot of the predator prey or Latka-Volterra model. And this illustrates the relationship between species in environment predator, let's say a lynx and a prey, it's a hare. And we're also going to take a look at the double pendulum, which is another chaotic system very similar to the three-body problem exhibiting a high sensitivity to initial conditions. And once again, the method that we took is very similar where we're giving students a lecture showing them a simulation. In this case it's of the Latka-Volterra model and the double pendulum. Then we're encouraging students to change values in the simulation to investigate the behavior and we're giving them a description of the implementation. And the results are similar. So we had 24 students surveyed and there certainly is a greater balance between students with or without programming experience and this is exciting because then we can understand how even without prior knowledge students are performing. And accordingly there's also a smaller proportion with a prior exposure to Python. However, we're glad that many still indicated that they were able to follow along with the demonstration. And there are more students in the right graph indicated that they wouldn't benefit from Python expansion into the course. And we'll look at some specific responses as to why. But most excitingly a majority continued to indicate that the demonstration improved their comprehension of the material presented. The hands-on experience with Rungakuta approximation methods. So here are some responses. Many indicated that they were very interested and one was stated that they were afraid that the demos would take time away from preparing for examinations and that's certainly an important consideration. In terms of action advocacy groups and institutions are identifying several important goals for secondary level computer science education. And you can take a quick look through those. We are advocating for a new competency which is exploring computer science connections to other fields and some may indicate that this idea is embedded into other competencies but with the field in its infancy we think it's essential that such goals be explicitly communicated so that appropriate action can be taken. We'd also like to encourage community members to join policy committees and directly advocate for changes. You can also reach out to local leadership and bring light to important issues. Many community members are well-equipped to develop free accessible educational content on interdisciplinary computing. So just post on YouTube something that you do in your work and you'd like to share with students. But the best thing that you can do to continue using Python to forge is to continue using Python to forge groundbreaking projects that revitalize industries and tackle tomorrow's problems. So thank you all very much. Here is my contact information. You can reach out on venue list if you have any questions. Thank you all. Thank you, Srivatsa. We're just a little bit ahead of time which is great. We started a couple of minutes early so thank you for being ready. Does anybody here have any questions they'd like to ask? Great. There's a mic just here. Very much for that talk, thought-provoking. I just wonder, do you make use in the teaching of Python, do you use Jupyter Notebook and if you do do you use other tools as well as Jupyter Notebook? Yes, so we primarily focus in our demonstrations with Jupyter Notebook and obviously we like the markdown features where we can have when we share these notebooks with students they have a talk-through or a description of what's going on and we like that feature. So the focus, I think in education Jupyter Notebooks are amazing for that. Yeah, they're fantastic, aren't they? And then one final comment. Initially you were saying maths with science and technology later on, maths with English. Don't you think that Worddle is one of the best examples we ever have of learning English knowledge with maths knowledge? Probability? It's incredible. It's such a simple little thing. If you think it's an English thing it's really a maths thing. Oh yeah, that's a great point. I watched some videos on that and it was really fascinating how you can absolutely use probability and maths to approach a word game and I think that's cool and connections like that with other community members is absolutely what we're looking for. So thank you for that. Yeah, thanks. Hi, thanks for inspiring me to talk and I would like to ask you were touching about the social stigmas connected to the teaching of computer science especially like being perceived as a smart person and I was wondering like did you explore some specific ways how to overcome these issues? So not as part of this project but some of the research that we've looked at has really stated that some changes in terms of education itself where starting from the primary school level where students are on more of a level playing field is important to sort of break down that stigma. So for example people indicate that I'm a maths person or I'm an English person and that's inevitable that that evolves but people still do math in English and we're kind of looking for the same here. We think computer science should be part of the core curriculum right down there with a language course and a math course and a science course. So breaking down that stigma should start from the earliest levels of education we think. Okay, thank you. Thank you very much for that talk. Thank you. So as someone outside of really math and physics but still in STEM do you have any recommendations for resources to start integrating coding in Python into the curriculum or even into my own classes? Well so I know that there's several so you're a teacher at a certain school, what level of schooling? I work at a university in town so university level education in ostensibly first science. Yeah I mean there's university level I actually really enjoy using MIT OpenCourseWare for things like that where it's at a higher level and the resources are better suited for you know sort of like higher level students I believe MIT's computational thinking course is actually a great start specifically for students you know who aren't necessarily STEM. So I definitely start there. And another place you could look is there's several groups like I think Rappel.it and other sort of organizations that are teaching very introductory level skills but because you're at the university level I really would recommend MIT OpenCourseWare for that. Thank you. Hi on the subject of social stigma I'm a school teacher and I struggle with the gender bias in computing and trying to get more girls involved. Have you got any findings or recommendations for sort of projects which might be particularly interesting to girls as well as boys? Yeah so unfortunately you know we did come across that a lot where underrepresented minorities and girls struggled to get into computing and that wasn't the focus of this project where we were more focused on interdisciplinary computing but I think that just a personal note from experience is encouragement really does help where you know ensuring that like they know that they're being helped and also preaching the importance of everyone ensuring that they're not bringing anyone else down so boys not saying things that could discourage girls but again I think that starting at earlier levels really does help with this where students are sort of less pigeonholed into different stigma around computing and they can start out with computer science coursework and if they're interested then they can delve deeper so not sure if that exactly answers your question that wasn't the exact focus but I hope it's the direction you can take. Thank you so much for your questions guys. Do we have any remote questions? I know we didn't. No we don't. Guys thank you so much for coming today and a final round of applause please for that second Dorothy. Thank you.