About languages and IDEs

I have recently started coding small snippets in Pydroid. I call it “pocket coding” and given below are some of my recent programs written on it. Something about the simplicity of just being able to open your phone, creating a new file and punching in some code to test out an idea, or solve a coding challenge, or practice a construct seems appealing to me. IDEs, like languages in some ways, can be about user choice. I was just reading this blog post that touches upon some key issues with IDE choice in teaching/learning computing. Be it Visual Studio, Eclipse or IDLE, every platform has features that engage different kinds of learners/users. But in a classroom setting simplicity must be a constant priority. For a student starting out in programming, the IDE and the language become synonymous over time. Struggling with the IDE, hence, can come to mean the language is a challenge too.

With so many cloud based platforms today for a wide range of languages, it takes some effort to ensure the right environment is being used for the classroom. For Java, as an example. I have enjoyed using JCreator just because of its simplicity. Create the source files, compile, execute, debug…done. Compared to IntelliJ, Eclipse or NetBeans, JCreator feels lighter with a smaller learning curve. One of the reasons Python has taken off as the language of choice for beginners is because of its elegant and simple syntax. So to introduce something like Python within a complex and layered IDE can make beginners start associating the language with the IDE.

IDEs are powerful when it comes to directing classroom pedagogy so having the right one matters. But at the same time, I wonder if the one-size-fits-all approach we fight so much against (rightfully) in education should be applied to IDEs too? What challenges would it pose for a learning environment if students were given a choice of, say, two or three IDEs that they could test out before choosing the one that works for them? Would that impact the class dynamic or interfere with the learning? How would the interactive features in each IDE impact the experience for the learner? Would the classroom, in time, sway towards one of the IDEs because the choice is no longer teacher directed?

I know of students who came into the CS program with set IDEs they were comfortable with and wanted to use from their previous experience. Fair enough. But this was a challenge as I navigated simpler, sometimes cheaper (free!), versions of other IDEs for students who were just starting out. Managing this balance between the two environments took time and careful monitoring.

The good news though is that having different options of writing and sharing code has the potential to create a more dynamic coding and learning environment. But it depends on the nature of the course and what the scaffolding of it looks like. I hope to revisit this idea some more in the future.

So, these are some of the screens for the “pocket codes” I wrote recently. As you can see the interface is basically an editor with a giant PLAY button (not included in the screenshots). Running it on the console displays the errors as it finds them. This can become a hassle once the code length grows. For now I have intentionally kept the code examples short just to see how far I can take it.